
今回はWindowsタブレットのT100TAをモデルに
リリースされているNetBSD8.0をUEFIで動かしてみました。
UEFI関係はまだ手動インストールなので、
作業は必要ですがUEFI32bit、64bit両対応なので
だいたい殆どの機種で動くはずです。
勉強を兼ねて是非試してみましょう。
●NetBSD8.0とUEFI
UEFIの動作には複数の条件が必要です。
ここで対象となる機種はWindows8以降のPCです。
CoreiシリーズはLegacyBIOSでも動作しますが、
AtomなどWindowsタブレットはUEFI動作が必須です。
NetBSDは公式でUEFI32bitとUEFI64bitに両方対応しています。
UEFIのROM領域に書き込みが必要になります。
詳しくはこちらの資料をご一読を。
必要条件として
・ストレージにEFIパーティション(FAT32)が必要
・EFIパーティションに/EFI/bootフォルダを作成し、
ディスクブートローダーのbootx64.efiかbootia32.efiが必要
・ディスクブートローダーのbootx64.efiかbootia32.efiから
設定ファイルのデータが必要。標準では/boot.cfgがあります。
・efibootmgrなどでUEFIのNVRAMフラッシュROM領域に
ディスクブートローダーとディスク名のPathを書き込む必要
・例外としてUSBメモリなど外部ストレージはNVRAMに書き込み不要
外部ディスク単体を識別する仕組み
が必要です。
UEFI関係のインストールは手作業が必要です。
標準イメージが対応しているのは、ブートと既存パーティションへの書き込みです。
手作業で簡単に出来ますので問題ないかと。
課題はストレージのWindowsなどを消さないよう自己責任注意w
●インストールUEFIイメージの書き込みと起動
まずはNetBSD公式HPから8.0のUEFIイメージをダウンロード。
ddコマンドかRawrite32でUSBメモリに焼き込みます。
焼いたらUSBメモリをHUBかなにか使いつつ本体と接続して起動
まずはT100TAをESCかF2を押してUEFI(BIOS)を起動させて
セキュアブートをOFFにします。
その後一番右端のタブに移動してUSBメモリをOverrideから起動。
NetBSDのブートしたらそのまま起動。
ただしT100TAを含むBay-Trail機種では
GPUが切り替わるタイミングでBlackscreenになるので
画面が表示出来なくなります。
i915のGPUをOFFにします。
4)を選択しコマンドラインから
userconf disable i915drmkms
boot
と入力して起動すると画面が表示されるはずです。
タイポ注意。
boot.cfgに追記しておくと楽です。
ブートローダーが起動しましたら英語を選択し
Xを押してターミナルに落ちます。
ここからは公式HPどおりにEFIパーティションを作成し、
bootx64.efiとbootia32.eifファイルを/EFI/boot/にコピーします。
https://wiki.netbsd.org/Installation_on_UEFI_systems/
まず既存のディスクからNetBSDのパーティションを作る必要があります。
sysctl hw.disknames
調べると、
ld0:SSDディスク
wd0:HDDディスク
sd0:USBディスク
と出てくるはずです。
コレを消して作り直します。
dk0とdk1、dk2はディスク内パーティションです。
dkctl ld0 listwedges
とするとld0、SSD内部のパーティションを表示します。
消さないようにご注意を。
パーティションサイズの変更などは多分出来ないので、
UbuntuなどからGpartedで編集してからインストール作業しましょう。
自己責任で。
覚悟が決まったらパーティションを削除します。
勿論元には戻せません。
gpt destroy ld0
新しくパーティションを作成し直します。
ここでディスク名とパーティション名に注意
gpt create ld0
gpt add -a 2m -l "EFI system" -t efi -s 128m ld0
gpt add -a 2m -l NetBSD -t ffs -s 21g ld0
gpt add -a 2m -l swap -t swap ld0
作成されるパーティションの容量は各自好きな容量を設定しましょう。
基本では21gになっていますが、28gくらいは大丈夫かと。
作成したパーティションを確認。
gpt show ld0
パーティションが表示されます。
1:dk0
2:dk1
3:dk2
です。紛らわしいですw
ついでにrdk0もdk0と同じです・・・
他のパーティションを残してあるとこの数値が変わります。
ご注意を。
EFIファイルシステム設定(FAT32)
newfs_msdos /dev/rdk0
HDDをマウント(起動ディスクとルートフォルダはUSB)
mount -t msdos /dev/dk0 /mnt
mkdir -p /mnt/EFI/boot
ブートローダー bootx64.efiとbootia32.efiをコピー
cp /usr/mdec/*.efi /mnt/EFI/boot
アンマウント
umount /mnt
Swap作成
newfs -O 2 dk2
インストール画面に戻る
exit
ここまでで一連のEFIパーティション作成です。
後は通常インストールに戻ってNetBBSDパーティションに
ファイルをインストールしましょう。
ただご注意なのが、UEFIエントリのNVRAMにまだ書き込んでいません。
当然、SSDからブートしませんのでご注意を。
外部USBメモリに書き込んだ場合はOKですけど。
●UEFIのNVRAMに焼き込み。efibootmgr
作成したパーティションの情報をUEFIエントリに書き込む場合、
efibootmgrが必要ですが、まだNetBSDにポートされていません。
UbuntuなどのLiveイメージに入っていますので
そちらを起動して使用します。
Ubuntuの場合はレスキューディスクの機能もあって
ほぼ、efibootmgrが入っています。
今回はlubuntu17.10のISOイメージを
rufusで焼いて使用しました。
UEFI32bitタブレットの場合は更にbootia32.efiを
/EFI/boot/にコピーする必要があります。
勿論、UbuntuにもBlackscreenバグありますのでご注意。
grubのオプションで「E」を押して編集画面になったら、
quietの前にnomodesetかi915.modeset=0を追記してGPUをOFFにしましょう。
まずUbuntuのイメージをISOに焼いたら
USBから起動します。
Blackscreenになる場合は、
grubオプションを開いてquietの前にnomodesetを追加して
F10で起動させます。
まあ端末さえ起動できれば問題ないです。
端末から
findmnt
パーティション名を調べましょう。
Gpartedを使っても良いです。
sudo su
efibootmgr -c -d /dev/mmcblk2p1 -p 1 -L “NetBSD 8.0” -l “\EFI\boot\bootx64.efi”
\マークはLive起動が英語モードでは表示されないので
バックスラッシュに置き換えましょう。
efibootmgrはこんな感じ
・efibootmgrの概略説明
-c 書き込み
-d /dev/mmcblk2p1 ←Ubuntuから見たSSD
-p 1 ←パーティション名数(dk0の事)1つ目のパーティション
-L “NetBSD 8.0” ←BIOS表示名
-l “\EFI\boot\Bootx64.efi”
←NetBSDブートローダーUEFI64bit版
UEFI32bit版はbootia32.efiを指定
カタログOSがWindows10(32bitか64bit)の表示で識別します。
-p 1に注意。1つ目のEFIパーティションの事です。
-Lは好きな名前で。
まあ間違えたら消して書き直せば良いんです。
そんなに大きな問題はありませんはい。
僕は-p 1が分からなくて5回位書き直しましたw
これが正しく焼かれるとUEFIの画面でエントリが表示されます。

●再起動
これらが無事終了すると
UEFIエントリ画面にNetBSDが表示されます。
選択するとそのままブートして起動します。
もしBlackscreenになる時はまたオプションを追加しましょう。
●まとめ
UEFI32bit、64bitのWindowsタブレットで
NetBSD8.0が無事起動しました。
他のUEFIマシンも同じはずです。
まあバグが出るかもしれませんが報告して、と。
是非使ってみましょう。
【NetBSDの最新記事】
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- NetBSD コマンドスキルチェック 作..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..
- 世界の全ての機器を制覇するOS NetB..