linux开机引导和启动过程

linux开机引导和启动过程,第1张

传统启动方式(Legacy+MBR)   

传统BIOS启动方式,存在一些不足:比如最大只支持2TB磁盘,磁盘最多四个分区,且不支持图形 *** 作

 新式启动方式(UEFI+GPT)

相对于Legacy+mbr, 优点在启动更快(不要开机自检),最多可支持128个磁盘分区,最大可支持18EB硬盘,支持图形 *** 作

启动流程

1.  上电,BIOS自检,找到启动介质(系统盘),读取主引导分区(MBR)

2. 引导装载程序 (GRUB2),寻找 *** 作系统内核并加载其到内存, 内核初始化

3. 启动 systemd

https://www.cnblogs.com/jjmcao/p/9322324.html     开机流程

https://linux.cn/article-8807-1.html         开机流程

http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html   开机流程

https://linux.cn/article-8603-1.html?pr    grub介绍

http://www.dnxtc.net/zixun/zhuangjijiaocheng/2020-10-11/5852.html uefi和legacy区别

linux可以通过fdisk命令查看系统磁盘分区类型

CentOS7下重建grub并恢复系统的故障案例

https://cloud.tencent.com/developer/article/1767715

第一步:\x0d\x0a当然是下载Ubuntu了,我是在Ubuntu官网下载的原生版本,我下载的是Ubuntu最新版本15.04。没有选择国人修改过的kylin版本。kylin好不好我完全不懂,只是习惯性的觉得国人做系统不放心,就连修改下我都不放心。\x0d\x0a\x0d\x0a第二步:\x0d\x0a制作u盘启动盘。我用的是UltraISO这个软件制作的启动盘, *** 作很简单,为了增加文章篇幅,我就简单贴两张图吧。(这地方写入方式的选择,默认是USB-HDD+,我也是这么选择的,但是有人说应该选择USB-ZIP+。具体我不懂,不过我按照我选择的能够安装成功。)\x0d\x0a\x0d\x0a *** 作很简单,就是选择好你的iso文件,然后启动-制作硬盘启动,不清楚的话就百度一下咯。\x0d\x0a\x0d\x0a第三步:\x0d\x0awindows系统下为Ubuntu准备一个空闲分区。 *** 作也很简单,找一个不用的盘,空间别太小,然后用windows自带的磁盘管理工具来压缩分区。我自己是为Ubuntu准备了100G大小的空间,这个自己根据需求设定。\x0d\x0a\x0d\x0a第四步:\x0d\x0a重启电脑安装Ubuntu系统。lenovo重启时按F12选择启动位置,这个各个品牌按照自己品牌的按键来,跟U盘安装win7、win8一个道理。重点需要说明的地方就是Ubuntu分区。在安装过程中需要选择位置,我们就选择之前专门为Ubuntu压缩的那个分区,可以看到那个分区说明写着“空闲”,所以还是比较好区分的。然后就是分区了,参考了网上一些人的说法,然后根据自己的笔记本我做了如下设置(手机渣像素,估计看不清,我再陈述一下吧)。首先是“/”挂载区,我分了30G;然后是SWAP,我分了8G,这个跟内存有关,我看完网上很多人设置的是2G,我自己笔记本物理内存12G,2G会不会太少了,于是自己设置了8G;然后是“/boot”,我分了300M,网上都说这部分200M足够了;最后剩下的空就留给“/home”了。这部分内容我也不懂,完全是参考网上的说明设置的,毕竟对linux具体原理一窍不通。\x0d\x0a\x0d\x0a然后分区结束后,需要选择安装启动引导其的设备,这部分貌似很关键,但是我也不懂原理,就听网上说的,什么是从ubuntu启动器,什么是从windows启动器。我按照其中的一种说法设置的,讲设备选择为刚才设置的“/boot”那个设备。\x0d\x0a然后就是安装了,安装过程比较慢,可能是我这儿网速比较慢。其中“正在下载语言包”“正在下载软件包”这两处很慢,每个至少得20mins,可能是因为我这热网速太慢了。还有就是最后一步卡在“执行安装后执行的触发器 update-notifier-common”这一步有20min后,我怀疑有问题,看网上很多人出现这个问题,有人说断网可以解决,我断网后一段时间好像解决了,但是我不知道这个是不是因为断网而解决的。\x0d\x0a\x0d\x0a简单两张图表示我的确安装了。成功后设置用户名,密码之类的就可以了。然后需要重启。\x0d\x0a\x0d\x0a第五步:\x0d\x0a重启后有画面可以选择进入什么系统,具体记不清了,基本就是:1、Ubuntu 2、windows 3、windows 4、设置(就是进入BIOS)。我选择了进入Ubuntu,一切顺利,虽然我会用,但是欣喜的看到安装成功了。然后,问题没这么简单,我想重启后进原来的win10用easyBCD软件设置一下启动顺序啥的时,发现重启页面选择2或3都进不去windows,基本意思就是找不到文件啥的。这个双系统的引导是用Ubuntu引导的,我本来是想让他用win10引导的。后来简单百度了下,可以先通过BIOS设置优先级进入win10,我按照这个方法设置后进入了windows(然而时间不对了,以因为我的本是美版的,刚买的时候时间就差几个小时,虽然选了时区也不对,最后还是手动设置的时间,这次也是手动设置的。),但是开机后没有选择进入那个系统,就是说我想要的还没有。\x0d\x0a我用easyBSD试着设置了一下,看效果如何。\x0d\x0a\x0d\x0a有效果,在开机界面出现了选项。可以顺利进入win10.不过安装双系统就跟开机10s内完成说byebye了。然而开机界面选择了ubuntu但是进不去,提示找不到 \EFI\ubuntu\shimx64.efi。意思就是现在主板用efi启动,而在efi分区没找到相应的ubuntu分区。如果找到这个文件并把他放到应该在的efi分区中,应该就能正常启动了。于是我装了DiskGenius,瞅了一眼没找到ubuntu的efi,找到了windows的efi。我再windows自带的磁盘管理中看到两个efi分区,大小都是260M,有点纳闷,怎么会有两个????于是也没多想,就把之前装的ubuntu分区给删除了,准备重装,并且装的时候记得把分区下面那个引导位置设置为我windows的efi分区,这样应该就能正常启动双系统了。当我刚刚删除分区后突然意识到我之前因为新加了ssd,所以克隆了系统,所哟应该就有两个efi分区,原来的hdd上一个,后来的ssd上一个。于是按照这个思路,我再hdd的efi分区中找到了ubuntu的那个shimx64.efi文件。然并卵,我已经删除了分区,不得不重装了。\x0d\x0a在重装之前,听人说需要关闭windows的快速启动(windows+x,里面电源选项中有,选择电源按钮的功能,更改当前不可用的设置,把“启用快速启动前面的对号去掉”),同时还需要在BIOS菜单中,在security下找到secure boot项,把UEFI那项设置为DISABLE。\x0d\x0a然后重装,这次比上次快不少。进入ubuntu照样正常,不过从ubuntu界面进windows不正常,好像进入了一个修复windows的界面。而且没法后退,只好强制关机了。又从BIOS进了windows系统,开始设置双系统启动,用easyBCD。\x0d\x0a\x0d\x0a设置完之后,还是跟之前一样的问题,找不到efi文件。我用DiskGenius看了看,那个ubuntu的efi文件还是在hdd的efi分区中,没在ssd的efi分区中。而且没办法复制过去,每次打开ssd的efi分区想要 *** 作(比如新建文件夹,粘贴之类的),就提示说这个分区没有正确加载,可以尝试重启,然而重启也没什么用。

