GPT硬盘先装ubuntu16.10后装win7
背景
我的机器是台老笔记本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)/。注意最后那个/。