LFS8.3BOOT引导疑点解决
LFS系统 的BOOT引导
本文首发:https://www.somata.net/2019/lfs83_bootloader_doubtful_solution.html
在LFS书中写到的BOOT引导,时直接将宿主机的BOOT分区挂载当LFS的BOOT分区中,虽然这样也是可以实现BOOT引导的,但是我并不想这样做,所以BOOT引导就变得有些棘手了。总结下来有如下一个难点:
- MBR引导写入。
- initramfs的rootfs文件制作。
- grub.cfg文件配置。
注意
这里我只是提及了这几个问题,但是我并没有说到操作顺序需要注意。
那么我会逐一解决这些文件。
1. MBR引导写入
首先我们需要知道,现在的LFS是挂载在/dev/sdb或者/dev/hdb上的,宿主机的磁盘占用着第一个磁盘,如果需要在新的平台环境也能引导使用,我们可以借助DVD来完成MBR引导记录的部署。首先创建一台新的虚拟机,将虚拟磁盘导入到这台虚拟机然后再使用如CentosDVD光盘中的紧急救援模式完成操作。

选择打开电源时进入固件

然后在Boot中将CD-ROM Drive移动到第一位。保存重启即可。

选择Troubleshooting

然后再选择Rescue a CentOS system 开启紧急救援模式。等待系统加载完成。

