From owner-freebsd-users-jp@freebsd.org Tue Apr 19 12:58:08 2016 Return-Path: Delivered-To: freebsd-users-jp@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3D22AB13785 for ; Tue, 19 Apr 2016 12:58:08 +0000 (UTC) (envelope-from junchoon@dec.sakura.ne.jp) Received: from dec.sakura.ne.jp (dec.sakura.ne.jp [210.188.226.8]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DDDCC1438 for ; Tue, 19 Apr 2016 12:58:07 +0000 (UTC) (envelope-from junchoon@dec.sakura.ne.jp) Received: from fortune.joker.local (123-48-23-227.dz.commufa.jp [123.48.23.227]) (authenticated bits=0) by dec.sakura.ne.jp (8.15.2/8.15.2/[SAKURA-WEB]/20080708) with ESMTPA id u3JCw5rt030859; Tue, 19 Apr 2016 21:58:06 +0900 (JST) (envelope-from junchoon@dec.sakura.ne.jp) Date: Tue, 19 Apr 2016 21:58:05 +0900 From: Tomoaki AOKI To: freebsd-users-jp@freebsd.org Cc: maruyama@ism.ac.jp Message-Id: <20160419215805.1af77a5ee57c7723aababe2f@dec.sakura.ne.jp> In-Reply-To: References: Organization: Junchoon corps X-Mailer: Sylpheed 3.5.0 (GTK+ 2.24.29; amd64-portbld-freebsd10.3) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Subject: [FreeBSD-users-jp 95789] Re: =?iso-2022-jp?b?GyRCJVEhPCVGJSMlNyVnJXMkLBsoQiAyIBskQiREGyhC?= =?iso-2022-jp?b?GyRCOm4kbCReJDskcxsoQg==?= X-BeenThere: freebsd-users-jp@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Discussion relevant to FreeBSD communities in Japan List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Apr 2016 12:58:08 -0000 青木@名古屋です。 ざっとpmbrとgptbootのソースを斜め読みした程度ですが、pmbrは freebsd-boot、gptbootはfreebsd-ufsのGUIDが設定されたパーティ ションを探し、それ以外は中身を見もしません。 従って、freebsdのGUIDが付いた(BSD labelを内包する)パーティ ションは完全にスルーされてしまいます。 On Mon, 18 Apr 2016 23:51:09 +0900 maruyama@ism.ac.jp (丸山直昌) wrote: > 野中 様 > > 丸山です。有難う。 > > 私は重大な前提を書き忘れていたようです。すべては Legacy Bios ブートでの > 話です。小金丸さんは、詳細なハードウェアの条件を述べていませんが、彼も > Legacy BIOSブートを使っていると思いますので、このスレッドではそれで十分 > だと考えていました。 > > 以下そのつもりで読んでください。 > > まず私自身の実験結果を書きます。 > > >> # gpart create -s GPT ada0 > >> # gpart add -t freebsd-boot -s 40 ada0 > >> # gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0 > >> # gpart add -t freebsd -s 260G ada0 > >> # gpart create -s BSD -n 10 ada0s2 > >> # gpart add -s 5g -t freebsd-ufs ada0s2 > >> # gpart add -s 2g -t freebsd-swap ada0s2 > >> # gpart add -s 50g -t freebsd-ufs ada0s2 > >> # gpart add -s 2g -t freebsd-ufs ada0s2 > >> # gpart add -s 50g -t freebsd-ufs ada0s2 > >> # gpart add -s 41g -t freebsd-ufs ada0s2 > >> # gpart add -t freebsd -s 260G ada0 > >> # gpart create -s BSD -n 10 ada0s3 > >> # gpart add -s 5g -t freebsd-ufs ada0s3 > >> # gpart add -s 2g -t freebsd-swap ada0s3 > >> # gpart add -s 50g -t freebsd-ufs ada0s3 > >> # gpart add -s 2g -t freebsd-ufs ada0s3 > >> # gpart add -s 50g -t freebsd-ufs ada0s3 > >> # gpart add -s 41g -t freebsd-ufs ada0s3 > >> > >> で ada0s2a に freebsd を入れておけば起動しませんかね? > > これ、駄目でした。-t freebsd で作ったスライスからは起動できないという結 > 論です。UFSパーティションから起動するためには、UFSを -t freebsd-ufs で作っ > たパーティションに入れておく必要があるということです。 > > 以下ちょっと長くなりますが、実験経過を細かく書きます。実験用空きディスク > は確保できなかったので、8GバイトUSBメモリを使いました。つまり da0 です。 > 買った時の状態で、 > > # gpart show da0 > => 63 15124929 da0 MBR (7.2G) > 63 8001 - free - (3.9M) > 8064 15116928 1 !12 (7.2G) > > つまりはMBRスキーム、MSDOSにフォーマットされているので、 > > gpart delete -i 1 da0 > gpart destroy da0 > gpart create -s GPT da0 > gpart add -t freebsd-boot -s 40 da0 > gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da0 > gpart add -t freebsd -s 4G da0 > gpart create -s BSD da0s2 > gpart add -t freebsd-ufs da0s2 > gpart add -t freebsd da0 > gpart create -s BSD da0s3 > gpart add -t freebsd-ufs da0s3 > > とすると > > # gpart show da0 > => 34 15124925 da0 GPT (7.2G) > 34 8190 - free - (4.0M) > 8224 40 1 freebsd-boot (20K) > 8264 16344 - free - (8.0M) > 24608 8388608 2 freebsd (4.0G) > 8413216 6701056 3 freebsd (3.2G) > 15114272 10687 - free - (5.2M) > > # gpart show da0s2 > => 0 8388608 da0s2 BSD (4.0G) > 0 8372224 1 freebsd-ufs (4.0G) > 8372224 16384 - free - (8.0M) > > # gpart show da0s3 > => 0 6701056 da0s3 BSD (3.2G) > 0 6684672 1 freebsd-ufs (3.2G) > 6684672 16384 - free - (8.0M) > > # ls -alg /dev/da0* > crw-rw-rw- 1 root operator 0xce 4月 18 16:30 /dev/da0 > crw-rw-rw- 1 root operator 0xcf 4月 18 16:50 /dev/da0p1 > crw-rw-rw- 1 root operator 0xd0 4月 18 16:50 /dev/da0s2 > crw-rw-rw- 1 root operator 0xd1 4月 18 16:50 /dev/da0s2a > crw-rw-rw- 1 root operator 0xd2 4月 18 16:50 /dev/da0s3 > crw-rw-rw- 1 root operator 0xd3 4月 18 16:50 /dev/da0s3a > > となり、 > > # newfs /dev/da0s2a > /dev/da0s2a: 4088.0MB (8372224 sectors) block size 32768, fragment size > 4096 > using 7 cylinder groups of 626.09MB, 20035 blks, 80256 inodes. > super-block backups (for fsck_ffs -b #) at: > 192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632 > > で、ここに他で動いているPC-BSD10.2 のルート以下を restore して試しました > が、USBからの起動は失敗して、内臓ディスクからの起動になってしまいました。 > ここで、da0s2a を da0p2 にすり替える、つまり > > gpart delete -i 2 da0 > gpart add -t freebsd-ufs -b 24608 -s 8388608 da0 > gpart show da0 > > とやって type freebsd だったものを type freebsd-ufs に直してしまって > > # gpart show da0 > => 34 15124925 da0 GPT (7.2G) > 34 8190 - free - (4.0M) > 8224 40 1 freebsd-boot (20K) > 8264 16344 - free - (8.0M) > 24608 8388608 2 freebsd-ufs (4.0G) > 8413216 6701056 3 freebsd (3.2G) > 15114272 10687 - free - (5.2M) > > # gpart show da0p2 > => 0 8388608 da0p2 BSD (4.0G) > 0 8372224 1 freebsd-ufs (4.0G) > 8372224 16384 - free - (8.0M) > > とすると、今度は boot は成功します。 > > つまり、青木さんが書いておられた > > >ただ、現状ではgptbootはドライブ内の起動可能なUFSのうち最も先頭側のパー > >ティション、gptzfsbootでは同じく最も先頭側のZFSプールからしか起動でき > >ない制約があります。 > > が厳格に守られていて、それはパーティション(スライス)内のデータの構造によっ > ているのではなく、 gpart add コマンドで使った -t オプションの引数が > freebsd-ufs か freebsd か、という違いによるものです。 > > >gptbootは最初に見つかった(一番番号の小さい)freebsd-ufsパーティション > >から起動しますが、他のパーティションから起動したい場合は、 > > gpart set a bootme -i 3 ada0 > >のようにgpartコマンドのsetオプションを使ってブートしたいパーティションに > >bootme属性を付ける事で、そのパーティションから起動されます。 > > gpart set -a bootme -i 2 da0 > > とやって > > [root@indra{189}] ~# gpart show da0 > => 34 15124925 da0 GPT (7.2G) > 34 8190 - free - (4.0M) > 8224 40 1 freebsd-boot (20K) > 8264 16344 - free - (8.0M) > 24608 8388608 2 freebsd [bootme] (4.0G) > 8413216 6701056 3 freebsd (3.2G) > 15114272 10687 - free - (5.2M) > > としてみましたが、やはり type freebsd では boot できませんでした。 > > 引用が前後して恐縮ですが、 > > >ただ、gptbootはUFS Label構造を見ていなかったと記憶しています(要確認)。 > > 私の実験結果から推測すると、見ていないでしょうね。type freebsd はboot > processでは無視する、ということですし、 type freebsd-ufs ならLabel見なく > てもmountできますから。 > > 結局 GPT スキームで ada0s2 adas2a などを作ってもそこに入れたUFSから起動 > する方法がない、ということになります。 > > 実験は以上です。 > > -------- > 丸山直昌@統計数理研究所 > _______________________________________________ > freebsd-users-jp@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp > To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe@freebsd.org" > -- 青木 知明 [Tomoaki AOKI] junchoon@dec.sakura.ne.jp