拜ntfs-3g所賜, 我們已經可以在Linux上掛載ntfs的檔案系統, 進行資料的讀寫動作. 雖然Linux系統UI已經做得很好, 只要用滑鼠點一下ntfs partition就會自動幫我們掛載到系統上, 可是總覺得如果可以如其他的ext3 partition一樣, 在開機後就自動掛載那不是更完美嗎? 既然有這個想法, 就要想辦法解決一下. 其實很簡單, 還是一樣利用/etc/fstab就可以輕鬆達到.
首先, 找出ntfs partition的UUID, 方法可以參考取得partition的UUID
再來就是編輯/etc/fstab這個檔案, 在檔案中加上
UUID=ntfs_partition_uuid mount_point ntfs-3g defaults 0 2
這樣就可以了.
例如: 我們的ntfs partition的uuid如果是4C54A5A254A58EF0, 並且要將該partition掛載到/media/VAIO目錄中
$ sudo mkdir /media/VAIO
$ sudo echo "UUID=4C54A5A254A58EF0 /media/VAIO ntfs-3g defaults 0 2" >> /etc/fstab
$ sudo mount -a
星期二, 3月 25, 2008
利用valgrind對用fuse所出的檔案系統進行memory leak除錯
如之前的文章說過,valgrind可以幫助程式設計者快速找出程式中會造成memory leak的部分。但是,如果你用fuse來進行user-level的檔案系統開發,並想利用valgrind來找出程式中memory leak的部分,馬上你就會發現一個問題,就是程式跑一下子後就會自動結束了。這時候你應該會看到螢幕上出現以下的錯誤訊息:
其實這不算是個錯誤,造成這個現象的主要原因是fuse的runtime librry會呼叫mount,進行檔案系統掛載的動作。但是因為mount這支程式本身是privileged program,必須要有root權限才可以執行此程式進行檔案系統掛載的動作,因此才會出現上面錯誤。
chmod -s /bin/mount
當然,將mount的setuid bit取消掉會造成系統安全有疑慮。不過,也沒關係啦,只要記得在進行完debug的動作後,恢復mount程式的權限就可以了。
FUSE (Filesystem in Userspace)
這裡所指的FUSE是Filesystem in Userspace,可不是保險絲。
一般來說,檔案系統的開發是需要寫kernel-level module的,但是kernel-level programming比較困難,不容易debug,而且只要一不小心很可能會造成整個系統當機。FUSE則是用來解決這個問題的一個Linux kernel標準module。
一般來說,檔案系統的開發是需要寫kernel-level module的,但是kernel-level programming比較困難,不容易debug,而且只要一不小心很可能會造成整個系統當機。FUSE則是用來解決這個問題的一個Linux kernel標準module。
星期一, 4月 30, 2007
如何讓一般使用者也可以利用fuse掛載檔案系統
由於有越來越多的file system是以fuse來完成,
以root的權限,完成下列幾個步驟:
如果user要umount檔案系統,因為其不具有root的權限,所以無法執行umount,同樣需利用fuse所提供的fusermount這個utility來執行卸載的動作。也就是執行
/usr/bin/fusermount -u mount_point
以root的權限,完成下列幾個步驟:
- chmod 4755 /usr/bin/fusermount
- /sbin/modprobe fuse
- chmod o+rw /dev/fuse
如果user要umount檔案系統,因為其不具有root的權限,所以無法執行umount,同樣需利用fuse所提供的fusermount這個utility來執行卸載的動作。也就是執行
/usr/bin/fusermount -u mount_point
訂閱:
文章 (Atom)