跳过,直接进入shell界面。
mount /dev/sda2 /mnt/sysimage # 直接将光盘挂载到/mnt/sysimage 下
mount /dev/sda1 /mnt/sysimage/boot
# 挂载虚拟文件系统到/mnt/sysimage下
mount -vt proc proc /mnt/sysimage/proc
mount -vt sysfs sysfs /mnt/sysimage/sys
mount -v -o bind /dev /mnt/sysimage/dev
# 切换到LFS文件系统
chroot /mnt/sysimage
# 如果配置了profile 可以使用如下命令
source /etc/profile
这样我们就使用CDROM中的系统进入到了LFS然后再执行操作
grub-install /dev/sda # 安装MBR引导记录和grub启动所需要的模块
2. initramfs文件的制作
这里我就直接使用dracut软件生成initramfs文件,当然initramfs也是可以手动生成的。但是这个实在是太麻烦了。所以我就不用了。
首先是下载:下载链接
然后是安装:
同样的是安装3步曲:
./configure --prefix=/opt && make && make install # 这里会应为一系列依赖关系报错。所以我的安装步骤并不是如此的。
dracut -> asciidoc -> python2
dracut ->libxslt -> libxml2
以上2个就是我在编译的时候碰上的所需软件。然后再编译安装的时候都碰到了问题。但是我发现,再make 报错之后,dracut-install 和skipcpio 这2个软件都已经编辑好了。ascii和libxslt 这2个软件都是用于创建doc帮助文档的,然而我并不需要,所以我就索性手动安装一下。
mkdir /usr/lib/dracut/
cp -r dracut.conf.d /usr/lib/dracut/ # 复制配置文件
cp -r modules.d /usr/lib/dracut/ # 复制dracut模块
cp install/dracut-install /usr/lib/dracut/ # 复制dracut-install
cp skipcpio/skipcpio /usr/lib/dracut/ # 复制skipcpio
cp *.sh /usr/lib/dracut/ # 复制所有的脚本到指定路径
chmod +x /usr/lib/dracut/*.sh # 给所有的脚本执行权限
然后开始创建initramfs.img
cd /usr/lib/dracut # 首先切换到dracut的安装目录
./dracut.sh initramfs.img 4.18.1 # 第一个参数是创建的文件,第二个是指定内核版本,注意一定要对上,否者会出错。
# 然后再将创建号的initramfs.img移动到/boot目录下即可。
# 当然还是杨测试一下看看文件是否都是全的
/usr/lib/dracut/lsinitrd.sh initramfs.img # 查看initramfs.img
cp initramfs.img /boot/ # 将initramfs.img 复制到/boot目录下
lsinitrd.sh 执行命令结果

3. grub.cfg 文件配置
grub-mkconfig -o /boot/grub/grub.cfg # 导出配置文件
# 那么这样就完成了,grub-mkconfig会自动识别文件系统和内核,后面就可是直接重启了。
本文经「原本」原创认证,作者乾坤盘,访问yuanben.io查询【10X0DOZU】获取授权信息。
LFS8.3BOOT引导疑点解决的更多相关文章
- kali linux 更新软件源,安装中文输入法,修复Linux与windows引导菜单解决windows引导丢失
1. 更新软件源打开sources.list文件,进行添加更新源:leafpad /etc/apt/sources.list 2. 添加软件源#官方源 deb http://http.kali.org ...
- 安装CentOS、Linux系统时,GPT分区不能引导的解决方法
安装系统:CentOS 5.9_64bit时,分区后, 提示如下错误. 解决方法: 1.按ctrl+alt+F2 进入命令行 2.先查看分区 sh #fdisk -l 以下假设分区是/dev/s ...
- Vmare 无法打开内核设备“\\.\VMCIDev\VMX”: 系统找不到指定的文件。您在安装 VMware Workstation 后是否进行了重新引导?的解决办法
1.使用管理员省份运行cmd:net start vmx86(切记是要用管理员身份),启动服务成功问题即可解决. 2.若1操作中启动失败,则到Vmare安装目录下搜索vmx86.sys文件,并拷贝到C ...
- GPT分区在IBM服务器上安装linux不能引导的解决方法
提示: Your boot partition is on a disk using the GPT partitioning Scheme but this machines cannot boot ...
- win7激活不支持的启动引导分区完美解决方法
前言: 激活win7显示不支持的启动引导分区怎么办?有用户使用暴风激活工具给win7 64位系统激活时,弹出Error提示框"不支持的启动引导分区". 这是因为传统的win7激活工 ...
- win7/ubuntu双系统下,如何恢复成win7引导及卸载ubuntu
电脑原来是win7系统,后来通过硬盘安装了Ubuntu,同时把Ubuntu设置成了开机引导项(开机时选择操作系统的界面成了紫色背景白色字体的界面),ubuntu引导开机的缺点是将来要卸载Ubuntu时 ...
- (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
« CloudStack+XenServer详细部署方案(10):高级网络功能应用 (总结)CentOS Linux 5.x在GPT分区不能引导的解决方法 » 2013-1 11 (原创)Linux下 ...
- win10下安装Ubuntu后,启动时没有win10选项解决方法
通过在ubuntu里修改启动引导,解决. 1.进入Ubuntu系统,Ctrl+alt+t进入终端,输入以下命令即可 sudo gedit /etc/default/grub 2.在打开的gedit编辑 ...
- Linunx系统引导过程及MBR/GRUB故障
Linunx系统引导过程 系统初始化进程 init进程 Systemd Systemd单元类型 允许级别所对应的systemd目标 修复MBR扇区故障 解决思路 操作 修复GRUB引导故障 解决思路 ...
随机推荐
- jmeter性能测试前及测试后
压测前: 1.压力测试两种场景: 1)单场景,压测单个接口. 2)混合场景,多个接口关联压测. 2.压测时间: ...
- K8s集群部署(三)------ Node节点部署
之前的docker和etcd已经部署好了,现在node节点要部署二个服务:kubelet.kube-proxy. 部署kubelet(Master 节点操作) 1.二进制包准备 [root@k8s-m ...
- SQL Server温故系列(2):SQL 数据操作 CRUD 之简单查询
1.查询语句 SELECT 1.1.查询语句的 SELECT 子句 1.2.查询语句的 FROM 子句 1.2.1.内连接查询 INNER JOIN 1.2.2.外连接查询 OUTER JOIN 1. ...
- jmeter分析性能报告时的误区
概述 我们用jmeter做性能测试,必然需要学会分析测试报告.但是初学者常常因为对概念的不清晰,最后被测试报告带到沟里去. 常见的误区 分析响应时间全用平均值 响应时间不和吞吐量挂钩 响应时间和吞吐量 ...
- SPOJ:NPC2016A(数学)
http://www.spoj.com/problems/NPC2016A/en/ 题意:在一个n*n的平面里面,初始在(x,y)需要碰到每条边一次,然后返回(x,y),问最短路径是多长. 思路:像样 ...
- 什么是Task
什么是Task Task是.Net4.0新增用来处理异步编程的,叫做基于“任务编程模型”,任务其实是架构在线程之上的,具体操作的时候还是由线程去执行的,任务的管控有点类似于线程池,程序中开10个Tas ...
- 重新认识 async/await 语法糖
提起.Net中的 async/await,相信很多.neter 第一反应都会是异步编程,其本质是语法糖,但继续追查下去,既然是语法糖,那么经过编译之后,真正的代码是什么样的,如何执行的?带着这些疑问, ...
- Java零基础个人学习路线总结
之前学习Java的时候走过一些弯路,一直想写一篇文章来总结下自己对自学Java的认识.趁着这次开通专栏的机会整理一篇文章,既可以巩固所学,也可以为后来境遇相同的人做个参考. 首先提出几个问题 Java ...
- 个人永久性免费-Excel催化剂功能第68波-父子结构表转换之父子关系BOM表拆分篇
Excel中制造业行业中,有一个非常刚需的需求是对BOM(成品物料清单)的拆解,一般系统导出的BOM表,是经过压缩处理的,由父子表结构的方式存储数据.对某些有能力使用SAP等专业ERP软件的工厂来说, ...
- [HDU4135]CO Prime(容斥)
也许更好的阅读体验 \(\mathcal{Description}\) \(t\)组询问,每次询问\(l,r,k\),问\([l,r]\)内有多少数与\(k\)互质 \(0<l<=r< ...