Linux mount BSD disk partition

来源 https://www.cnblogs.com/jhcelue/p/6858159.html

假设须要从第二块硬盘复制文件。该硬盘格式化为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

第一行的keywordnodev含义是文件系统不须要挂载一个块设备,这是为什么也称为虚拟文件系统的原因。支持也被编译到内核中或者作为一个单独的模块。

检查是否安装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

编辑 /etc/fstab

为了开机自己主动挂载。须要加入以下两行到/etc/fstab文件里:

/dev/hda8       /mnt/freebsd     ufs    ufstype=ufs2,ro        0       2

/dev/hda10      /mnt/netbsd      ufs    ufstype=44bsd,ro       0       2

如今你能挂载FFS分区,输入:

# mount /mnt/freebsd

# mount /mnt/netbsd

而且使用以下命令验证:

$ mount

[...]

/dev/hda8 on/mnt/freebsd type ufs (ro,ufstype=ufs2)

/dev/hda10 on/mnt/netbsd type ufs (ro,ufstype=44bsd)

[...]

写入支持

满足几个条件下能够支持写:

-         在Linux内核中编译选项支持写入,缺省禁用的(CONFIG_UFS_FS_WRITE=y)

-         FFSV1文件系统(FFSv1)(FFSV2不支持)

请注意:普通情况下你不须要在NetBSD分区上写入。因此不要又一次编译内核和測试该特性。

附注

1.假设你忘记ro选项。你可能在dmesg中获得例如以下消息:

$ dmesg | grep ufs

ufs was compiled with read-only support,can't be mounted as read-write

2.假设你忘记设置ufstype选项,你可能在dmesg中获得以下的消息:

$ dmesg | grep ufstype

mount -t ufs -oufstype=sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...

WARNING<<< Wrong ufstype maycorrupt your filesystem, default is ufstype=old

3.卸载分区的命令:umount /mnt

# mount -t ufs -r -o ufstype=ufs2 /dev/sdb3 /mnt/sdb3

mount: wrong fstype, bad option, bad superblock on /dev/sdb3,

missing codepage or helper program, orother error

In some cases useful info is found insyslog - try

dmesg | tail  or so

#dmesg | tail

[1279.960537] ufs_read_super: bad magic number

# mount -t ufs -r -o ufstype=44bsd /dev/sdb2 /mnt/sdb3

4. 查看各个磁盘的分区信息:

root@ubuntu:~# file -Ls /dev/sdb1

/dev/sdb1: x86 boot sector; partition 4:ID=0xa5, active, starthead 0, startsector 0, 50000 sectors, code offset 0x3c,BSD disklabel   无法挂载

root@ubuntu:~# file -Ls /dev/sdb2

/dev/sdb2: x86 bootsector; partition 4: ID=0xa5, active, starthead 0,startsector 0, 50000 sectors, code offset 0x3c, BSD disklabel   无法挂载

root@ubuntu:~# file -Ls /dev/sdb3               mount -t ufs -r -o ufstype=44bsd

/dev/sdb3: Unix Fast File system [v1](little-endian), last mounted on /cf, last written at Tue Nov 18 19:16:31 2014,clean flag 1, number of blocks 2104515, number of data blocks 2069056, numberof cylinder groups 82, block size 4096, fragment size 512, minimum percentageof free blocks 8, rotational delay 0ms, disk rotational speed 60rps, TIMEoptimization

root@ubuntu:~# file -Ls /dev/sdb4               mount -t ufs -r -o ufstype=ufs2

/dev/sdb4: Unix Fast File system [v2](little-endian) last mounted on /var/log, last written at Tue Nov 18 11:16:432014, clean flag 1, readonly flag 0, number of blocks 4909865, number of datablocks 4753848, number of cylinder groups 31, block size 32768, fragment size4096, average file size 16384, average number of files in dir 64, pendingblocks to free 0, pending inodes to free 0, system-wide uuid 0, minimumpercentage of free blocks 8, TIME optimization

========================= End

