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引导故障 解决思路 ...
随机推荐
- python算法与数据结构-数据结构中常用树的介绍(45)
一.树的定义 树是一种非线性的数据结构,是由n(n >=0)个结点组成的有限集合.如果n==0,树为空树.如果n>0,树有一个特定的结点,根结点根结点只有直接后继,没有直接前驱.除根结点以 ...
- PATA 1036. Boys vs Girls (25)
https://www.patest.cn/contests/pat-a-practise/1036 #include <bits/stdc++.h> using namespace st ...
- Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的
前言 用c#开发的时候,新建的脚本都默认继承自Monobehaviour, 因此脚本才有了自己的生命周期函数,如Awake,Start, Update, OnDestroy等. 在相应的方法中实现游戏 ...
- 并发编程-concurrent指南-Lock-可重入锁(ReentrantLock)
可重入和不可重入的概念是这样的:当一个线程获得了当前实例的锁,并进入方法A,这个线程在没有释放这把锁的时候,能否再次进入方法A呢? 可重入锁:可以再次进入方法A,就是说在释放锁前此线程可以再次进入方法 ...
- Git 的一些使用细枝末节
新入职XX公司第一天, 使用旧同事的电脑 Step1: 在Android Studio 中配置帐号 $ git config --global user.name author #将用户名设为auth ...
- 基础数据类型,格式化输出,以及for循环的使用
基础数据类型总览 int :数字类型,可以+-*/等等操作 str:字符串类型,存储少量的数据,+*int 切片等 bool :里面包含True,False这两种值,用来判断真假. list :列表 ...
- [golang]golang time.After内存泄露问题分析
无意中看到一篇文章说,当在for循环里使用select + time.After的组合时会产生内存泄露,于是进行了复现和验证,以此记录 内存泄露复现 问题复现测试代码如下所示: package mai ...
- elasticsearch 集群部署,版本 5.5.0
准备说明: 两台服务器 Ip分别为 192.168.239.78(主),192.168.239.49(从) 主服务器上配置如下:1.上传es5.5.0版本至主服务器2.解压 unzipunzip el ...
- C++学习书籍推荐《C++ Primer 第五版 (英文)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++ Primer(英文版)(第5版)>是全球最畅销的C++图书.这本久负盛名的C++经典教程,时隔八年之久,终迎来的重大升级.除令全球无数程 ...
- IDM 6.27.5(Internet Download Manager)中文破解版下载神器
IDM一直是我最喜欢的下载工具,感觉用的比迅雷爽,简单使用,对付网盘有一套.IDM(Internet Download Manager)和迅雷的下载提速方式不同,从原理上来说,IDM速度较稳定,迅雷下 ...