如果需要從第二塊硬盤拷貝文件,該硬盤格式化為UFS 2文件系統,如何mount 由FreeBSD創建的UFS 2文件系統到Ubuntu系統上呢?
UFS文件系統廣泛的使用在不同的操作系統(例如:HP-UX,Sun Solaris)中,包括FreeBSD。下面的語法用於掛載mount UFS 2文件系統:
mount -t ufs -o ufstype=ufs2,ro /dev/sdXY/path/to/mnt/point
每個分區包含一個文件系統存在FreeBSD中,稱為一個Slice。Slice是FreeBSD中的一個術語,通常稱為分區。這是因為FreeBSD具有UNIX的背景,Slice是編號的,從1開始到4。因此你需要使用等同的Linux分區名稱。
為了檢查你的Linux內核是否支持UFS文件系統,你可以執行下面的命令:
$ cat /proc/filesystems
輸出示例:
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cpuset
nodev binfmt_misc
nodev debugfs
nodev securityfs
nodev sockfs
nodev usbfs
nodev pipefs
nodev anon_inodefs
nodev futexfs
nodev tmpfs
nodev inotifyfs
nodev eventpollfs
nodev devpts
ext2
nodev ramfs
nodev hugetlbfs
iso9660
nodev mqueue
ext3
nodev rpc_pipefs
nodev autofs
第一行的關鍵字nodev含義是文件系統不需要掛載一個塊設備,這是為什麼也稱為虛擬文件系統的原因。支持也被編譯到內核中或者作為一個單獨的模塊。
檢查是否安裝ufs驅動的方法:
方法1:# cat /proc/filesystems | grep ufs
方法2:ls -l /lib/modules/`uname -r`/kernel/fs/ufs/ufs.ko
第1中方法無輸出且第2種方法文件不存在表示UFS驅動沒有編譯到內核或作為模塊安裝。
root@ubuntu:~# modprobe ufs
root@ubuntu:~# cat /proc/filesystems| grep ufs
ufs
# modinfo ufs
filename: /lib/modules/3.11.0-14-generic/kernel/fs/ufs/ufs.ko
license: GPL
alias: fs-ufs
srcversion: 961388D4E5A5AA94C372D19
depends:
intree: Y
vermagic: 3.11.0-14-generic SMP mod_unloadmodversions
root@ubuntu:~# uname -r
3.11.0-14-generic
root@ubuntu:~# ll/lib/modules/3.11.0-14-generic/kernel/fs/ufs/ufs.ko
# lsmod | grep ufs
# grep BSD_DISKLABEL /boot/config-`uname -r`
CONFIG_BSD_DISKLABEL=y
# grep UFS /boot/config-`uname-r`
CONFIG_UFS_FS=m
# dmesg |grep bsd
mount -t ufs -oufstype=sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...
依賴於你的FreeBSD的分區類型是UFS1還是UFS2,你需要引用不同的掛載選項。UFS1使用ufstype=44bsd,UFS2使用ufstype=ufs2.
為了發現FFS分區所對應的設備,運行:
# fdisk -l
# sfdisk -l
Disk /dev/hda: 155061 cylinders, 16 heads,63 sectors/track
Warning: extended partition does not startat a cylinder boundary.
DOS and Linux will interpret the contentsdifferently.
Units = cylinders of 516096 bytes, blocksof 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/hda1 * 0+ 34536- 34537- 17406396 7 HPFS/NTFS
end: (c,h,s) expected(1023,15,63) found (1023,254,63)
/dev/hda2 34536+ 134767- 100231- 50516392+ f W95 Ext'd (LBA)
start: (c,h,s) expected(1023,15,63) found (1023,255,63)
end: (c,h,s) expected(1023,15,63) found (1023,254,63)
/dev/hda3 134767+144935- 10169- 5124735 a5 FreeBSD
start:(c,h,s) expected (1023,15,63) found (1023,255,63)
end: (c,h,s) expected (1023,15,63)found (1023,254,63)
/dev/hda4 144935+ 155060 10126- 5103189 a9 NetBSD
start: (c,h,s) expected (1023,15,63) found (1023,255,63)
end:(c,h,s) expected (1023,15,63) found (1023,80,63)
/dev/hda5 34536+ 102366- 67830- 34186288+ 83 Linux
start: (c,h,s) expected(1023,15,63) found (0,1,1)
end: (c,h,s) expected(1023,15,63) found (1023,254,63)
/dev/hda6 102366+ 104294 1929- 971901 82 Linux swap / Solaris
start: (c,h,s) expected(1023,15,63) found (0,1,1)
end: (c,h,s) expected(1023,15,63) found (120,254,63)
/dev/hda7 104295+ 134767- 30473- 15358108+ 83 Linux
start: (c,h,s) expected(1023,15,63) found (0,1,1)
end: (c,h,s) expected(1023,15,63) found (1023,254,63)
/dev/hda8 134767+143910- 9143- 4608000
/dev/hda9 143910+144935- 1026- 516735
/dev/hda10 144935+ 154078- 9143 4608072
/dev/hda11 154078+ 155060 983- 495117
/dev/hda12 0+ 34536- 34537- 17406396
/dev/hda13 34536+ 102366- 67830- 34186288+
/dev/hda14 102366+ 104294 1929- 971901
/dev/hda15 104295+ 144935- 40641- 20482843+
因此,對於FreeBSD(FFSv2),/dev/hda3等價於/dev/ad0s3
NetBSD(FFSv1),/dev/hda4等價於/dev/wd0c。
但是這些設備是整個BSD的Slice(BOIS分區),不是BSD分區。
通過仔細檢查sfdisk的輸出結果,我們發現/dev/hda3包含/dev/hda8和/dev/hda9,/dev/hda4包含/dev/hda10和/dev/hda11。
我們可以推出,對於FreeBSD/dev/hda8等價於/dev/ad0s3a(FreeBSD的根分區),/dev/hda9等價於/dev/ad0s3b(FreeBSD的Swap分區)。
對於NetBSD,/dev/had10等價於/dev/wd0a(NetBSD根分區),/dev/hda11等價於/dev/wd0b(NetBSD的Swap分區)。
因此FreeBSD的根分區位於/dev/hda8,首先創建一個目錄用於mountFFS分區,然後掛載它。
# mkdir/mnt/freebsd
# mount -t ufs-o ro,ufstype=ufs2 /dev/hda8 /mnt/freebsd/
NetBSD的根分區位於/dev/hda10上,首先創建一個掛載FFS分區的目錄,然後掛載它。
# mkdir/mnt/netbsd
# mount -t ufs-o ro,ufstype=44bsd /dev/hda10 /mnt/netbsd/
讓我們浏覽掛載的目錄:
# ls /mnt/*bsd
/mnt/freebsd:
bin cdrom COPYRIGHT dist etc lib media proc root sys usr
boot compat dev entropy home libexec mnt rescue sbin tmp var
/mnt/netbsd:
altroot etc gnome-screensave.core mnt root var
bin GENERIC kern netbsd sbin
boot GENERIC-DIAGNOSTIC lib onetbsd stand
CUSTOM GENERIC-LAPTOP libdata proc tmp
dev GENERIC-NOACPI libexec rescue usr
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-11/109569p2.htm