From owner-freebsd-users-jp@freebsd.org Mon Apr 18 02:06:36 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 0275CB121A1 for ; Mon, 18 Apr 2016 02:06:36 +0000 (UTC) (envelope-from nao@enuenu.org) Received: from mail.tee-n.com (32.161.192.61.east.global.crust-r.net [61.192.161.32]) by mx1.freebsd.org (Postfix) with ESMTP id B99C219A0 for ; Mon, 18 Apr 2016 02:06:34 +0000 (UTC) (envelope-from nao@enuenu.org) Received: from melon.enuenu.site (melon.enuenu.site [192.168.30.10]) by mail.tee-n.com (Postfix) with ESMTP id 2D5B3B1F3E; Mon, 18 Apr 2016 10:56:52 +0900 (JST) Received: from [192.168.30.136] (dhcp30136.enuenu.site [192.168.30.136]) by melon.enuenu.site (Postfix) with ESMTP id 2422C2547; Mon, 18 Apr 2016 10:56:52 +0900 (JST) To: freebsd-users-jp@freebsd.org References: From: Naomichi Nonaka Message-ID: <57143EE5.1050108@enuenu.org> Date: Mon, 18 Apr 2016 10:56:53 +0900 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Subject: [FreeBSD-users-jp 95771] Re: =?utf-8?b?44OR44O844OG44Kj44K344On44Oz44GMIDIg44Gk5L2c44KM?= =?utf-8?b?44G+44Gb44KT?= 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: Mon, 18 Apr 2016 02:06:36 -0000 野中です。 On 2016/04/18 0:31, 丸山直昌 wrote: > 統計数理研究所の丸山です。 > > Sun, 17 Apr 2016 19:51:38 +0900 > 岡部 勝幸 writes: > >>> gpart create -s GPT ada0 >>> gpart add -t freebsd-ufs ada0 >>> gpart add -t freebsd ada0 >>> >>> と続けてやると、 ada0p1 の次にできるのは ada0s1 ですか ada0s2ですか、は >>> たまた ada0p2 ですか? >> >> 試してみたところ ada0s2 でした。 > > 有難うございました。岡部さんから今日私が得た知識は、GPTスキームに対する > 私の見方まで変えてしまいました。MBRスキーム+BSD labelが持つ色々な問題点 > をGPTは解決したというのが私の解釈で、中でも UFSファイルシステムの中の第1〜 > 15セクタにstage 1 boot code(普通は/boot/bootの第1〜15セクタのコピー)を持っ > ているという伝統をやめて type freebsd-bootのパーティションとして独立させ > たのは、時代の要請にも合っているし、仕様としてもすっきりしていると思って > います。そもそもMBRスキームという用語自体、 gpart の時代になって作られた > 言葉で、元々は「Microsoft流disk slice」であって、その中にBSD label を入 > れ込むという方法は、Berkeley版 BSDにあったdisklabel をIntel/Windowsマシ > ンに適合させるための苦肉の策だったと解釈しています。こんな伝統はこの際捨 > てて GPT の freebsd-ufs partitionに統一する方が健全、と思っていたので、 > GPT スキームで ada0s1a などが作れると知って、ある意味「幻滅」すら感じま > した。 > > まあ、私の感想はそのくらいにしておいて、岡部さんがお書きになった > >> 小金丸さんのされたかったことは、おそらく次のような事かと思います(GPTの >> ブートコードは対応してないでしょうから結局はMBRにする必要あるでしょうけど)。 > > について考えてみましょう。問題は GPTスキームで ada0s1a にある > /boot/loader(stage 2 boot loader)にいかにして辿り着けるか、です。 > > MBRスキームではデバイスの先頭セクタは /boot/boot0 で、これがstage 0 boot > loaderですが、先頭セクタは4つのスライスのアドレス情報も持っているので、 > stage 0 boot loaderは ada0s1a, adas02a などの第1〜15セクタにある stage 1 > boot code を見つけることができます。それはさらに/boot/loader(stage 2 > boot loader) に制御を渡してOSの起動が進みます(/boot.configを参照しますが)。 > > さて GPTスキームだとどうでしょう。コードを読んだわけではないので以下に書 > くことには推理が入っていますが、次のような流れだと思います。 > > GPTスキームではディスクのレイアウト情報はデバイスのセクタ0ではなく、 > セクタ34以下にあるのでしょう。従って stage 0 boot code(/boot/pmbrのコピー) > は、単に type freebsd-boot のパーティションにある stage 1 boot > code(/boot/gptboot)に制御を渡して、これがディスクのレイアウト情報を読ん > で続く起動シーケンスを決めるのだと思います。そう考えると GPTスキームは元々(U)EFI規格の一部として作成されたのですが、現状では Legasy BIOSとGPTの組合せも(の方が?)多用されており、BIOSモードとUEFI モードではブートシーケンスは大幅に異なります。 以前自分のBlogの記事 http://blog.livedoor.jp/goldfish_and_laser/archives/2714971.html http://blog.livedoor.jp/goldfish_and_laser/archives/5191810.html でも書いたのですが、丸山さんの上記推測はBIOSモードで起動したときの シーケンスに相当します。 ただ、gptbootはUFS Label構造を見ていなかったと記憶しています(要確認)。 なので、 > # 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 を入れておけば起動しませんかね? 上記構成とした場合、ada0s2aがada0s2の先頭にあればブートする かもしれませんが、少なくとも想定した使用法ではないと思います。 gptbootは最初に見つかった(一番番号の小さい)freebsd-ufsパーティション から起動しますが、他のパーティションから起動したい場合は、 gpart set a bootme -i 3 ada0 のようにgpartコマンドのsetオプションを使ってブートしたいパーティションに bootme属性を付ける事で、そのパーティションから起動されます。 一方、UEFIモードで起動した場合は上記bootmeに相当する機能は無く、 最初に見つけたパーティションから起動する機能しかなかったので、 以前投稿したように、UEFIブート時に起動パーティションを選べる パッチを作って、send-prした所です。 野中 > これが小金丸さんのご希望にかなうかどうか知りませんが。 > > 自分で実験できなくて済みません。 > > -------- > 丸山直昌@統計数理研究所 > _______________________________________________ > 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" >