EBUG勉強会/20190223_UEFI_GPT
をテンプレートにして作成
Start:
#topicpath
* 河豚板のUEFI/GPT対応 [#c3cde25d]
RIGHT:EBUG 第68回会合 ~
2019年2月23日、(有)銀座堂 ~
川俣吉広、kaw@on.rim.or.jp
#contents
**発端 [#w413bf81]
Twitterでの[[このtweet>https://twitter.com/ao_kenji/statu...
このやりとりが発端となり、[[河豚板のUEFI対応>https://twit...
**UEFIとGPT [#f51c6c7a]
:UEFI (Unified Extensible Firmware Interface)|OSとファー...
従来のBIOS (Legacy BIOS)による起動方法からの置換えを意図...
・UEFI用のパーティション(ファイルシステムとしてはFAT)を持...
・そのパーティション内に起動用の実行バイナリが格納されて...
:GPT (GUID (Globally Unique Identifier) Partition Table)|...
Legacy BIOSで用いられてきたMBR (Master Boot Record)に替わ...
・MBRが扱えるのは最大2TBのディスクを4区画まで~
・GPTでは最大8ZBを128区画まで分割可能
OpenBSDの場合に現状で考えられる起動方法とパーティショニン...
***Legacy BIOS / MBR [#b5dbe277]
#ref(MBR.png,wrap,around,right,,50%)
UEFI登場以前から用いられてきた方法 [[(参考)>https://www.h...
-ハードウェア上のファームウェアがHDDのセクタ0にあるMBRブ...
-MBRブートコードは、ブートフラグがONになっているパーティ...
--OpenBSDでは、PBRは/usr/mdec/biosbootが用いられる。
-PBRはOpenBSDのルートファイルシステム上にある/bootを実行...
--この/bootが「boot>」プロンプトを表示し、カーネル起動に...
-bootは指定にしたがって、該当するカーネルを起動する。
-なお、OpenBSD用と設定された区画(右図の例ではentry 3)は、...
OpenBSD Areaの中にdisklabelによるBSDパーティションが作成...
#clear
***UEFI / GPT [#b9cb0a3e]
#ref(GPT.png,wrap,around,right,,50%)
起動にUEFI、ディスクパーテショニングにGPTを用いるパターン
-ハードウェア上のファームウェアがGPT内でEFI Sysパーティシ...
このファイル名は、
--i386ではBOOTIA32.EFI
--amd64はBOOTX64.EFI
--arm64はBOOTAA64.EFI
>となっている。
-OpenBSDのEFIアプリケーションは、「boot>」プロンプトを表...
これは、MBR起動の場合の/bootに相当する。
-EFIアプリケーションは指定にしたがって、該当するカーネル...
-なお、GPTの場合にも先頭セクタの部分に、従来のMBRとの互換...
-OpenBSD Area内の管理については、MBRの場合と同じ。
#clear
***UEFI / MBR [#g2c561a7]
#ref(ARM64.png,wrap,around,right,,50%)
UEFIとしてEFIアプリケーションがロードされるが、パーテショ...
amd64のインストールメディアやarm64で使われている。
amd64のインストールメディアとarm64とでは細かい箇所で異な...
-arm64ではUEFI用のパーティションIDは0C (FAT32L)、amd64イ...
-arm64ではUEFI用のパーティション内にはU-BOOTも書き込まれ...
-amd64インストーラではMBR boot code、PBR、/bootもセットア...
#clear
***Hybrid MBR [#ffdd1155]
#ref(Hyb.png,wrap,around,right,,50%)
MBRとGPTの両方に同じパーテショニング情報を書込み、ブート...
-Legacy BIOS・UEFIのどちらでも起動することが期待できる。
-非標準。規格上は定義されていない方法。
-現状ではMBRとGPTとを同時に変更するツールがないため、作成...
#clear
**OpenBSDでのUEFI実装
2015年に安岡昌彦氏によりカーネルにUEFI対応の機能が[[実装...
現在では、インストーラ含め、関連ユティリティがUEFI/GPTに...
***インストーラ [#ybe73310]
前述のように、Legacy BIOS、UEFIのいずれからでも起動可。
Legacy BIOS、UEFIのどちらで起動したかによって、パーティシ...
UEFIで起動した場合
Available disks are: wd0 wd1.
Which disk is the root disk? ('?' for details) [wd0] wd1
No valid MBR or GPT.
Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [gpt] ...
Setting OpenBSD GPT partition to whole wd1...done. ...
The auto-allocated layout for wd1 is:
# size offset fstype [fsize bs...
a: 819776.0K 1024 4.2BSD 2048 16...
b: 83090.0K 1640576 swap ...
c: 2097152.0K 0 unused ...
d: 930704.0K 1806784 4.2BSD 2048 16...
e: 263024.0K 3668192 4.2BSD 2048 16...
i: 480.0K 64 MSDOS ...
Use (A)uto layout, (E)dit auto layout, or create (C)usto...
Legacy BIOSで起動した場合
Available disks are: wd0 wd1.
Which disk is the root disk? ('?' for details) [wd0] wd1
No valid MBR or GPT.
Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [whole...
Setting OpenBSD MBR partition to whole wd1...done.
The auto-allocated layout for wd1 is:
# size offset fstype [fsize bs...
a: 800.6M 64 4.2BSD 2048 16...
b: 81.1M 1639616 swap ...
c: 2048.0M 0 unused ...
d: 908.9M 1805824 4.2BSD 2048 16...
e: 256.9M 3667232 4.2BSD 2048 16...
Use (A)uto layout, (E)dit auto layout, or create (C)usto...
***fdisk [#ff75d474]
パーティションのメンテナンスツール[[fdisk(8)>https://man....
MBRで初期化
# fdisk -i wd1
Do you wish to write new MBR and partition table? [n] y
Writing MBR at offset 0.
# fdisk wd1
Disk: wd1 geometry: 520/128/63 [4194304 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: ...
--------------------------------------------------------...
0: 00 0 0 0 - 0 0 0 [ 0: ...
1: 00 0 0 0 - 0 0 0 [ 0: ...
2: 00 0 0 0 - 0 0 0 [ 0: ...
*3: A6 0 1 2 - 519 127 63 [ 64: ...
GPTで初期化
# fdisk -i -g wd1
Do you wish to write new GPT? [n] y
Writing MBR at offset 0.
Writing GPT.
# fdisk wd1
Disk: wd1 Usable LBA: 64 to 4194240 [4194304 Secto...
#: type [ start...
--------------------------------------------------------...
3: OpenBSD [ 64...
パーティションの詳細を見る
↓
# fdisk -v wd1
Primary GPT:
Disk: wd1 Usable LBA: 64 to 4194240 [4194304 Secto...
GUID: 09d92128-d884-40f8-9e17-a606721cd8c7
#: type [ start...
guid name
--------------------------------------------------------...
3: OpenBSD [ 64...
376b4152-9c45-4d7a-8392-5f0f3e015d51 OpenBSD Area ...
Secondary GPT:
Disk: wd1 Usable LBA: 64 to 4194240 [4194304 Secto...
GUID: 09d92128-d884-40f8-9e17-a606721cd8c7
#: type [ start...
guid name
--------------------------------------------------------...
3: OpenBSD [ 64...
376b4152-9c45-4d7a-8392-5f0f3e015d51 OpenBSD Area ...
MBR:
Disk: wd1 geometry: 520/128/63 [4194304 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: ...
--------------------------------------------------------...
0: EE 0 0 2 - 532610 4 4 [ 1: 4...
1: 00 0 0 0 - 0 0 0 [ 0: ...
2: 00 0 0 0 - 0 0 0 [ 0: ...
3: 00 0 0 0 - 0 0 0 [ 0: ...
#
***installboot [#nd59602a]
OpenBSDでは、ブートローダの書込みに[[installboot(8)>https...
-対象ディスクがMBRで区画分けされている場合、PBRと/bootを...
# mount /dev/wd1a /mnt
# installboot -r /mnt wd1 /usr/mdec/biosboot /usr/mdec/b...
↑ ↑
PBR secondary l...
# umount /mnt
-対象ディスクがGPTで区画分けされている場合、EFIアプリケー...
# installboot wd1
**河豚板での実装
***配布物
-ISO版は変更しない。
-img版は、以下のように対応する。
--i386版は、Legacy BIOS/MBRにする(UEFIアプリケーションが...
--amd64版は、Hybrid MBRとし、Legacy BIOS/UEFIのいずれでも...
--arm64版は、UEFI/MBRにする(オリジナルのOpenBSD/arm64と同...
***usbfadm [#v5311047]
[[usbfadm (USB Flashdrive ADMinistration tool)>https://gi...
実際はUSBメモリに限らず、ストレージデバイス全般で使用可
用途
:syncコマンド|TMPFS内のデータをUSBメモリに保存する~
読み出しは次回起動時に「起動モード3」を指定する。
:newdriveコマンド|LiveUSB版の河豚板を新規作成する~
LiveUSB版河豚板のディスクイメージを作成する
UEFI/GPT対応として、newdriveコマンドに
-起動方法としてLegacy/BIOS and/or UEFIを指定出来るように...
-パーティショニングとしてMBR and/or GPTを指定出来るように...
#ref(FuguIta.png,wrap,around,right,,50%)
河豚板のパーティション構成
-EFI sys ... UEFIブートの際に必要 (Legacy BIOS、データ保...
-OpenBSD Area
--a
---河豚板のファイルツリー(実際にはlndirを使ってtmpfsにマ...
---デバイスをファイル保存用のみに使う場合は不要
--d
---usbfadmを使ってTMPFS内のデータをUSBメモリに保存する場...
-FAT ... ユーザの指示がある場合、ディスクに空きがあれば作成
Hybrid MBRを用い、かつパーティションを全て作成する場合、...
#clear
***プラットフォーム依存部 - 組み合わせとデフォルト [#debb...
「プラットフォーム毎の対応表」を見るとわかるように、ブー...
さらに、ユーザが「データ保存のみ」を選択した場合はブート...
|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
| |Legacy BIOS|UEFI |Hybrid|...
|BGCOLOR(#e0e0e0):MBR |i386, amd64|amd64, arm64|N/A |...
|BGCOLOR(#e0e0e0):GPT |N/A |amd64, arm64|N/A |...
|BGCOLOR(#e0e0e0):Hybrid|N/A |N/A |amd64 |...
|>|>|>|>|CENTER:BGCOLOR(#d0d0e0):プラットフォーム毎の対応...
-i386はEFIアプリケーションが供給されていないため、UEFI起...
-arm64はU-BOOT起動のため、Legacy BIOS起動不可
この複雑さを緩和するため、今回の改修では/usr/fugutia/etc/...
例えば、i386の場合、このファイルに~
disable_uefiboot=Yes
などと記述することで、UEFI起動を選択肢からはずせるように...
一方arm64の場合、Legacy BIOSでは起動できないので、
disable_legacyboot=Yes
となる。
またarm64の場合は以下の理由から、さらなる処理が必要となる。
-基本はUEFI/MBRの構成だが、MBRブートフラグとUEFI Sysのパ...
-OpenBSD/arm64はHDMI出力が実装されておらずシリアルコンソ...
--FuguIta/arm64では、インストール作業の敷居を下げるため、...
--そのため、FuguIta/arm64は他のプラットフォーム用と異なり...
arm64のusbfadmでnewdriveを実行してリマスタリングを行う場...
--よって、新しいusbfadmでは、newdriveコマンドの実行の最後...
***Hybrid MBRの作成 [#j43a6d35]
[[OpenBSDでのUEFI実装>#k481c6c6]]で説明したように、OpenBS...
今回のUEFI対応では、以下のような方法でHybrid MBRを実装し...
#ref(mkHybrid.png,wrap,around,left,,50%)
-1. ディスクをMBRで初期化する ... fdisk -i
-2a. パーティションを作成し、newfs, newfs_msdosを行う
-2b. installbootを実行する ... PBRと/bootが書き込まれる
-2c. MBRをddで吸出しファイルとして保存しておく
-3. ディスクをGPTで初期化する ... fdisk -i -g
-4a. MBRと同じ構成でGPTパーティションを作成する
-4b. installbootを実行する ... EFIアプリケーションが書き...
-4c. 保存しておいたMBRをddでprotective MBRに上書きする
#clear
**開発環境 [#vf676e5a]
***初期 [#if1cdd2c]
#ref(QEMU.png,wrap,around,right,,50%)
開発の初期段階では、プロセッサエミュレータ[[QEMU>https://...
-最初は、手動でfdiskなどを動かして挙動を調査したり、動作...
-Legacy BIOSとUEFIを頻繁に切り替えて作業をするため、実ハ...
QEMUは、デフォルトではLegacy BIOS (SMBIOS)として動作する。~
UEFI起動を行うためには、-biosオプションで[[OVMF (Open Vir...
#clear
Legacy BIOS起動
# qemu-system-x86_64 -m 512 -hda install64.fs -hdb testh...
UEFI起動
# qemu-system-x86_64 -m 512 -hda install64.fs -hdb testh...
パーティション操作を行う対象となるディスクイメージファイ...
これにより、[[vnconfig(8)>https://man.openbsd.org/vnconfi...
***中期以降 [#ecebd6df]
usbfadmが一通り動作するようになってからはプラットフォーム...
手順は概ね以下のとおり;
#ref(RealDev.png,wrap,around,right,,50%)
-河豚板のソースコードはfuguita.org上のCVSリポジトリで管理...
-各プラットフォームの開発/テスト機はworking copyをNFSマウ...
→開発者は一人だけなので、同じファイルを同時に編集すること...
-すべてのプラットフォームでの作業が終了したら、fuguita.or...
-プラットフォーム毎のビルドマシンでcvs updateを行い。更新...
-リリースの動作テストがOKなら、完成したリリースをMirror O...
-mirror.ginzado.ne.jpとlivecd-mirror.ebug.jpの2つのミラ...
この時点で河豚板が一般公開されたことになる。
-一方、CVSリポジトリは、git cvsimportによりGitに変換され...
#clear
**その他諸々
***OVMFの不具合(?)
開発当初、OVMFを使ってQEMUを起動したところ不具合が発生。
-/bootが河豚板のカーネルを読み込んでいる途中で、読込みが...
-発生するのは河豚板のカーネルのみ、OpenBSDのGENERICカーネ...
何回か試行を行っていたところ正常に起動し、その後現象の再...
***installbootの不具合
installbootは、EFIアプリケーションのインストールに失敗す...
# installboot -v -r /mnt vnd0 /fuguita/usr/mdec/biosboot...
Using /mnt as root
installing bootstrap on /dev/rvnd0c
using first-stage /fuguita/usr/mdec/biosboot, second-sta...
newfs_msdos: /dev/rdfe15236c496b5df.i: No such file or d...
installboot: unable to mount EFI System partition: No su...
newfs_msdosによりEFI Sysのパーティションをフォーマットす...
UEFIのセットアップはEFI SysのパーティションをFATでフォー...
----
#topicpath
End:
#topicpath
* 河豚板のUEFI/GPT対応 [#c3cde25d]
RIGHT:EBUG 第68回会合 ~
2019年2月23日、(有)銀座堂 ~
川俣吉広、kaw@on.rim.or.jp
#contents
**発端 [#w413bf81]
Twitterでの[[このtweet>https://twitter.com/ao_kenji/statu...
このやりとりが発端となり、[[河豚板のUEFI対応>https://twit...
**UEFIとGPT [#f51c6c7a]
:UEFI (Unified Extensible Firmware Interface)|OSとファー...
従来のBIOS (Legacy BIOS)による起動方法からの置換えを意図...
・UEFI用のパーティション(ファイルシステムとしてはFAT)を持...
・そのパーティション内に起動用の実行バイナリが格納されて...
:GPT (GUID (Globally Unique Identifier) Partition Table)|...
Legacy BIOSで用いられてきたMBR (Master Boot Record)に替わ...
・MBRが扱えるのは最大2TBのディスクを4区画まで~
・GPTでは最大8ZBを128区画まで分割可能
OpenBSDの場合に現状で考えられる起動方法とパーティショニン...
***Legacy BIOS / MBR [#b5dbe277]
#ref(MBR.png,wrap,around,right,,50%)
UEFI登場以前から用いられてきた方法 [[(参考)>https://www.h...
-ハードウェア上のファームウェアがHDDのセクタ0にあるMBRブ...
-MBRブートコードは、ブートフラグがONになっているパーティ...
--OpenBSDでは、PBRは/usr/mdec/biosbootが用いられる。
-PBRはOpenBSDのルートファイルシステム上にある/bootを実行...
--この/bootが「boot>」プロンプトを表示し、カーネル起動に...
-bootは指定にしたがって、該当するカーネルを起動する。
-なお、OpenBSD用と設定された区画(右図の例ではentry 3)は、...
OpenBSD Areaの中にdisklabelによるBSDパーティションが作成...
#clear
***UEFI / GPT [#b9cb0a3e]
#ref(GPT.png,wrap,around,right,,50%)
起動にUEFI、ディスクパーテショニングにGPTを用いるパターン
-ハードウェア上のファームウェアがGPT内でEFI Sysパーティシ...
このファイル名は、
--i386ではBOOTIA32.EFI
--amd64はBOOTX64.EFI
--arm64はBOOTAA64.EFI
>となっている。
-OpenBSDのEFIアプリケーションは、「boot>」プロンプトを表...
これは、MBR起動の場合の/bootに相当する。
-EFIアプリケーションは指定にしたがって、該当するカーネル...
-なお、GPTの場合にも先頭セクタの部分に、従来のMBRとの互換...
-OpenBSD Area内の管理については、MBRの場合と同じ。
#clear
***UEFI / MBR [#g2c561a7]
#ref(ARM64.png,wrap,around,right,,50%)
UEFIとしてEFIアプリケーションがロードされるが、パーテショ...
amd64のインストールメディアやarm64で使われている。
amd64のインストールメディアとarm64とでは細かい箇所で異な...
-arm64ではUEFI用のパーティションIDは0C (FAT32L)、amd64イ...
-arm64ではUEFI用のパーティション内にはU-BOOTも書き込まれ...
-amd64インストーラではMBR boot code、PBR、/bootもセットア...
#clear
***Hybrid MBR [#ffdd1155]
#ref(Hyb.png,wrap,around,right,,50%)
MBRとGPTの両方に同じパーテショニング情報を書込み、ブート...
-Legacy BIOS・UEFIのどちらでも起動することが期待できる。
-非標準。規格上は定義されていない方法。
-現状ではMBRとGPTとを同時に変更するツールがないため、作成...
#clear
**OpenBSDでのUEFI実装
2015年に安岡昌彦氏によりカーネルにUEFI対応の機能が[[実装...
現在では、インストーラ含め、関連ユティリティがUEFI/GPTに...
***インストーラ [#ybe73310]
前述のように、Legacy BIOS、UEFIのいずれからでも起動可。
Legacy BIOS、UEFIのどちらで起動したかによって、パーティシ...
UEFIで起動した場合
Available disks are: wd0 wd1.
Which disk is the root disk? ('?' for details) [wd0] wd1
No valid MBR or GPT.
Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [gpt] ...
Setting OpenBSD GPT partition to whole wd1...done. ...
The auto-allocated layout for wd1 is:
# size offset fstype [fsize bs...
a: 819776.0K 1024 4.2BSD 2048 16...
b: 83090.0K 1640576 swap ...
c: 2097152.0K 0 unused ...
d: 930704.0K 1806784 4.2BSD 2048 16...
e: 263024.0K 3668192 4.2BSD 2048 16...
i: 480.0K 64 MSDOS ...
Use (A)uto layout, (E)dit auto layout, or create (C)usto...
Legacy BIOSで起動した場合
Available disks are: wd0 wd1.
Which disk is the root disk? ('?' for details) [wd0] wd1
No valid MBR or GPT.
Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [whole...
Setting OpenBSD MBR partition to whole wd1...done.
The auto-allocated layout for wd1 is:
# size offset fstype [fsize bs...
a: 800.6M 64 4.2BSD 2048 16...
b: 81.1M 1639616 swap ...
c: 2048.0M 0 unused ...
d: 908.9M 1805824 4.2BSD 2048 16...
e: 256.9M 3667232 4.2BSD 2048 16...
Use (A)uto layout, (E)dit auto layout, or create (C)usto...
***fdisk [#ff75d474]
パーティションのメンテナンスツール[[fdisk(8)>https://man....
MBRで初期化
# fdisk -i wd1
Do you wish to write new MBR and partition table? [n] y
Writing MBR at offset 0.
# fdisk wd1
Disk: wd1 geometry: 520/128/63 [4194304 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: ...
--------------------------------------------------------...
0: 00 0 0 0 - 0 0 0 [ 0: ...
1: 00 0 0 0 - 0 0 0 [ 0: ...
2: 00 0 0 0 - 0 0 0 [ 0: ...
*3: A6 0 1 2 - 519 127 63 [ 64: ...
GPTで初期化
# fdisk -i -g wd1
Do you wish to write new GPT? [n] y
Writing MBR at offset 0.
Writing GPT.
# fdisk wd1
Disk: wd1 Usable LBA: 64 to 4194240 [4194304 Secto...
#: type [ start...
--------------------------------------------------------...
3: OpenBSD [ 64...
パーティションの詳細を見る
↓
# fdisk -v wd1
Primary GPT:
Disk: wd1 Usable LBA: 64 to 4194240 [4194304 Secto...
GUID: 09d92128-d884-40f8-9e17-a606721cd8c7
#: type [ start...
guid name
--------------------------------------------------------...
3: OpenBSD [ 64...
376b4152-9c45-4d7a-8392-5f0f3e015d51 OpenBSD Area ...
Secondary GPT:
Disk: wd1 Usable LBA: 64 to 4194240 [4194304 Secto...
GUID: 09d92128-d884-40f8-9e17-a606721cd8c7
#: type [ start...
guid name
--------------------------------------------------------...
3: OpenBSD [ 64...
376b4152-9c45-4d7a-8392-5f0f3e015d51 OpenBSD Area ...
MBR:
Disk: wd1 geometry: 520/128/63 [4194304 Sectors]
Offset: 0 Signature: 0xAA55
Starting Ending LBA Info:
#: id C H S - C H S [ start: ...
--------------------------------------------------------...
0: EE 0 0 2 - 532610 4 4 [ 1: 4...
1: 00 0 0 0 - 0 0 0 [ 0: ...
2: 00 0 0 0 - 0 0 0 [ 0: ...
3: 00 0 0 0 - 0 0 0 [ 0: ...
#
***installboot [#nd59602a]
OpenBSDでは、ブートローダの書込みに[[installboot(8)>https...
-対象ディスクがMBRで区画分けされている場合、PBRと/bootを...
# mount /dev/wd1a /mnt
# installboot -r /mnt wd1 /usr/mdec/biosboot /usr/mdec/b...
↑ ↑
PBR secondary l...
# umount /mnt
-対象ディスクがGPTで区画分けされている場合、EFIアプリケー...
# installboot wd1
**河豚板での実装
***配布物
-ISO版は変更しない。
-img版は、以下のように対応する。
--i386版は、Legacy BIOS/MBRにする(UEFIアプリケーションが...
--amd64版は、Hybrid MBRとし、Legacy BIOS/UEFIのいずれでも...
--arm64版は、UEFI/MBRにする(オリジナルのOpenBSD/arm64と同...
***usbfadm [#v5311047]
[[usbfadm (USB Flashdrive ADMinistration tool)>https://gi...
実際はUSBメモリに限らず、ストレージデバイス全般で使用可
用途
:syncコマンド|TMPFS内のデータをUSBメモリに保存する~
読み出しは次回起動時に「起動モード3」を指定する。
:newdriveコマンド|LiveUSB版の河豚板を新規作成する~
LiveUSB版河豚板のディスクイメージを作成する
UEFI/GPT対応として、newdriveコマンドに
-起動方法としてLegacy/BIOS and/or UEFIを指定出来るように...
-パーティショニングとしてMBR and/or GPTを指定出来るように...
#ref(FuguIta.png,wrap,around,right,,50%)
河豚板のパーティション構成
-EFI sys ... UEFIブートの際に必要 (Legacy BIOS、データ保...
-OpenBSD Area
--a
---河豚板のファイルツリー(実際にはlndirを使ってtmpfsにマ...
---デバイスをファイル保存用のみに使う場合は不要
--d
---usbfadmを使ってTMPFS内のデータをUSBメモリに保存する場...
-FAT ... ユーザの指示がある場合、ディスクに空きがあれば作成
Hybrid MBRを用い、かつパーティションを全て作成する場合、...
#clear
***プラットフォーム依存部 - 組み合わせとデフォルト [#debb...
「プラットフォーム毎の対応表」を見るとわかるように、ブー...
さらに、ユーザが「データ保存のみ」を選択した場合はブート...
|CENTER:|CENTER:|CENTER:|CENTER:|CENTER:|c
| |Legacy BIOS|UEFI |Hybrid|...
|BGCOLOR(#e0e0e0):MBR |i386, amd64|amd64, arm64|N/A |...
|BGCOLOR(#e0e0e0):GPT |N/A |amd64, arm64|N/A |...
|BGCOLOR(#e0e0e0):Hybrid|N/A |N/A |amd64 |...
|>|>|>|>|CENTER:BGCOLOR(#d0d0e0):プラットフォーム毎の対応...
-i386はEFIアプリケーションが供給されていないため、UEFI起...
-arm64はU-BOOT起動のため、Legacy BIOS起動不可
この複雑さを緩和するため、今回の改修では/usr/fugutia/etc/...
例えば、i386の場合、このファイルに~
disable_uefiboot=Yes
などと記述することで、UEFI起動を選択肢からはずせるように...
一方arm64の場合、Legacy BIOSでは起動できないので、
disable_legacyboot=Yes
となる。
またarm64の場合は以下の理由から、さらなる処理が必要となる。
-基本はUEFI/MBRの構成だが、MBRブートフラグとUEFI Sysのパ...
-OpenBSD/arm64はHDMI出力が実装されておらずシリアルコンソ...
--FuguIta/arm64では、インストール作業の敷居を下げるため、...
--そのため、FuguIta/arm64は他のプラットフォーム用と異なり...
arm64のusbfadmでnewdriveを実行してリマスタリングを行う場...
--よって、新しいusbfadmでは、newdriveコマンドの実行の最後...
***Hybrid MBRの作成 [#j43a6d35]
[[OpenBSDでのUEFI実装>#k481c6c6]]で説明したように、OpenBS...
今回のUEFI対応では、以下のような方法でHybrid MBRを実装し...
#ref(mkHybrid.png,wrap,around,left,,50%)
-1. ディスクをMBRで初期化する ... fdisk -i
-2a. パーティションを作成し、newfs, newfs_msdosを行う
-2b. installbootを実行する ... PBRと/bootが書き込まれる
-2c. MBRをddで吸出しファイルとして保存しておく
-3. ディスクをGPTで初期化する ... fdisk -i -g
-4a. MBRと同じ構成でGPTパーティションを作成する
-4b. installbootを実行する ... EFIアプリケーションが書き...
-4c. 保存しておいたMBRをddでprotective MBRに上書きする
#clear
**開発環境 [#vf676e5a]
***初期 [#if1cdd2c]
#ref(QEMU.png,wrap,around,right,,50%)
開発の初期段階では、プロセッサエミュレータ[[QEMU>https://...
-最初は、手動でfdiskなどを動かして挙動を調査したり、動作...
-Legacy BIOSとUEFIを頻繁に切り替えて作業をするため、実ハ...
QEMUは、デフォルトではLegacy BIOS (SMBIOS)として動作する。~
UEFI起動を行うためには、-biosオプションで[[OVMF (Open Vir...
#clear
Legacy BIOS起動
# qemu-system-x86_64 -m 512 -hda install64.fs -hdb testh...
UEFI起動
# qemu-system-x86_64 -m 512 -hda install64.fs -hdb testh...
パーティション操作を行う対象となるディスクイメージファイ...
これにより、[[vnconfig(8)>https://man.openbsd.org/vnconfi...
***中期以降 [#ecebd6df]
usbfadmが一通り動作するようになってからはプラットフォーム...
手順は概ね以下のとおり;
#ref(RealDev.png,wrap,around,right,,50%)
-河豚板のソースコードはfuguita.org上のCVSリポジトリで管理...
-各プラットフォームの開発/テスト機はworking copyをNFSマウ...
→開発者は一人だけなので、同じファイルを同時に編集すること...
-すべてのプラットフォームでの作業が終了したら、fuguita.or...
-プラットフォーム毎のビルドマシンでcvs updateを行い。更新...
-リリースの動作テストがOKなら、完成したリリースをMirror O...
-mirror.ginzado.ne.jpとlivecd-mirror.ebug.jpの2つのミラ...
この時点で河豚板が一般公開されたことになる。
-一方、CVSリポジトリは、git cvsimportによりGitに変換され...
#clear
**その他諸々
***OVMFの不具合(?)
開発当初、OVMFを使ってQEMUを起動したところ不具合が発生。
-/bootが河豚板のカーネルを読み込んでいる途中で、読込みが...
-発生するのは河豚板のカーネルのみ、OpenBSDのGENERICカーネ...
何回か試行を行っていたところ正常に起動し、その後現象の再...
***installbootの不具合
installbootは、EFIアプリケーションのインストールに失敗す...
# installboot -v -r /mnt vnd0 /fuguita/usr/mdec/biosboot...
Using /mnt as root
installing bootstrap on /dev/rvnd0c
using first-stage /fuguita/usr/mdec/biosboot, second-sta...
newfs_msdos: /dev/rdfe15236c496b5df.i: No such file or d...
installboot: unable to mount EFI System partition: No su...
newfs_msdosによりEFI Sysのパーティションをフォーマットす...
UEFIのセットアップはEFI SysのパーティションをFATでフォー...
----
#topicpath
Page: