歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> Linux下mount FreeBSD分區

Linux下mount FreeBSD分區

日期:2017/2/28 14:25:45   编辑:BSD

如果需要從第二塊硬盤拷貝文件,該硬盤格式化為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分區名稱。

驗證UFS分區支持

為了檢查你的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驅動沒有編譯到內核或作為模塊安裝。

安裝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 ...

掛載UFS硬盤

依賴於你的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

Copyright © Linux教程網 All Rights Reserved