Linux mount BSD disk partition的更多相关文章

  1. Linux qemu-nbd mount qemu disk image

    Linux qemu-nbd mount qemu disk image deepin@deepin:~$ deepin@deepin:~$ qemu-nbd --help Usage: qemu-n ...

  2. How to mount remote windows partition (windows share) under Linux

    http://www.cyberciti.biz/tips/how-to-mount-remote-windows-partition-windows-share-under-linux.html  ...

  3. From Disk partition to PostgreSQL installation

    From Disk partition to PostgreSQLinstallation [root@compute mnt]# fdisk /dev/sdb Welcome to fdisk (u ...

  4. Linux mount 命令进阶

    笔者在<Linux mount 命令>一文中介绍了 mount 命令的基本用法,本文我们接着介绍 mount 命令的一些高级用法,比如 bind mounts(绑定挂载)和 shared ...

  5. linux mount / umount 命令的基本用法 及 开机自动挂载

    格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a 安装在/etc/fstab文件中类出的所有文件系统. -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文 ...

  6. Linux Backup: Hard Disk Clone with "dd"

      Most of Windows users may know "Norton Ghost". Norton Ghost is a backup software for har ...

  7. Linux mount挂载磁盘报错 mount: wrong fs type, bad option, bad superblock on /dev/vdb

    Linux mount挂载磁盘报错  mount: wrong fs type, bad option, bad superblock on /dev/vdb Linux挂载磁盘报如下错误: moun ...

  8. 【转载】Linux 与 BSD 有什么不同?

    原创:Linux中国 https://linux.cn/article-3186-1.html 原创:LCTT https://linux.cn/article-3186-1.html 本文地址:ht ...

  9. linux mount命令参数及用法详解

    linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...

随机推荐

  1. Jenkins-job之间依赖关系配置

    使用场景: 想要在某APP打新包之后,立即执行自动化测试的job来验证该新包. 比如Job A 执行完执行Job B ,如下图所示,如何建立依赖呢? 1.配置上游依赖 构建触发器-配置如下信息: 选择 ...

  2. webpack之loader和plugin简介

    webpack之loader和plugin简介 webpack入门和实战(二):全面理解和运用loader和plugins webpack入门(四)——webpack loader 和plugin w ...

  3. scrapy之持久化存储

    scrapy之持久化存储 scrapy持久化存储一般有三种,分别是基于终端指令保存到磁盘本地,存储到MySQL,以及存储到Redis. 基于终端指令的持久化存储 scrapy crawl xxoo - ...

  4. 什么是IaaS, PaaS和SaaS及其区别

    IaaS, PaaS和SaaS是云计算的三种服务模式. . SaaS:Software-as-a-Service(软件即服务)提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设 ...

  5. 转:Linux(Centos)之安装Nginx及注意事项

    1.Nginx的简单说明 a.  Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,期初开发的目的就是为了代理电子邮件服务器室友:Igor Sysoev开发 ...

  6. Python3练习题 001:4个数字求不重复的3位数

    #Python练习题 001:4个数字求不重复的3位数#方法一import itertoolsres = [][res.append(i[0]*100 + i[1]*10 + i[2]) for i ...

  7. [转帖]cmd批处理常用符号详解

    cmd批处理常用符号详解 https://www.jb51.net/article/32866.htm 很多符号 还是不清楚的.. 批处理能够极大的提高 工作效率 需要加强深入学习.   1.@一般在 ...

  8. IIS 使用 HTTP重定向 修改 默认主页

    1. 被自己坑死了 多了一个 正斜杠 浪费了好长好长的时间 2. 需求 直接输入ip地址 总是 弹出来 iis 的 welcome的界面 感觉很low 想要修改一下 曾经用过 reflesh 来修改过 ...

  9. js怎么能取得多选下拉框选中的多个值?

    方法:获取多选下拉框对象数组→循环判断option选项的selected属性(true为选中,false为未选中)→使用value属性取出选中项的值.实例演示如下: 1.HTML结构 1 2 3 4 ...

  10. 使用npm安装一些包失败了,更换npm源

    镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 1.通过config命令 npm config set registry https://regist ...