用戶級(jí)文件系統(tǒng)的實(shí)現(xiàn)(Ubuntu 18.04.2&&Fuse3.3.0)

操作系統(tǒng)課程設(shè)計(jì):

參考鏈接:

基于FUSE框架的文件系統(tǒng)-課程設(shè)計(jì) - 南國(guó)的博客 - CSDN博客

libfuse的配置以及使用_慕課手記

GitHub - libfuse/libfuse: The reference implementation of the Linux FUSE (Filesystem in Userspace) interface

過(guò)程簡(jiǎn)介:

1.在VMware中最小化安裝Ubuntu18.04.2虛擬機(jī),配置需要的應(yīng)用軟件仗哨。

2.安裝Fuse3.3.0文件系統(tǒng)的框架担锤。

3.創(chuàng)建一個(gè)二進(jìn)制文件為磁盤。

4.初始化磁盤。

5.實(shí)現(xiàn)各函數(shù)接口的功能羡微。

6.編寫meson.build(相當(dāng)于makefile)文件夕春。

7.測(cè)試。

過(guò)程:

第一步:配置Ubuntu虛擬機(jī)荧降,以下配置需要的軟件接箫。

下載安裝軟件。

$ sudo apt-get install?git gcc vim lrzsz openssh-server meson pkg-config makeunity-tweak-tool libtool m4 autoconf?

繼續(xù)朵诫,需要下載安裝一段時(shí)間辛友。


安裝各種軟件完成。

第二步剪返,安裝fuse文件系統(tǒng)框架废累。

2.1 github上下載fuse壓縮包。

$ wget https://github.com/libfuse/libfuse/archive/fuse-3.3.0.tar.gz

2.2 解壓fuse-3.3.0.tar.gz脱盲。

$ tar -xvf fuse-3.3.0.tar.gz


2.3 參考官方github上的指示配置邑滨。

$ cd libfuse-fuse-3.3.0

$ mkdir build

$ cd build

$ meson ..


2.4 安裝pip3以安裝pytest。

$ sudo apt-get install python3-pip

$ pip3 install pytest --user



安裝pip3
安裝pytest


Done

2.5 安裝libfuse钱反。

"To build,test and install libfuse, use Ninja(Running the tests requires the pytest python module.)"

$ ninja

$ sudo python3 -m pytest test/

$ sudo ninja install


進(jìn)行中……
遇到error掖看,需要解決,如下面哥。

由于碰到error,上網(wǎng)查資料哎壳,根據(jù)官方開發(fā)人員與用戶的討論,得到解決方法幢竹。

鏈接:Init script is installed in /usr/local/etc, not /etc · Issue #178 · libfuse/libfuse · GitHub

$ sudo mv /usr/local/etc/init.d/fuse3 /etc/init.d

再回來(lái)耳峦,輸入sudo ninja install,不報(bào)錯(cuò)焕毫,只有warning可接受蹲坷。

$ sudo ninja install

2.6 編輯/etc/ld.so.conf驶乾,include?

$ sudo vim /etc/ld.so.conf

(按a進(jìn)入編輯模式)

在最后追加一行:include?/usr/local/lib/x86_64-linux-gnu)

按ESC,輸入:wq 以退出


進(jìn)入編輯循签。


返回成功级乐。

2.7?

$ sudo ldconfig -v

(此處作用參考鏈接:linux中l(wèi)dconfig的使用介紹 - chenzixun0的專欄 - CSDN博客)

輸出


可見(jiàn)非常龐大的輸出。

2.8 嘗試簡(jiǎn)單測(cè)試县匠。

$ cd libfuse-fuse-3.3.0/build/example?

$ mkdir mytestmount

$ ./hello mytestmount

$ cat mytestmount/hello

$ fusermount -u mytestmount? //取消掛載 unmount,結(jié)束使用或者修改程序前需要做

第三步风科,創(chuàng)建一個(gè)二進(jìn)制文件作為磁盤。

這里展示方法乞旦,另開了一個(gè)位置的工作目錄贼穆。

輸入命令

$ dd bs=1K count=5K if=/dev/zero of=testdisk




done

第四步,初始化這個(gè)磁盤兰粉。

專門寫一份程序故痊,用于初始化磁盤鏡像(image)。


第五步玖姑,編寫接口函數(shù)愕秫。

相比較于fuse2版本的函數(shù)的編寫,需要注意:

1.需要在include頭文件前就加上或者改成#define FUSE_USE_VERSION 31

否則會(huì)經(jīng)由fuse_common.h報(bào)一個(gè)錯(cuò)焰络。

2. filler(buf, ".", NULL, 0, 0);? 替代了?filler(buf, ".", NULL, 0);

否則會(huì)報(bào)參數(shù)過(guò)少的error戴甩。

