剛買的thinkpad t430u 64位的筆記本,發現裝Linux是一件非常麻煩的事,以前裝個linux系統,配置雙啟,1個小時就能搞定,而這一次我連裝centos6.4帶配置雙啟,花了三個星期。雙啟后成功后又裝了Arch,現在筆記本是三系統,三周的時間里,筆記本重啟不下300次。我也不知道能不能成功,所以事先,并沒有做詳細的筆記。所以下面,只是大致的記錄。
開機按F1進入bios=>security=>secure boot
筆記本不同,可能secure boot的配置不同,將其disabled掉,要不然,選擇U盤啟動,光盤啟動都無效,報沒有權限。
bios=>startup=>uefi/legacy boot
啟動優先級里面有三個選擇,
1,efi only(注釋:默認)
2,both (注釋:二種方式都可以)
3,legacy only(注釋:grub1)
這里說的啟動根選擇U盤啟動,光盤啟動不一樣。這里的啟動是,多系統安裝好了,而選擇的啟動模式。而U盤啟動,光盤啟動這種情況是系統還沒有裝時選擇的安裝啟動。我的本子,按F12可以選擇U盤啟動,或者光盤啟動。
為什么要進行這一步,如果不改,默認是裝在第二塊硬盤上面的,也就是efi的默認啟動盤,安裝centos時:
win8裝centos
根本沒有“更換設置”這個按鈕,并且引導程序只能安裝在/dev/sda2上面,選中的情況下,centos6.4 64位,根本安裝不成功,所有包安裝完后,配置時提示報錯,
an unhandled exception has occurred.this is most likely a bug.plese copy the full text of this exeception and file a detailed bug report.against anaconda at http://bug.centos.org/
讓提交bug到centos,這個有點坑爹。
將efi only改成both后,重新安裝,“更換設置”就會出現,并把引導程序裝到centos所在的分區,這樣centos可以順利裝完,怎么安裝網上太多,在這兒就不哆嗦了。
用easybcd和純grub1實現雙啟根本不可能,大家就不要浪費時間了。網上有說easybcd2.2可以實現,我試過無數次不行。
在啟動優先級里面選擇,legacy only,保存重啟,久違的centos界面出現了,那叫一個激動。下方向鍵選擇others,Windows進不去。總之還是有點高興的,centos裝成功了,我信心大增,通過grub1,我想能啟動win8,然后我就開始嘗試用grub1啟動win8,又試了不知道多少次不行。我想完全靠grub1啟動是不可能了
1,啟動優先級里面,選擇legacy only,進入到centos
2,下載三個文件,BOOTX64.conf BOOTX64.efi splash.xpm.gz
http://mirrors.163.com/centos/6.4/os/x86_64/EFI/BOOT/ 或者是從iso鏡像中解壓也行。
3,掛載efi的啟動盤
mkdir /mnt/usb mount /dev/sda2 /mnt/usb cd /mnt/usb mkdir image cp /boot/initramfs-2.6.32-358.el6.x86_64.img ./image/initrd.img cp /boot/vmlinuz-2.6.32-358.el6.x86_64 ./image/vmlinuz
在efi啟動盤的根目錄也就是/dev/sda2上面,建一個image文件夾,把裝好的cenots內核考過來,我為什么要這么干呢,因為BOOTX64.conf這個文件就是這么干的。
[root@localhost image]# ll /mnt/usb/image/ 總用量 26812 -rwxr-xr-x. 1 root root 16532286 6月 1 18:11 initrd.img -rwxr-xr-x. 1 root root 3089184 6月 1 19:11 initrd.img-arch //這是arch的,裝了三系統 -rwxr-xr-x. 1 root root 4043888 6月 1 18:10 vmlinuz -rwxr-xr-x. 1 root root 3778496 6月 1 19:10 vmlinuz-arch //這也是arch的,
4,這一步建redhat目錄是多余的,我是按照操作時候的步驟來寫這篇博客的
[root@localhost EFI]# mkdir /mnt/usb/EFI/redhat 為什么要redhat,而不是centos呢,裝好的centos,/boot/efi/EFI(注:這個目錄在系統的boot下面,不在sda2上面),這個目錄下就有redhat,后來我才知道,這個目錄沒用。 將上面的三個文件BOOTX64.conf BOOTX64.efi splash.xpm.gz,copy到/mnt/usb/EFI/redhat目錄下面 看一下我的配置: [root@localhost redhat]# cat BOOTX64.conf #debug --graphics default=1 #splashimage=/EFI/BOOT/splash.xpm.gz timeout=5 #hiddenmenu title CentOS 6.4 kernel /image/vmlinuz ro root=/dev/sda7 initrd /image/initrd.img title Windows8 chainloader /EFI/microsoft/Boot/win8.efi title ArchLinux kernel /image/vmlinuz-arch ro root=/dev/sda9 initrd /image/initrd.img-arch
上面的win8.efi是bootmgfw.efi的備份,后來我把bootmgfw.efi也替換了,下面會提到的,這東西啟動win8用的。
重啟F1,進bios,把啟動優先級設為efi only,保存重起進grub grub> configfile /efi/redhat/BOOTX64.conf 注意:grub下面是小定的,linux系統下是大寫的,最好是用tab鍵提示。然后三個啟動選項就出現了,我選了一下,都是可以進的,那叫一個激動啊,離成功不遠了。 grub> chainloader /efi/Microsoft/Boot/win8.efi win8也是可以進的 只要啟動時能讓EFI識別BOOTX64.conf這個文件,并讀取,就搞這定了。 然后我就開始把redhat這個目錄到處copy,發現不行,我又把BOOTX64.conf BOOTX64.efi splash.xpm.gz,這三個文件到處copy,EFI下面的每個目錄我都試了。不行。
沒辦法啊,就上google上面找efi啟動工具,看了好多,發現The rEFInd Boot Manager還是比較靠譜的。
下載地址:http://sourceforge.net/projects/refind/?source=dlp,這個是二進制版的。
該工具官方地址:http://www.rodsbooks.com/refind/ ,下載,安裝,以及使用說明都有。
安裝配置地址:http://www.rodsbooks.com/refind/installing.html#linux
下面是我的操作:
cp -r refind /mnt/usb/EFI/ cd /mnt/usb/EFI/refind rm -rf drivers_ia32 rm -f refind_ia32.efi rm -rf tools_ia32 [root@localhost boot]# ll /mnt/usb/EFI/refind/ //刪除后就是這樣子 總用量 224 drwxr-xr-x. 2 root root 4096 6月 1 17:52 drivers_x64 drwxr-xr-x. 2 root root 8192 6月 1 17:52 icons -rwxr-xr-x. 1 root root 17774 6月 1 20:55 refind.conf -rwxr-xr-x. 1 root root 17911 6月 1 17:52 refind.conf-sample -rwxr-xr-x. 1 root root 170824 6月 1 17:52 refind_x64.efi drwxr-xr-x. 2 root root 4096 6月 1 17:52 tools_x64
如果你是64的系統,就把32的刪除掉,反之就刪64的。
mv refind.conf-sample refind.conf
然后配置refind.conf,我的配置肯定不對,如果要對的話,直接是可以用refind進入centos,win8,arch的。而不是refind去調用grub來啟動
http://www.rodsbooks.com/refind/installing.html#linux中的Installing rEFInd Manually using Linux,安裝方法中,6,7這二步,沒敢做,我實在無法預測,efibootmgr -c -l EFI efind efind_x64.efi -L rEFInd,執行這個命令到底會有什么后果。
然后就在仔細閱讀文件
rename EFI/BOOT/refind_x64.efi to the name of the boot loader it's replacing—it should become EFI/BOOT/bootx64.efi or EFI/Microsoft/Boot/bootmgfw.efi. 發現有上面的東西,操作如下: [root@localhost EFI]# cp -r ./Microsoft/Boot/ ./Microsoft/Boot_bak [root@localhost EFI]# cp -r ./refind/* ./Microsoft/Boot/ [root@localhost EFI]# cd ./Microsoft/Boot/ [root@localhost Boot]# cp bootmgfw.efi win8.efi //上面提到的win8.efi就是在這兒來的 [root@localhost Boot]# mv refind_x64.efi bootmgfw.efi
先把EFI/Microsoft/Boot/這個目錄備份,這樣我不管怎么配置Boot的目錄,我可以還原,進WIN8絕對沒問題。efi啟動,會默認讀取/EFI/Microsoft/Boot/bootmgfw.efi,我的機子是這樣子的,規定死了。
refind配置不正確,無法進入任何一個系統,但是我發現refind的第二個引導項讀取到了/grub/BOOTX64.conf,并且是默認的centos的BOOTX64.conf,grub是什么時候建的我都忘了,里面是下載的原始的centos的BOOTX64.conf BOOTX64.efi splash.xpm.gz
[root@localhost refind]# cp /mnt/usb/EFI/redhat/* /mnt/usb/EFI/grub [root@localhost refind]# cd /mnt/usb/EFI/Microsoft/Boot/ [root@localhost Boot]# vim refind.conf timeout 2 default_selection 2 //將第二引導項調為默認
知道refind讀取哪個啟動文件就好辦了,把redhat下面已經配置好的文件copy到grub目錄下就搞定了。
就這樣我的三系統啟動搞定了,不過還有缺點,
第一,引導是分二步的,首先是refind引導,然后refind調用BOOTX64.conf,在通過grub來引導,之后才能進入系統。
第二,內核版本,是copy到了,efi的啟動盤上面,升級內核,也用不了,除非在重新將內核copy到sda2上面。