rabbit51

it's since Nov.30 2005
May.29 2014, transferred from broach

VAIO Pro 13(VJP131B01N) Windows10とDebian10のdual boot設定

2020-08-23 08:00:00 | PC
VAIO Pro 13(VJP131B01N)のSSD不具合と交換」でWindows 10 proをインストールした。 Windowsインストール前にDebian10をインストールしていたため何の問題も無くDebian10の追加インストールが出来るはずだった。 異なる点は、biosのbootモードを「Legacy(MBR)」から「UEFI(GPT)」に変更した事とセキュアブートを加えた事(Debian10はセキュアブートに対応)。
「F3 or F4 + 電源ON」で「VAIO レスキューモード」を起動。「BIOS設定を起動」で再確認

[Security] Secure Boot = Enable
[Boot] Boot Mode = UEFI
[Boot] External Device Boot = Enable
[Boot] Select 1st Boot Priority = External Device
[Boot] Select 2nd Boot Priority = Internal Hard Disk Drive

(1)Debian
Debian 10(Buster)のLiveイメージからインストールを行う。 VJP131のWiFIは、Intel Dual Band Wireless AC7260。ドライバーは、「Non-free Firmware」なので「unofficial image」から取得した。
debian-live-10.5.0-amd64-gnome+nonfree.iso
USBにisoイメージをコピーし、USB起動でdebian-10.5.0を起動。
250GbのSSDにWindows10
--(#1:EFI(FAT32)100Mb)
--(#2:MS予約16Mb)
--(#3:Win10(NTFS)232Gb)
--(#4:WinRE(NTFS)548Mb)
からWin10領域を100Gb減らし、Debianに100Gbを割当て、インストール。

インストール条件設定後、インストール中にエラー発生
ディスプレーマネージャが選択されていません

debian-live-10.0.0-amd64-gnome+nonfree.iso」から
debian-live-10.4.0-amd64-gnome+nonfree.iso」まで
インストール出来る事を確認。10.5.0で何か変わったのか。。。原因不明。
「debian-live-10.4.0」でインストールする事にした。

(2)dual bootできない・・・
Debianインストール後、シャットダウン、Debian-Live(USB)を外す、再起動で「Windows10」が起動する。「GRUB」が起動しない。

(3)Debian-Live(USB)から起動させる
Debian-Live(USB)で起動し、GRUBの自動起動前に「c」でコマンドライン


コマンドライン入力


「GRUB> ls」でディスクパーティションを表示
「hd0」は、Debian-Live(USB)、「hd1」は、VJP131の内臓disk
「GRUB> ls (hd1,gpt1)」でディスクパーディション情報を表示
(英語キーボードなので「(」=「shift+9」、「)」=「shift+0」)
「GRUB>ls (hd1,gpt1)/」、「GRUB>ls (hd1,gpt1)/efi/debian」でディレクトリを確認
「GRUB>configfile (hd1,gpt1)/efi/debian/grub.cfg」でインストールされたdiskのGRUBを起動

GRUB画面から自動起動しログイン画面が表示されれば、VJP131内臓diskのdebian起動が確認出来る。

(4)GRUB起動設定
DebianのUEFI対応について調べた。
通常のUEFI起動では、BIOS不揮発性メモリに設定された「起動リストと起動順位」に従い、ESP(EFI System Partition)に設定された、OSベンダー毎のブートローダーで起動される。取外し可能なデバイスからの起動では、デバイス中のFAT32ファイルシステムにある「EFI/boot/bootx64.efi(CPU architecture毎に異なる)」ブートローダが使われる。また、UEFI設定でブートローダが見つけられない場合にも使われる。

UEFIには、バグ回避のため本来の仕様と異なる回避対応が存在しているらしい(Windows OSが確実にインストール出来るような)。

boot orderを変更してみた
Debian-Live(USB)からVJB131のDebianを起動し「efibootmgr」で現在の状態を確認する

ブート順位は、「9:USB/0:Windows/6:Windows/7:Windows/8:Windows/1:Debian」
「BootNext 1」なので次回再起動時にDebianが起動するはず。
念のためブート順位を「9,0,6,7,8,1」から「9,1,0,6,7,8」に変更する


再起動するが、「Windows10」が起動。。。

「起動リスト」内のdebianエントリーを見つけられないケースに対応するため
「/EFI/boot/bootx64.efi」を「/EFI/boot/bootx64.efi.org」に変更
「/EFI/debian/shimx64.efi」を「/EFI/boot/bootx64.efi」にコピー
再起動するが、「Windows10」が起動。。。

(5)VAIO Pro 13 Dual bootの調査
(a)「dual boot vaiopro11 w10/debian10」[(b)(c)を纏めた情報]
(b)「VaioPro11 Win /Fedoraデュアルブート
(c)「VAIO Pro 11でDebian GNU/Linuxをインストール
(d)「VAIO Pro 13でGRUBをWindowsからインストールする話
これらの記事からVAIO Pro 13(VJP131)のBIOSは、UEFIの「Windows OSブートローダ」に直接制御を渡してしまうようだ。
VAIO PRO 11にUBUNTU14.04を入れるときのメモ1」では、Linuxの単体インストール事例だが、Windows OSがインストールされていなくてもWindowsOSブートローダへ制御を渡しているようだ。「Legacy(MBR)」では、このようなことは無かった。

(a)(b)(c)では、Windows OSのブートローダ「bootmgfw.efi」をfile名変更せずにGrubのブートローダ「grubx64.efi」内容で置きかえGrubを起動する。Windows OSは、Grubメニューからオリジナルの「bootmgfw.efi」を起動する設定で回避する。Windows Updateなどで「bootmgfw.efi」が再設定されることがある(Grub起動からWindowsOS起動に戻る)。
(d)は、Windows OS起動専用のEFIシステムパーティション(ESP)を追加し、Windows Updateなどで「bootmgfw.efi」が書き換えられてもGrub用のブートローダが書換えられない構成としている。非常にユニーク。この方法を設定する事にした。

(6)VAIO Pro 13 Dual boot UEFI起動設定

(あ)(5)-(d)を参考に追加ESPを作成
内臓ディスクは、全て使用されているので
・Windows本体がインストールされたパーティション#3を50Mbytes縮小して空き領域を作る
・「管理者モード・コマンドプロンプト」「Diskpart」で空き領域をESPへ
「select disk 0」「list part」するが空き領域が表示されない。
表示されないが、未使用領域が確保されているはず。
「create partition efi」「list partition」を実行、
パーティション#4が生成されたのを確認(選択状態も確認)

「format fs=fat32 label=WINESP」「assign letter=w」
「list volume」で確認して「exit」


「管理者モード・コマンドプロンプト」「bcdboot C:\windows /l ja-jp /s W: /f UEFI /addlast」
でEFIファイルシステムとブートエントリを生成
EFIシステムパーティションに生成されたディレクトリファイル


「bcdedit /enum firmware」でwindowsの起動が新しく作成したパーティション#4のESPになっているのを確認


これで、Windowsは、#1パーティション(ESP)100Mbyteと#4パーティション(ESP)50Mbytesから起動可能となるが、Debian10は、起動できない。
Debian-Live(USB)から起動し、VJP131上のDebianを起動する

「efibootmgr」と「efibootmgr -v」でUEFIの起動順位とエントリーを確認する


(い)VJP131 BIOSのUEFIブート直接起動対策
UEFIの起動順位で指定出来ないVAIOのWindowsブートローダに対応するため、#1パーティション(ESP)の「/EFI/Microsoft/Boot/bootmgfw.efi」ファイルを「/EFI/debian/shimx64.efi」で上書きコピーする。ファイル名を変更せずに内容を変更する(Debian上で実施)。
「shimx64.efi」は、UEFIのCA認証済み。「bootmgfw.efi」以外のファイル、ディレクトリは、全て削除(起動確認後に削除した)。
--------
sudo cp /boot/efi/EFI/debian/shimx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
sudo grub-install
sudo update-grub
-------- 
UEFI起動順位と起動リスト、ESPファイルシステム内容、SecureBootの状態

「/EFI/Microsoft/Boot/bootmgfw.efi」以外整理されている。
「mokutil --sb-state」でSecure Bootされている事が確認できる。

UEFIに装備されたCA証明書


(う)GRUBメニューに表示される不要なメニュー非表示
GRUBの起動メニューにパーティション#1のWindows起動メニューが生成されるので、これを除外する設定を行う。
現在は、パーティション#1の起動メニューが検出されないが、設定を残してある。検出されない理由は、不明。
「/etc/default/grub」に「GRUB_OS_PROBER_SKIP_LIST」を設定する。除外したいパーティションの「<uuid>@<EFI FILE>」をスペース区切りのリストで設定する。「<uuid>」「<EFI FILE>」は、下記のコマンドで確認する。
--------
<uuid>
sudo grub-probe --target=fs_uuid --device /dev/sda1
<EFI FILE>
sudo os-prober
--------
/etc/default/grub
GRUB_OS_PROBER_SKIP_LIST="<uuid>@/EFI/Microsoft/Boot/bootmgfw.efi"
--------
uuid、EFI FILE表示例

「/etc/default/grub設定内容


(7)その他
・「bootmgfw.efi」を「shimx64.efi」で置換えファイル名が代わってもSecure Bootで認証される。コードは、両方ともUEFI CA署名されている。ファイル名は、署名対象外のようだ。良いのだろうか。
・Windowsのbcdeditで「ファームウェアのブート マネージャ」と「Windowsブート マネージャ」の存在が状況を複雑にする(WindowsOSだけなら問題ないのかも)。
・「bcdedit(WindowsOS)」と「efibootmgr(Linux)」でUEFIのエントリーIdentifierが異なる。
・「Windowsブート マネージャ」の「displayorder」に複数エントリーが設定されるとWindowsOS選択が表示される。
・Secure Bootでブートローダーが認証されないと起動出来ないが、エラー表示が無い。。。起動出来ない原因が不明。起動出来なくなったら、まずSecure Boot オフで確認。

 



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« VAIO Pro 13(VJP131B01N)のSS... | トップ | フレッツ光NGNのIPv6(IPoE)... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

PC」カテゴリの最新記事