之前一直在虚拟机上开发linux代码,感觉很不方便,所以决定在我的笔记本上(在固态上已经有windows10)安装ubuntu18.04。因为装固态,所以我的机械盘c盘闲置了,刚好用来装ubuntu,有80G也够用。
事实上这是我第二次装windows+ubuntu双系统,上次是在台式机上,在一块C盘里面装了2个系统,没出任何问题。但是这次在两个盘上装双系统,却遇到了不少问题,不过还好我都解决了,记录如下,方便查看。
一、准备空闲磁盘
我打算把ubuntu装在限制的机械C盘上,右击“此电脑”->“管理”->“磁盘管理”,将目标磁盘更改成“可用空间”或“未分配”状态,方便在安装时进行区分(会有个空闲标志)。
二、制作U盘启动工具
1. ubuntu 18.04镜像:https://www.ubuntu.com/download/desktop
2. 镜像烧写工具(Win32DiskImager):https://sourceforge.net/projects/win32diskimager/files/latest/download
3. 8G或以上的U盘
注意:使用UltraISO烧写在启动的时候可能会出现 “failed to load ldlinux.c32”,因为ubuntu太新了,UltraISO还未来得及更新引导。
三、设置BIOS为U盘启动
在电脑开机出现品牌界面时不停地按“F12”、或“delete”、“F11”等按键进入BIOS,不同的电脑不一样,我的是MSI电脑,按的是“delete”。进入BIOS后设置U盘启动方式的优先级最高。
然后按F10快捷键 “save and reboot”。
四、Ubuntu安装向导
不知为啥不能选择断网,不过我把网线拔了;
关键步骤:选择“其它选项”,这样才能分区 ;
分区,以下内容作为参考:
(a) /boot - 200 MB以上 ; 实际需求大约 100 ~ 200MB,如果有多个内核/启动镜像同时存在,建议分配 200 或者 300 MB。(个人建议:200MB ~ 300MB) 。我给了1G。
(b) / - 15-20 GB ; 15-20 GB 对于大多数用户来说是一个比较合适的取值。。我给了30G。
(c) /home - [不定] ; 通常用于存放用户数据,下载的文件和媒体文件。在桌面系统中,/home 通常是最大的文件系统。我给了40+G。
(d) swap - [不定] ;在拥有不足 512 MB 内存的机器上,通常为 swap 分区分配2倍内存大小的空间。如果有更大的内存(大于 1024 MB),可以分配较少的空间甚至不需要swap 分区。我给了8G。
选中“空闲”的盘,然后点击“+”进行分区。
关键步骤: "安装启动引导器的设备"选择/boot对应的分区。
然后就安装好了。(选择时区、语言之类的略去)
四、修复grub引导
系统安装好后,需要设置双系统引导,而且我和很多人一样,grub引导被损毁了。我这里没有使用easyBCD进行引导,其实用那个引导也是不行的(我试过,如果grub损坏的话,进入ubuntu会卡在grub命令行)。后来我选择直接在BIOS里设置硬盘(ubuntu系统所在盘)启动优先级最高,这样首先会进入ubuntu,修复好grub后也可以进行系统选择。
然后保存设置进行reboot。结果卡在grub rescue命令行界面,如下开机显示:GRUB loading error:unknow filesystem
grub rescue>。
下面进行重新安装并修复grub2操作。
(1) 先使用ls命令,找到Ubuntu的安装在哪个分区:
在 grub rescue>下输入以下命令:
ls
会罗列所有的磁盘分区信息,比方说:(hd0,msdos1),(hd0,msdos5),(hd0,msdos3),(hd0,msdos2)
(2) 然后依次调用如下命令: X表示各个分区号码
--如果/boot没有单独分区,用以下命令:
ls (hd0,msdosX)/boot/grub
--如果/boot单独分区,则用下列命令:
ls (hd0,msdosX)/grub
正常情况下,会列出来几百个文件,很多文件的扩展名是.mod和.lst和.img,还有一个文件是grub.cfg。假设找到(hd0,5)时,显示了文件夹中的文件,则表示Linux安装在这个分区。
(3) 如果找到了正确的grub目录,则设法临时性将grub的两部分关联起来,方法如下:
--以下是/boot没有单独分区的命令:
grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/boot/grub
grub rescue>insmod /boot/grub/normal.mod
--以下是/boot 单独分区的命令:
grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/grub
grub rescue>insmod /grub/normal.mod
注:第三行的命令我没在grub文件夹下找到normal.mod,经过ls查找,我在grub/i386-pc下发现了normal.mod,故第三行代码可能为如下(根据.mod文件在哪文件夹作选择)
insmod grub/i386-pc/normal.mod
(4) 然后调用如下命令,就可以显示出丢失的grub菜单了。
grub rescue>normal
(5) 如果这时重启,问题依旧存在,我们需要进入Linux中,对grub进行修复。
启动起来,进入ubuntu之后,在终端执行:
sudo update-grub
sudo grub-install /dev/sda
(sda是你的硬盘号码,千万不要指定分区号码,例如sda1,sda5等都不对)
重启测试是否已经恢复了grub的启动菜单。我的可以了。
--参考:https://blog.csdn.net/stoic163/article/details/54377179 (在这篇博客提供的grub修复方案下稍作修改,最终成功完成修复。)