mount NetBSD/FreeBSD disks


NetBSD と FreeBSD の dual boot に成功したので,調子こいて
お互いの file system を mount することにした. 今の状況は,
  1. NetBSD ( 0GB - 2GB)
  2. FreeBSD( 2GB - 12GB)
となっていて, FreeBSD の file system に home directory がある.
これを NetBSD 側からも見たいし, NetBSD:/usr (/usr/src/sys)も FreeBSD 側から見たい.
以下,やったこと.

  1. FreeBSD側から NetBSD の file system を mount する.
    まず,簡単な方から. NetBSD の file system がこんな 状態だった場合,

    NetBSD での df の出力例:
    Filesystem          Size  Used  Avail  Capacity Mounted on
    /dev/wd0a            62M   34M    23M     59%   /
    /dev/wd0e           1.7G  240M   1.5G     14%   /usr
    
    NetBSD の file system は FreeBSD 側から見れば /dev/ad0s1 にあり,
    NetBSD:/usr は NetBSD 側から見れば e パーティションにある.
    そこで NetBSD:/usr を FreeBSD から mount するには,以下のようにする.
    
    FreeBSD# mkdir /netbsd
    FreeBSD# mount -t ufs /dev/ad0s1e /netbsd
    
    
    これでOK. 楽勝. あとは /etc/fstab に書くなり, お好きにどーぞ.

  2. NetBSD側から FreeBSD の file system を mount する.
    こいつはちょっとめんどくさい. しかも計算を間違えると ぱー になる可能性があるので注意して行う.

    下準備として, FreeBSD で fdisk -s と実行する.
    FreeBSD# fdisk -s
    /dev/ad0: 2772 cyl 135 hd 63 sec
    Part        Start        Size Type Flags
       1:          63     4193847 0xa9 0x00 <== NetBSD領域
       2:     4193910    19381950 0xa5 0x80 <== FreeBSD領域
    
    大事なのは,赤色の部分. FreeBSD のfile system の先頭の位置を控えておく.
    次に, NetBSD 側から mount したい file system を確認するために,
    FreeBSD上で df なり, mount を実行する.
    FreeBSD# df -h
    Filesystem            Size  Used  Avail  Capacity Mounted on
    /dev/ad0s2a            62M   34M    23M     59%   /
    /dev/ad0s2g           8.2G  6.1G   1.4G     82%   /export/home
    /dev/ad0s2f           496M  288M   168M     63%   /usr
    /dev/ad0s2e            15M  1.9M    12M     13%   /var
    
    今回 mount したいのは home directory がある /export/home だから,
    /dev/ad0s2g の HDD 上での位置を 計算する.
    ってことで disklabel -r ad0 を実行.
    FreeBSD# disklabel -r ad0
    ...(省略)
    8 partitions:
    #        size   offset    fstype   [fsize bsize bps/cpg]
      a:   131072        0    4.2BSD        0     0     0   # (Cyl.    0 - 8*)
      b:   524288   131072      swap                        # (Cyl.    8*- 40*)
      c: 19381950        0    unused        0     0         # (Cyl.    0 - 1206*)
      e:    32768   655360    4.2BSD        0     0     0   # (Cyl.   40*- 42*)
      f:  1048576   688128    4.2BSD        0     0     0   # (Cyl.   42*- 108*)
      g: 17645246  1736704    4.2BSD        0     0     0   # (Cyl.  108*- 1206*)
    
    緑色size赤色offset の値を控えておく.
    これで準備万端. NetBSD を boot する.

    NetBSD を boot したら, disklabel を書く. どきどき.
    NetBSD# disklabel -e -r wd0
    ...(省略)
    #        size   offset     fstype   [fsize bsize   cpg]
      a:  1091601       63     4.2BSD     1024  8192    16   # (Cyl.    0*- 1082)   <== / 
      b:  1051344  1091664       swap                        # (Cyl. 1083 - 2125)   <== swap  
      c:  4193847       63     unused        0     0         # (Cyl.    0*- 4160*)  <== NetBSD 領域全体 
      d: 23579136        0     unused        0     0         # (Cyl.    0 - 23391)  <== HDD 全体 
      e:  2050902  2143008     4.2BSD     1024  8192    16   # (Cyl. 2126 - 4160*)  <== /usr 
      f: 17645246  5930614     4.2BSD     1024  8192    16   # (Cyl. 5883*- 23388*) <== ここを編集!! 
    
    f パーティションの行を自分で書く.
    size は, 先ほど FreeBSD の disklabel で調べた size の値の 17645246 を書けば良い.
    一方 offset は, FreeBSD の fdisk で調べた値(4193910)と,
    disklabel で調べた値(1736704)を足した値 (4193910 + 1736704 = 5930614)を書く.

    足し算の結果を何度も確認して,よければ disklabel を終了する.
    いよいよ mount で確認.
    
    NetBSD# mkdir -p /export/home
    NetBSD# mount /dev/wd0f /export/home
    
    
    /export/home の中身が見れたり, file を作成することができるか確認する.
    これでおしまい. disklabel の値の計算が間違えているとディスクが ぱー になるのでご注意.

Generated with mkdiary.pl
Back to my diary