安装Ubuntu16.04失败
原本安装的是Ubuntu14,但是在使用caffe时总是出错,所以干脆将Ubuntu从14升级到16,结果整出一堆麻烦。在解决这些麻烦的过程也学习了不少系统启动的细节。印证了那句话“如何没有装过十遍以上的系统就不能说学会了linux”。那么这是我的第二遍了,我也准备迎接剩下的八遍了。
下面我会从几个方面讲起
- 安装过程
- 系统启动
- grub常用命令
- 我的解决方案
安装过程
ubuntu安装的详细过程参见我的另一篇博客——安装win8+Ubuntu14.04双系统的经验总结 - 上官栋 - 博客园,这里不过多讨论了。我一开始是从liveUSB升级的方法安装ubuntu16,但是启动电脑的时候直接黑屏了,我以为失败了。接着又尝试自定义分区的方式重新安装,结果又黑屏了。然后在开机时进入BIOS调整启动顺序进入windows,把载有ubuntu的盘格式化之后,在用easyBCD重写了MBR,重新安装ubuntu16。为了以防万一,我又下载了ubuntu的最新版重新制作启动盘。这样相当于重装一次双系统,我想这样应该不会出错了吧。结果又黑屏了。之后又尝试了几种不同的安装方法,结果都会进入这个命令行的界面。
等到我实在找不到可行的办法才开始认真琢磨这个命令行界面是怎回事。一番搜索之后才认识到我进入了grub的命令行。也终于跳出了反复装系统的死循环。
系统启动
想要明白grub是什么,必须要明白开机启动的过程。这里推荐一篇博客计算机的启动过程(详细) - CSDN博客。讲得比我要详细的多。
系统在启动时会先从BIOS中读取程序,这些程序用于硬件检测,环境初始化。同时BIOS也存储了用户设定的启动顺序,例如从硬盘A,硬盘B,光驱,优盘等不同硬件启动。按照顺序,计算机会检测这些硬件是否装载了操作系统(比较其放置MBR的位置的结尾两位是否为0xAA55)。如果装载了,就会读入这个设备第一个分区的程序,也就是主引导记录(MBR)。
到这里还不是操作系统的程序。MBR的作用是告诉计算机操作系统存储在我这个存储器的那个分区上。如果操作系统装在主分区上,计算机就会根据卷引导记录查找到分区中具体的位置,装载入操作系统。如果在逻辑分区,那么就从扩展分区中依次查找,直到找到操作系统。不过要是有两个操作系统呢?那么这个MBR就不能满足要求了。因为他不提供选择的功能,程序只能加载一个操作系统。为了适应计算机结构的发展,Intel又对BIOS+MBR做了改进,提出了EFI+GPT的结构。EFI可以支持32位,64位指令,硬件接口可扩展,采用C语言的堆栈架构,容易跨平台,也容易开发。GPT采用新的分区方式,可以有多个主分区,硬盘容量上限突破2T。
如果我们想在一个硬盘里面装两个操作系统应该怎么办?无论是BIOS+MBR还是EFI+GPT似乎都不支持这种设定。有一种方法是修改MBR或者GPT中的操作系统指向,让其指向一个小的操作系统(mini OS),也就是现在常用的grub和LILO。这个mini OS的功能主要是让用户选择操作系统,但是实际上他的功能和权限远远超过这个要求。你完全可以在grub下访问硬盘中的文件。
通过grub这种mini OS就可以选择我们需要的操作系统了,到这里终于算是启动成功了。
grub常用指令
通过系统启动中的说明,我们明白了grub就是引导计算选择操作系统的mini OS。作为OS就会有指令,下面介绍一些:
set:设置常量,例如“set root=(hd0,0)”就是讲root设置为hd0,0。如果只输入“set”,就可以看到环境中常量,注意root和prefix的值,这两个量很重要,分别指ubunto系统目录和grub所在目录,启动失败主要是这两个变量错误。
linux:内核加载命令,例如“linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1”
initrd:镜像文件加载命令,例如“initrd /boot/initrd.img-3.13.0-29-generic”
insmod:启动模式选择,例如“insmod/boot/grub/i386-pc/normal.mod”
boot:启动
exit:退出
normal:进入normal.mod
cat:查看文件
ls:列出目录下的文件
我的解决方案
其实在一开始进入grub界面只是一些参数错误,操作系统并没有什么问题。但是不熟悉命令行操作的我本能的认为一定是安装出现了错误。结果一开始就没有正确的认识问题的根源,花了很多不必要的时间。以后还是应该习惯去使用命令行,这才是与机器打交道的正确方法。
出现黑屏的原因是grub环境变量中root和prefix设置错误,我的ubuntu安装在/dev/sda11,在grub是(hd0,gpt11)。但是root变量却是(hd0,gpt2),这是windows所在的分区。这样就导致grub不能加载grub的选择界面,也不能加载ubuntu的内核。针对此有三种解决方案
一、进入选择界面
输入命令
set root=(hd0,11)
set prefix=(hd0,11)/boot/grub
insmod /boot/grub/i386-pc/normal.mod
normal
经过反复的实验,其实输入下面的命令也是可以的
prefix=(hd0,11)/boot/grub
normal
也就是问题的关键在于让grub找到grub.cfg引导文件。这样就可以进入系统选择界面。
二、加载linux内核
输入命令
set root=(hd0,11)
linux (hd0,11)/boot/vmlinuz-3.13.0-29-generic root=/dev/sda11
initrd (hd0,11)/boot/initrd.img-3.13.0-29-generic
boot
这段命令是让系统加载ubuntu的内核,直接进图ubuntu,不经过选择界面
三、加载windows系统
输入exit
退出grub,选择windows boot manager,加载windows系统
在进入ubuntu之后,有人建议输入命令
update-grub
grub-install /dev/sda
用来更新grub。但我的问题是grub在启动时的环境变量错误。这种方法也试过,但问题没有解决。所以现在每次开机要输入一些命令。不过现在我不想折腾了,就当做密码长一点吧。以后再装系统时一起解决吧。
2018年3月2日更新:
在安装
安装Ubuntu16.04失败的更多相关文章
- 初用Linux, 安装Ubuntu16.04+NVIDIA387+CUDA8.0+cudnn5.1+TensorFlow1.0.1
因为最近Deep Learning十分热门, 装一下TensorFlow学习一下. 本文主要介绍安装流程, 将自己遇到的问题说明出来, 并记录自己如何处理, 原理方面并没有能力解释. 由于本人之前从来 ...
- win10安装ubuntu16.04双系统
前话:因为感兴趣吧也是专业需要,所以自学了U盘重装系统以及在win10的情况下安装Ubuntu16.04双系统.借此博客,记录下我安装Ubuntu的过程,方便日后回忆. 正因如此,本篇博客会写的十分简 ...
- Win7 U盘安装Ubuntu16.04 双系统详细教程
Win7 U盘安装Ubuntu16.04 双系统详细教程 安装主要分为以下几步: 一. 下载Ubuntu 16.04镜像软件: 二. 制作U盘启动盘使用ultraISO: 三. 安装Ubuntu系统: ...
- 路由器安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错误。向目标系统中安装busybox-initramfs软件包时出现一个错误。请检查/var/log/syslog或查看第四虚拟控制台以获得详细
公司的路由器要ubuntu服务器进行路由网络功能的管理,在安装的时候出现下面的错误提示: 安装ubuntu-16.04.1-server-amd64出现“无法安装busybox-initramfs”错 ...
- win7下通过easyBCD引导安装Ubuntu16.04(并处理遇到的坑)
Ubuntu16.04作为目前最新版本的ubuntu系统,相信很多人都想在自己的电脑上安装一下,然而系统的安装方法各式各样,u盘法.grub引导法等等,这里我将介绍在win7系统下用easyBCD软件 ...
- win10下安装Ubuntu16.04双系统
其实我是不喜欢系统的,之前都是在win下面进行开发,现在来了个项目,经过各种环境的安装调研,最终选择在Ubuntu下面进行开发.之前想着为啥不在虚拟机里面安装Ubuntu进行操作呢,由于虚拟机的体验不 ...
- win10安装ubuntu16.04及后续配置
原文地址:https://www.jianshu.com/p/842e36a8255c UEFI 模式下win10安装ubuntu16.04双系统教程 - baobei0112的专栏 - CSDN博客 ...
- win10安装ubuntu16.04双系统历程
目录 win10安装ubuntu16.04双系统 历程 安装时间 安装准备 安装过程 其他问题 win10安装ubuntu16.04双系统 历程 安装时间 2018.11.30 安装准备 u盘(格式化 ...
- 用 EasyUEFI 在 Win8/10 中硬盘安装 Ubuntu16.04图文教程
用 EasyUEFI 在 Win8/10 中硬盘安装 Ubuntu 作者:TeliuTe 来源:基础教程网 1.准备Ubuntu安装文件 1)下载带amd的64位 Ubuntu 桌面版光盘镜像文件,如 ...
随机推荐
- 安装lamp代码
tar -zxvf mysqladdUser mysql -s /sbin/nologinmv mysql /usr/local/mysql (改目录下直接存储bin docs等目录)mkdir -p ...
- Jmeter+Ant+Jenkins接口自动化测试(一)_环境部署
前言: 2017年最后一个月份,今天抽出时间把之前的一些记录分享出来,也为今年画上个简单的句号吧,无论好与坏,无论成功与失败,简单的记忆,不要留下点点空白. 特别提示: 知识是用来分享的,但是也要尊重 ...
- 比较日期大小以及获取select选中的option的value
原生JavaScript如何获取select选中的value // 1. 拿到select对象 const selectObject = document.getElementById('test') ...
- iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究
侧滑返回手势是从iOS7开始增加的一个返回操作,经历了两年时间估计iPhone用户大部分都已经忽略了屏幕左上角那个碍眼的back按钮了.之前在网上搜过有关侧滑手势的技术博客,发现大多比较散乱,甚至有很 ...
- 使用C#开发数据库应用系统 习题
错题积累 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
- 阿里云ECS连接阿里云Redis问题
描述 项目之前的服务器使用Windows,Redis使用阿里云的云数据库Redis版,一切正常. 后来了更换了Linux,也配置好了Redis,但连接阿里云的Redis时却怎么也连接不上 原因 ECS ...
- Adb+.net 实现微信跳一跳自动化
第一次用adb,一开始只是想试试看能不能解析出,没有看网上的现有解析方式. 需要安卓机开启usb 调试+电脑运行.打开跳一跳的界面 点击程序 [开始]按钮即可开始,别的按钮都是调试用的 主要流程是用a ...
- promise入门demo
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
- ES6小点心之通用弹窗
小点心,顾名思义,开箱即食,拿来即用. 前端业务逻辑主要分为[交互效果]和[数据展示]两方面.数据展示可使用 MVVM 框架来实现.前端的交互效果常用的也就那么几种,比如弹窗,楼层定位,倒计时,下拉刷 ...
- 【旋转卡壳+凸包】BZOJ1185:[HNOI2007]最小矩形覆盖
1185: [HNOI2007]最小矩形覆盖 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1945 Solve ...