问题 : 有时候Linux系统/boot分区损坏时,启动Linux系统时直接进入字符介面的grub引导,并没有进入到系统或者开机显示 error:unknow filesystem提示

解决办法:

Linux开机自动会进入到grub引导介面(如果没进入到grub引导介面可以按C键进入)

第一步:找到系统对应的扇区及/boot/grub目录

注意 :假设是硬盘接口类型sd,hd0对应是sda hd1对应是sdb

(hd0)≠(hd0)

(hd1,gpt2)=(hd1,2)

ls (hd1,gpt2) 查看(hd1,gpt2)扇区信息(盘符、空间等)

ls (hd1,gpt2)/  查看(hd1,gpt2)扇区下的内容(文件、文本等)

如果打印每个扇区目录信息,会出现两种情况:

1、ls (hd1,gpt2)显示Unknow filesystem提示说明这个扇区不是我们要找系统分区

2、ls (hd1,gpt2)显示/boot /proc等系统目录信息说明这个扇区是我们要找的系统分区

如果找到对应扇区的系统分区,可能会遇到两种情况:

1、 A目录下有/boot/grub

2、A目录下有/boot,B目录下有/grub (此时在第二步加载系统内核要使用 set prefix=(hd1,gpt2)/grub 命令)

grub >ls

(hd0), (hd1), (hd1, gpt1), (hd2,gpt2), (hd3, gpt3)

第二步:加载系统内核

grub >set root=hd1,2 #此处不需要括号,加括号也可以,hd0和hd1是有区别

grub >set prefix=(hd1,2)/boot/grub

grub >linux /vmlinuz root=/dev/sdb2 #vmlinuz必须使用TAB补全(可能有后缀),注意sda或sdb需要看自己的实际情况

grub >initrd /initrd.img-xxx #TAB补全,多内核情况下版本需统一

grub >boot

提示 :如果在boot之后不幸进入BusyBox,说明参数设置有问题,可以仔细查看出错的日志,再重启系统后重复执行第二步 *** 作(重启系统后上面设置的参数会被清空)。

第三步:修改grub引导

如果成功进入系统,记得要马上信息grub引导,不然重启系统后问题还是存在

sudo update-grub2 #grub2命令(高版本使用grub2)

$ sudo grub-install /dev/sdb

第四步:重启系统

重启系统后即可正常进入系统

reboot


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6239709.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-18
下一篇2023-03-18

发表评论

登录后才能评论

评论列表(0条)

    保存