寫完后,把.c和.h的文件都放到fuse/example下闪彼。

第六步,meson.build(相當(dāng)于makefile)的編寫甜孤。

很簡(jiǎn)單:

打開example/meson.build,將文件名追加到第一行examples數(shù)組中备蚓。如圖课蔬。


改了meson.build,就可以按前面的辦法編譯:

從在libfuse-fuse-3.3.0目錄下mkdir build開始做到sudo ninja install郊尝。

第七步二跋,測(cè)試。

測(cè)試流程:

1.在某個(gè)目錄下流昏,創(chuàng)建一個(gè)文件作為磁盤鏡像扎即。

2.初始化磁盤。


3.創(chuàng)建文件夾况凉,掛載文件系統(tǒng)谚鄙,同時(shí)開啟調(diào)試模式。


4.另開一個(gè)終端刁绒,輸入測(cè)試的命令闷营,完成后卸載掛載點(diǎn)。


5.再次另開一個(gè)掛載點(diǎn)測(cè)試,如果文件存在傻盟,就是文件系統(tǒng)實(shí)現(xiàn)速蕊。

這里的測(cè)試過(guò)程比較艱辛,我重開了虛擬機(jī)好幾次娘赴。最后成功了规哲,我才明白,前面第一個(gè)掛載點(diǎn)的目錄或者文件刪了诽表,自然后面另開掛載點(diǎn)就沒(méi)了唉锌,之前看參考文檔的那個(gè)博主說(shuō)還以為刪了也還在,后來(lái)才明白刪了就沒(méi)了竿奏,沒(méi)刪的話應(yīng)該是寫在了磁盤里了袄简,所以可以在別的掛載點(diǎn)上繼續(xù)看到。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末议双,一起剝皮案震驚了整個(gè)濱河市痘番,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌平痰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伍纫,死亡現(xiàn)場(chǎng)離奇詭異宗雇,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)莹规,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門赔蒲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人良漱,你說(shuō)我怎么就攤上這事舞虱。” “怎么了母市?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵矾兜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我患久,道長(zhǎng)椅寺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任蒋失,我火速辦了婚禮返帕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篙挽。我一直安慰自己荆萤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布铣卡。 她就那樣靜靜地躺著链韭,像睡著了一般邑闲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梧油,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天苫耸,我揣著相機(jī)與錄音,去河邊找鬼儡陨。 笑死褪子,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的骗村。 我是一名探鬼主播嫌褪,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼胚股!你這毒婦竟也來(lái)了笼痛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤琅拌,失蹤者是張志新(化名)和其女友劉穎缨伊,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體进宝,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刻坊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了党晋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谭胚。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖未玻,靈堂內(nèi)的尸體忽然破棺而出灾而,到底是詐尸還是另有隱情,我是刑警寧澤扳剿,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布旁趟,位于F島的核電站,受9級(jí)特大地震影響舞终,放射性物質(zhì)發(fā)生泄漏轻庆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一敛劝、第九天 我趴在偏房一處隱蔽的房頂上張望余爆。 院中可真熱鬧,春花似錦夸盟、人聲如沸蛾方。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)桩砰。三九已至拓春,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亚隅,已是汗流浹背硼莽。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煮纵,地道東北人懂鸵。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像行疏,于是被迫代替她去往敵國(guó)和親匆光。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 目錄 安裝/升級(jí)cmake 安裝Ninja 安裝libffi和Python2.7.13 安裝Clang和LLVM ...
    freenik閱讀 11,474評(píng)論 2 9
  • 一酿联、文件/文件夾管理 ls 列出當(dāng)前目錄文件(不包括隱含文件) ls -a 列出當(dāng)前目錄文件(包括隱含文件) ls...
    會(huì)飛的魚Coo閱讀 4,478評(píng)論 1 23
  • 洗澡對(duì)別人來(lái)說(shuō)可能是一種享受终息,可對(duì)當(dāng)兵的來(lái)說(shuō)有時(shí)就是一種“受罪”。 一個(gè)連隊(duì)贞让、一個(gè)培訓(xùn)班周崭、一個(gè)軍校,官兵那么多震桶,澡...
    3a04d4c8f8b6閱讀 409評(píng)論 4 9
  • 我的想法是這樣的休傍,在瓶子里鋪上適量的土和嫩嫩的青草,然后再找到一個(gè)小王子以及他所住的星球的這樣一個(gè)非常精美的玩具蹲姐,...
    宋綱閱讀 161評(píng)論 0 0
  • 我和他認(rèn)識(shí)的方式好普通啊。 加了他的微信問(wèn)他 “大哥人柿,在嗎柴墩?” “我的充電器數(shù)據(jù)線是不是被你拿走了” 他回復(fù)我 “...
    迷離徹底閱讀 64評(píng)論 0 0