it-swarm-ja.com

Linuxで論理パーティションからFreeBSD UFSをマウントする

このセットアップでUbuntuの下にFreeBSD UFSブートパーティションをマウントするにはどうすればよいですか。

  • を含む単一のHDD
  • 含むMBRパーティションテーブル
  • いくつかのプライマリLinuxパーティションと、以下を含む拡張パーティション
  • linux論理パーティションと、以下を含むFreeBSD論理パーティション
  • 以下を含むFreeBSDディスクラベル(論理パーティションは「スライス」です)
  • freeBSDブート(UFS)およびスワップパーティション

これがMBRパーティショニングです。

ubuntu$ Sudo fdisk -l /dev/sda

Disk /dev/sda: 42.9 GB, 42949672960 bytes

255 heads, 63 sectors/track, 5221 cylinders, total 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0005d5af

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1953791      975872   83  Linux
/dev/sda2         1953792    11718655     4882432   83  Linux
/dev/sda3        11718656    13672447      976896   82  Linux swap /     Solaris
/dev/sda4        13674494    83884031    35104769    5  Extended
/dev/sda5        13674496    33204223     9764864   83  Linux
/dev/sda6        33206272    83884031    25338880   a5  FreeBSD

そしてここにディスクラベルがあります:

freebsd$ disklabel /dev/ada0s6
# /dev/ada0s6:
8 partitions:
#          size     offset    fstype   [fsize bsize bps/cpg]
  a:   48580592         16    4.2BSD        0     0     0
  b:    2097152   48580608      swap                    
  c:   50677760          0    unused        0     0     # "raw" part, don't edit

FreeBSDは次のようにして起動できます/etc/grub.d/40_custom

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "FreeBSD" {
    insmod part_bsd
    insmod ufs2
    set root="(hd0,msdos6,bsd1)"
    kfreebsd /boot/kernel/kernel
    set kFreeBSD.acpi_load=YES
    set kFreeBSD.hint.acpi.0.disabled=0
    set kFreeBSD.vfs.root.mountfrom=ufs:/dev/ada0s6a
    kfreebsd_loadenv /boot/device.hints
}

そうすれば、grub2からFreeBSDパーティションに問題なくアクセスできます。ただし、LinuxはBSDパーティションを検出しません。

ubuntu$ ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4  /dev/sda5  /dev/sda6

バージョン:Ubuntu 14.04、x86_64上のカーネル4.2.0-27-generic、FreeBSD 10.3リリースAMD64、両方とも新規インストール。

5
not-a-user

回避策は、論理パーティション内のBSDパーティションのオフセットを計算し、オフセット付きのループデバイスを使用することです。

mount -t ufs -o loop,offset=8192,ro,ufstype=ufs2 /dev/sda6 /mnt
2
not-a-user

おそらく、LinuxFreeBSDの異なるハードディスク命名規則に混乱していると思います。出力から、Linuxがufsパーティションを検出し、それが/dev/sda6。したがって、次のことを行う必要があります

Sudo modprobe ufs
Sudo mount -t ufs -o ufstype=ufs2 /dev/sda6 /mnt
1
user1700494