2017年2月26日 星期日
VirtualBox 安裝win10及CentOS7 dual boot
目標:
1. 先在VirtualBox上進行multi boot模擬,然後在預載Win10的筆電上安裝 CentOS7
2. 確實了解安裝細節,以期能解決筆電實機和虛擬機環境不同所造成的可能的未知問題
重點:
1.使用GPT partition table
因為目前主要都是用GPT,而且目標筆電本身預載Win10也是用GPT
2.硬體電源控制相容性
因為Linux並不見得完整支援特製的硬體的電源管理功能(筆電或OEM機種)
(鳥哥)
http://linux.vbird.org/linux_basic/0157installcentos7.php#centos_9
3.關閉快速啟動(在 windows下設定)和禁用安全啟動(在BIOS或UEFI設定)
(文件連結)
https://read01.com/jND7m.html
實作步驟:
1. 開啟VirtualBox 的UEFI
2. 安裝win10企業版試用
由MS網站直接下載iso檔,直接掛載iso安裝
3. 安裝CentOS7
由官方網站下載everything版本的 iso 檔(CentOS-7-x86_64-Everything-1511.iso),同樣直接掛載iso安裝
(CentOS安裝教學: 鳥哥)
http://linux.vbird.org/linux_basic/0157installcentos7.php
3. 安裝完後重開機可以在開機選單選擇作業系統
假如選擇啟動win10,之後重開機就沒有選單直接進入win10,CentOS7的bootloader儲存在UEFI的設定似乎被修改掉了,也有可能是CentOS7原本在Win10的ESP有做設定調整,但是Windows Boot Manager 自己在開機時又修改回原本的
假如選擇啟動CentOS,那就沒什麼問題
這樣直接安裝記得應該會產生兩個ESP,一個是原本 win 10的,一個是CentOS的
==以下開始為重新安裝grub2於win10建立的ESP,相當於CentOS無法啟動的手動救援==
4. 掛載CentOS7安裝光碟,開機按住F12進入UEFI,設定開機順序為CD/DVD優先
5. 進入CentOS7安裝選單,看最下面的說明,按'c'進入grub shell
6. 使用指令前先按TAB,列出所有可用指令
因為很多參考文件的指令都是grub legacy的指令,或是比較舊的grub2指令,,CentOS7內附的是比較新版的grub2,詳細的說明要直接去看隨附的manual
(grub2官方文件,但是指令是舊的,具參考價值)
https://www.gnu.org/software/grub/manual/grub.html
7. 輸入指令"ls" 列出所有的partition
8. 輸入 "ls (hd0,gptX)/" 指令
指令中的"gpt"可省略,X代表partition編號,可以直接讀取支援的檔案系統的partition內容,用來確認root和boot資料夾的位置在哪一個partition,還有確認ESP是哪個partition
(grub2參考文件,也是舊指令)
https://www.openfoundry.org/tw/foss-programs/9267-linux-grub2-fixing
9. 直接使用grub 手動將CentOS7開機
指令範例
linuxefi (hd0,gpt6)/vmlinuz-3.......... root=/dev/sda7
(設定linux kernel路徑,還有initramfs的root參數)
initrdefi (hd0,gpt6)/initramfs..........img
(設定initramfs.img的路徑)
boot
(啟動作業系統)
10. linuxefi指令(新指令)是指定linux kernel的位置
通常linux kernel 是在boot底下,檔名後面空一格,接root的裝置檔案partition位置,開機時似乎是被當成initramfs(initial ram filesystem)的參數輸入,所以這邊是用/dev/sda7這種Linux裝置檔案方式表示,而不是(hd0,gpt7),沒有指定root的話,開機就會halt,整個就會當掉
11. initrdefi指令(新指令)是指定linux 的init ram filesystem的映象檔案
開機時的early userspace,通常也是在boot底下
(initramfs文件)
https://wiki.archlinux.org/index.php/Arch_boot_process#initramfs
12. boot指令是啟動作業系統
假如前面linuxefi和 initrdefi沒先設定的話,會有錯誤提示
13. 在操作grub shell時盡量不要做多餘的行為
因為有可能導致不可預期的開機失敗,例如剛開完機,welcome to CentOS7,然後馬上就自動開始準備關機
14. Linux開機後,將UEFI的ESP掛載上/boot/efi,ESP內含windows boot manager(windows bootloader)
(掛載教學)
http://linux.vbird.org/linux_basic/0230filesystem.php#mount
15. 重新安裝grub2
連上網路,刪除grub相關設定檔後,使用yum進行reinstall grub的動作,這會在ESP內安裝grub2的bootloader 檔案,然後輸入指令grub2-mkconfig進行開機進入點entry的自動偵測和設定,grub2會自動把win10的chain loading設定好,並加進grub2的boot menu
(reinstall grub2教學)
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Reinstalling_GRUB_2.html
16. 實際使用結果
要從win10切換到CentOS7,必須要完全關機後再重開,才會進入grub2的boot menu,假如只是直接重新開機的話,再開機後會直接進入win10,所以可以觀察到win10對於"關機"和"重新開機"在底層所進行的步驟是有些微不同
17. 避免這個問題
必須到win10內使用bcdedit這個內建工具來將windows設定的bootloader 切換到grub2,但是不確定會產生什麼副作用
(bcdedit教學)
http://askubuntu.com/questions/235567/windows-8-removes-grub-as-default-boot-manager
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言