歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> BSD

Linux下mount FreeBSD分區

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