Linux mount BSD disk partition
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的更多相关文章
- Linux qemu-nbd mount qemu disk image
Linux qemu-nbd mount qemu disk image deepin@deepin:~$ deepin@deepin:~$ qemu-nbd --help Usage: qemu-n ...
- 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 ...
- From Disk partition to PostgreSQL installation
From Disk partition to PostgreSQLinstallation [root@compute mnt]# fdisk /dev/sdb Welcome to fdisk (u ...
- Linux mount 命令进阶
笔者在<Linux mount 命令>一文中介绍了 mount 命令的基本用法,本文我们接着介绍 mount 命令的一些高级用法,比如 bind mounts(绑定挂载)和 shared ...
- linux mount / umount 命令的基本用法 及 开机自动挂载
格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a 安装在/etc/fstab文件中类出的所有文件系统. -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文 ...
- Linux Backup: Hard Disk Clone with "dd"
Most of Windows users may know "Norton Ghost". Norton Ghost is a backup software for har ...
- 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 ...
- 【转载】Linux 与 BSD 有什么不同?
原创:Linux中国 https://linux.cn/article-3186-1.html 原创:LCTT https://linux.cn/article-3186-1.html 本文地址:ht ...
- linux mount命令参数及用法详解
linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...
随机推荐
- 百度软件开发实习生c++方向面经(一面)
百度2017实习生软件开发(cpp方向) 首先说一下岗位.分为软件开发,开发测试,前端,机器学习数据挖掘,移动开发,据我观察,报的人数来看,软件开发最多,移动开发和开发测试较少.百度前台还准备了吃的喝 ...
- A4纸尺寸 web打印报告
A4纸对应的像素尺寸: <style> @media print { .Noprn{ display:none;} .print-hidden { display: none !impor ...
- Ordering Tasks
链接 [https://vjudge.net/contest/281085#problem/D] 题意 有n个任务,有M个对先后顺序 然你输出最后的完成任务的顺序,有多种可能输出一种即可 分析 裸的拓 ...
- Thrift序列化与反序列化
Thrift序列化与反序列化的实现机制分析 Thrift是如何实现序死化与反序列化的,在IDL文件中,更改IDL文件中的变量序号或者[使用默认序号的情况下,新增变量时,将新增的变量不放在IDL文件的结 ...
- 使用HttpUtils完成Http Basic 认证
调用声网(agora)的远程接口(Restful Api)时,对方需要使用Basic Auth的方式进行认证(需要输入用户名和密码). 一,使用Postman完成基于Basic Auth的Http认证 ...
- vue单页面模板说明文档(3)
Environment Variables Sometimes it is practical to have different config values according to the env ...
- opencv2\flann\matrix.h(69): error C2059: 语法错误:“,”
在提示错误的matrix.h头文件中,修改一下,在free前加上_ ,即FLANN_DEPRECATED void _free() .
- 3 Asking for more information
1 Could you tell me more about your idea? 2 Could I hear more about your idea? 3 Could you expain yo ...
- js中怎么使点击按钮后文本框获得焦点
<html> <head> <script type="text/javascript"> function setFocus() { docu ...
- Laravel设置软删除及其恢复系列操作
软删除及其相关实现 在模型类中要使用SoftDeletestrait并设置$date属性数组 <?php namespace App\Models; use Illuminate\Databas ...