背景
我的機器是台老筆記本thinkpad e430c,但是bios也支持efi啟動。我並非故意折騰,而是沒有考慮到還會裝windows。如果你有計划,還是先裝windows再裝Linux,這樣可以省很多麻煩。我不知道什么時候我的硬盤分區被我換成GPT的了,如果你的是MBR,那又可以省掉很多麻煩。
裝ubuntu16.10
將系統鏡像用ultraiso寫入U盤中,然后安裝。因為硬盤上沒有數據,所以隨意分區,配置。我當時故意留下了一些分區未分配,以備不時之需。分區至少一個efi分區,一個swap分區,一個根分區。
裝win7
32位的WIN7肯定不支持GPT的,所以32位就不要折騰了。聽說GPT盤不能用ghost安裝,所以我下載了一個原版安裝方式的鏡像。聽說有的安裝鏡像不支持efi,所以大家選鏡像時需要注意一下,當然如果鏡像不支持,也有其他辦法,可以自己百度。幸好我的鏡像是支持efi的,所以不用額外的工作。鏡像搞下來了,用刻U盤還是刻光盤按自己的喜好,由於我的鏡像有3.7G,我U盤刻不下,所以選擇了光盤。
我用的鏡像:
http://www.xitonghe.com/win7/qijianban-xiazai-167.html
https://pan.baidu.com/s/1c2MH2jY
bios配置
一定要注意bios配置,我就是bios配置沒對,安裝win7時一直卡在wIn7的啟動界面,我還以為是鏡像問題,導致多刻了幾張盤。我以我機器的bios為例說明一下,其他型號的bios自己摸索。
startup -> UEFI/Legacy Boot (UEFI Only)
startup -> - CSM Support (Yes)
正確的選項就是在bios中Startup頁面的UEFI/Legacy Boot選擇UEFI Only選項,同時下面的- CSM Support選擇Yes。我說下我遇到的一些情況,剛開始我上面選擇的UEFI Only,下面選擇的No,結果現象就是安裝時卡在win7的啟動界面。后來上面選擇Both(既支持uefi,又支持legacy),結果順利進入安裝界面,但選安裝分區時提示我是GPT分區,不能安裝。
現在可以正常安裝win7了,我用未分配的空間分配了兩個區給win7,一個C盤,一個D盤。順利安裝完。重啟后就只能進入win7了,現在可以激活系統了,正版用戶忽略接下來的事。因為是GPT磁盤,所以以前各種激活工具不能用了,可以百度下“gpt分區激活win7工具”。我的用就是綠盟這個GPT磁盤win7激活工具經使用可以激活成功。
http://www.xdowns.com/soft/6/7/2015/Soft_134260.html
https://pan.baidu.com/s/1skYRZ1j
接下來是重頭戲。
找回ubuntu
重啟系統,第一步就是想辦法把grub啟動起來(ubuntu16.10用的是grub2,下面描述的時候我還是用grub這個詞),各種方法,我就是用的我前面用的那個ubuntu的安裝u盤。啟動時選擇從U盤啟動,進入選擇菜單的時候就按c,進入grub的命令行。就是黑屏幕下一個grub>提示符。
先說下我的分區情況,如下:
設備 Start 末尾 扇區 Size 類型 /dev/sda1 2048 976895 974848 476M EFI System /dev/sda2 976896 16992255 16015360 7.7G Linux swap /dev/sda3 16992256 20991999 3999744 1.9G Linux filesystem /dev/sda4 20992000 220991487 199999488 95.4G Linux filesystem /dev/sda5 220991488 781459455 560467968 267.3G Linux filesystem /dev/sda6 781459456 863379455 81920000 39.1G Microsoft basic data /dev/sda7 863379456 863641599 262144 128M Microsoft reserved /dev/sda8 863641600 976771071 113129472 54G Microsoft basic data
文件系統 1K-塊 已用 可用 已用% 掛載點
udev 3984384 0 3984384 0% /dev
tmpfs 801152 9812 791340 2% /run
/dev/sda4 97905948 7087240 85802340 8% /
tmpfs 4005744 696 4005048 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4005744 0 4005744 0% /sys/fs/cgroup
/dev/sda3 1968400 131852 1736556 8% /boot
/dev/sda1 486456 14044 472412 3% /boot/efi
/dev/sda5 274776980 69853816 190895188 27% /home
tmpfs 801148 128 801020 1% /run/user/100
在grub中(hd1,gpt3)對應着/dev/sda3,(hd1,gpt4)對應着/dev/sda4。如下幾步命令可成功引導進入ubuntu。
1. set root=(hd1,gpt4) 說明:(hd1,gpt4)是指ubuntu根文件系統/所掛的分區。 2. linux (hd1,gpt3)/vmlinuz-4.8.0-26-generic root=/dev/sda4 說明:(hd1,gpt3)是/boot所在的分區,假如你的/boot沒有單獨划分區,那么你完全用可以(hd1,gpt4)/boot/vmlinuz-4.8.0-26-generic或者/boot/vmlinuz-4.8.0-26-generic來代替(hd1,gpt3)/vmlinuz-4.8.0-26-generic。vmlinuz-4.8.0-26-generic是你想引導的內核映像,/boot目錄下完全有可能有很多不同版本的映像,具體選哪個,一般選最新的吧。如果不知道怎么看自己有哪些映像,后面有說怎么看。/dev/sda4是指根文件系統所在那個分區在文件系統中的設備名。 3. initrd initrd.img-4.8.0-26-generic 說明:注意initrd.img-4.8.0-26-generic版本要與mlinuz-4.8.0-26-generic版本一致。 4. boot
ok,到此你已經進入ubuntu系統了。心里終於可以不慌了,目前你可以繼續重復上面的步驟再次進入ubuntu。接下來還有兩步,干完就真的搞定了。那就是重新將grub安裝到磁盤。在命令終端中輸入按順序執行下面兩個命令。
1. sudo update-grub 說明:這一步是更新引導菜單的列表,如果這步不做,那前后也是白做了。在ubuntu中你查命令時也許還有個update-grub2,其是他就是update-grub的一個符號鏈接。 2. sudo grub-install /dev/sda 說明:將grub寫到硬盤上,讓其作為默認的引導程序。參數/dev/sda是你的硬盤文件,根據自己的實際情況改,說不定你的硬盤是/dev/sdb呢。
到此一切搞定,重啟系統后又可以看到grub的選擇界面了,可以自己選擇是進ubuntu還是win7,到底想讓哪個作為默認啟動項,自己再研究grub吧。
附:
前面在grub的命令界面時怎么確定自己的分區等相關參數?
用ls命令可以列出當前硬盤所有的分區,如果 有多塊硬盤,都會列出來,比如我進入grub時用了我的安裝U盤,也被顯示出來了。
這時如果你像我一樣熟悉自己的分區,基本就可以猜出來是哪個分區了,不然就一個一個試吧,怎么試?
假設列出來有個分區叫(hd0,gpt2),那么輸入命令ls (hd0,gpt2)/然后按回車或者連按兩下tab鍵,看它列出來的文件名,符合根文件系統那些目錄名,那么這個分區就是/所掛載的分區。如果你的boot目錄沒有單獨掛分區那么到此就可以。如果你單獨搞了一個分區,那么還是按剛才的方法找到/boot所在的分區。
如何看內核文件名?
假設/目錄掛在分區(hd0,gpt1),/boot掛在分區(hd0,gpt2)。如果/目錄與/boot在一個分區,那么用命令ls (hd0,gpt1)/boot/ 。如果不在一個分區,用命令 ls (hd0,gpt2)/。注意最后那個/。