Annotation of wikisrc/tutorials/how_to_mount_ffs_partition_under_linux.mdwn, revision 1.3
1.2 schmonz 1: **Contents**
2:
3: [[!toc]]
4:
5: # Verify UFS support
6:
7: To check whether your Linux kernel supports the [UFS filesystem](http://en.wikipedia.org/wiki/Unix_File_System) you may execute the following command:
8:
9:
10: $ cat /proc/filesystems
11: nodev sysfs
12: nodev rootfs
13: nodev proc
14: .
15: .
16: .
17: ext3
18: nodev usbfs
19: vfat
20: **ufs**
21:
22:
23: The keyword `nodev` in the first column means that filesystem does not require a block device to be mounted, that's why it is also called [virtual filesystem](http://en.wikipedia.org/wiki/Virtual_file_system). The support is either compiled inside the kernel or as a module:
24:
25: $ ls -l /lib/modules/2.6.21-ARCH/kernel/fs/ufs/ufs.ko
26: -rw-r--r-- 1 root root 84828 2007-05-25 20:11 /lib/modules/2.6.21-ARCH/kernel/fs/ufs/ufs.ko
27:
28:
29: # Mount
30:
31: In order to find the device that corresponds to your FFS partition, run:
32:
33: 1. sfdisk -l
34: <pre><code>
35: Disk /dev/hda: 155061 cylinders, 16 heads, 63 sectors/track
36: Warning: extended partition does not start at a cylinder boundary.
37: DOS and Linux will interpret the contents differently.
38: Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0
39: Device Boot Start End #cyls #blocks Id System
40: /dev/hda1 * 0+ 34536- 34537- 17406396 7 HPFS/NTFS
41: end: (c,h,s) expected (1023,15,63) found (1023,254,63)
42: /dev/hda2 34536+ 134767- 100231- 50516392+ f W95 Ext'd (LBA)
43: start: (c,h,s) expected (1023,15,63) found (1023,255,63)
44: end: (c,h,s) expected (1023,15,63) found (1023,254,63)
45: /dev/hda3 134767+ 144935- 10169- 5124735 a5 FreeBSD
46: start: (c,h,s) expected (1023,15,63) found (1023,255,63)
47: end: (c,h,s) expected (1023,15,63) found (1023,254,63)
48: /dev/hda4 144935+ 155060 10126- 5103189 a9 NetBSD
49: start: (c,h,s) expected (1023,15,63) found (1023,255,63)
50: end: (c,h,s) expected (1023,15,63) found (1023,80,63)
51: /dev/hda5 34536+ 102366- 67830- 34186288+ 83 Linux
52: start: (c,h,s) expected (1023,15,63) found (0,1,1)
53: end: (c,h,s) expected (1023,15,63) found (1023,254,63)
54: /dev/hda6 102366+ 104294 1929- 971901 82 Linux swap / Solaris
55: start: (c,h,s) expected (1023,15,63) found (0,1,1)
56: end: (c,h,s) expected (1023,15,63) found (120,254,63)
57: /dev/hda7 104295+ 134767- 30473- 15358108+ 83 Linux
58: start: (c,h,s) expected (1023,15,63) found (0,1,1)
59: end: (c,h,s) expected (1023,15,63) found (1023,254,63)
60: /dev/hda8 134767+ 143910- 9143- 4608000
61: /dev/hda9 143910+ 144935- 1026- 516735
62: /dev/hda10 144935+ 154078- 9143 4608072
63: /dev/hda11 154078+ 155060 983- 495117
64: /dev/hda12 0+ 34536- 34537- 17406396
65: /dev/hda13 34536+ 102366- 67830- 34186288+
66: /dev/hda14 102366+ 104294 1929- 971901
67: /dev/hda15 104295+ 144935- 40641- 20482843+
68: </code></pre>
69:
1.3 ! sevan 70: So for FreeBSD (FFSv2), we have `/dev/hda3` which is equivalent to `/dev/ad0s3`
1.2 schmonz 71:
1.3 ! sevan 72: And for NetBSD (FFSv1), we have `/dev/hda4` which is equivalent to `/dev/wd0c`
1.2 schmonz 73:
74: But these devices are whole BSD slices (BIOS partitions), not BSD partitions.
75:
1.3 ! sevan 76: By examinating carefully sfdisk - l output, we find that: `/dev/hda3` (134767+,144935-) includes `/dev/hda8` (134767+,143910-) and `/dev/hda9` (143910+,144935-) `/dev/hda4` (144935+,155060) includes `/dev/hda10` (144935+,154078-) and `/dev/hda11` (154078+,155060)
1.2 schmonz 77:
1.3 ! sevan 78: And we may deduce that for FreeBSD: `/dev/hda8` is equivalent to `/dev/ad0s3a` (FreeBSD root partition) `/dev/hda9` is equivalent to `/dev/ad0s3b` (FreeBSD swap)
1.2 schmonz 79:
1.3 ! sevan 80: And for NetBSD: `/dev/hda10` is equivalent to `/dev/wd0a` (NetBSD root partition) `/dev/hda11` is equivalent to `/dev/wd0b` (NetBSD swap)
1.2 schmonz 81:
82: Thus FreeBSD root partition lies at /dev/hda8. First create a directory to mount FFS partition and then mount it:
83:
84: # mkdir /mnt/freebsd
85: # mount -t ufs -o ro,ufstype=ufs2 /dev/hda8 /mnt/freebsd/
86:
87:
1.3 ! sevan 88: And NetBSD root partition lies at `/dev/hda10`. First create a directory to mount FFS partition and then mount it:
1.2 schmonz 89:
90: # mkdir /mnt/netbsd
91: # mount -t ufs -o ro,ufstype=44bsd /dev/hda10 /mnt/netbsd/
92:
93:
94: Let's browse it:
95:
96: # ls /mnt/*bsd
97: /mnt/freebsd:
98: bin cdrom COPYRIGHT dist etc lib media proc root sys usr
99: boot compat dev entropy home libexec mnt rescue sbin tmp var
100: /mnt/netbsd:
101: altroot etc gnome-screensave.core mnt root var
102: bin GENERIC kern netbsd sbin
103: boot GENERIC-DIAGNOSTIC lib onetbsd stand
104: CUSTOM GENERIC-LAPTOP libdata proc tmp
105: dev GENERIC-NOACPI libexec rescue usr
106:
107:
108: # Edit /etc/fstab
109:
110: Add the following line to your `/etc/fstab` file:
111:
112: /dev/hda8 /mnt/freebsd ufs ufstype=ufs2,ro 0 2
113: /dev/hda10 /mnt/netbsd ufs ufstype=44bsd,ro 0 2
114:
115:
116: Now you can mount the FFS partitions by typing:
117:
118: # mount /mnt/freebsd
119: # mount /mnt/netbsd
120:
121:
122: and verify with:
123:
124: $ mount
125: [...]
126: /dev/hda8 on /mnt/freebsd type ufs (ro,ufstype=ufs2)
127: /dev/hda10 on /mnt/netbsd type ufs (ro,ufstype=44bsd)
128: [...]
129:
130:
131: # Write support
132:
1.3 ! sevan 133: Write support is available given several conditions are satisfied: - ufs write support option compiled in Linux kernel (`CONFIG_UFS_FS_WRITE=y`): it is disabled by default. - FFSv1 filesystem (FFSv2 not yet supported)
1.2 schmonz 134:
135: Please note that as I do not really need write support on NetBSD partitions from GNU/Linux, I did not bother to rebuild my Linux kernel and hence have not tested this feature.
136:
137: # Remarks
138:
139: * If you forget the `ro` option, you will get the following message at dmesg:
140:
141: $ dmesg | grep ufs
142: ufs was compiled with read-only support, can't be mounted as read-write
143:
144:
145: * If you forget to set the `ufstype` option, you will get the following message at dmesg:
146:
147: $ dmesg | grep ufstype
148: mount -t ufs -o ufstype=sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep ...
149: >>>WARNING<<< Wrong ufstype may corrupt your filesystem, default is ufstype=old
150:
151:
152: So, extra care should be taken.
153:
154: People have reported crashes using FFS partitions access under GNU/Linux (even in read-only mode, that is very strange). I am half convinced that has been caused by accessing a whole BSD slice (BSD dedicated BIOS partition) instead of a BSD partition.
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb