LFS系统 的BOOT引导

本文首发:https://www.somata.net/2019/lfs83_bootloader_doubtful_solution.html

在LFS书中写到的BOOT引导,时直接将宿主机的BOOT分区挂载当LFS的BOOT分区中,虽然这样也是可以实现BOOT引导的,但是我并不想这样做,所以BOOT引导就变得有些棘手了。总结下来有如下一个难点:

  1. MBR引导写入。
  2. initramfs的rootfs文件制作。
  3. 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引导疑点解决的更多相关文章

  1. kali linux 更新软件源,安装中文输入法,修复Linux与windows引导菜单解决windows引导丢失

    1. 更新软件源打开sources.list文件,进行添加更新源:leafpad /etc/apt/sources.list 2. 添加软件源#官方源 deb http://http.kali.org ...

  2. 安装CentOS、Linux系统时,GPT分区不能引导的解决方法

    安装系统:CentOS 5.9_64bit时,分区后, 提示如下错误. 解决方法: 1.按ctrl+alt+F2 进入命令行 2.先查看分区 sh #fdisk -l    以下假设分区是/dev/s ...

  3. Vmare 无法打开内核设备“\\.\VMCIDev\VMX”: 系统找不到指定的文件。您在安装 VMware Workstation 后是否进行了重新引导?的解决办法

    1.使用管理员省份运行cmd:net start vmx86(切记是要用管理员身份),启动服务成功问题即可解决. 2.若1操作中启动失败,则到Vmare安装目录下搜索vmx86.sys文件,并拷贝到C ...

  4. GPT分区在IBM服务器上安装linux不能引导的解决方法

    提示: Your boot partition is on a disk using the GPT partitioning Scheme but this machines cannot boot ...

  5. win7激活不支持的启动引导分区完美解决方法

    前言: 激活win7显示不支持的启动引导分区怎么办?有用户使用暴风激活工具给win7 64位系统激活时,弹出Error提示框"不支持的启动引导分区". 这是因为传统的win7激活工 ...

  6. win7/ubuntu双系统下,如何恢复成win7引导及卸载ubuntu

    电脑原来是win7系统,后来通过硬盘安装了Ubuntu,同时把Ubuntu设置成了开机引导项(开机时选择操作系统的界面成了紫色背景白色字体的界面),ubuntu引导开机的缺点是将来要卸载Ubuntu时 ...

  7. (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)

    « CloudStack+XenServer详细部署方案(10):高级网络功能应用 (总结)CentOS Linux 5.x在GPT分区不能引导的解决方法 » 2013-1 11 (原创)Linux下 ...

  8. win10下安装Ubuntu后,启动时没有win10选项解决方法

    通过在ubuntu里修改启动引导,解决. 1.进入Ubuntu系统,Ctrl+alt+t进入终端,输入以下命令即可 sudo gedit /etc/default/grub 2.在打开的gedit编辑 ...

  9. Linunx系统引导过程及MBR/GRUB故障

    Linunx系统引导过程 系统初始化进程 init进程 Systemd Systemd单元类型 允许级别所对应的systemd目标 修复MBR扇区故障 解决思路 操作 修复GRUB引导故障 解决思路 ...

随机推荐

  1. scrapy基础知识之制作 Scrapy 爬虫 一共需要4步:

    1.新建项目 (scrapy startproject xxx):新建一个新的爬虫项目 2.明确目标 (编写items.py):明确你想要抓取的目标 3.制作爬虫 (spiders/xxspider. ...

  2. Oracle数据库常用的脚本命令(一)

    --连接数据库的命令connect,用于切换连接用户,简写形式conn--语法格式:conn 用户名/密码conn yanln/yanln --显示当前登录的用户show user --执行操作系统的 ...

  3. SQL Server 触发器和事务

    一.触发器 1. 定义 --基本语法 create trigger Trigger_Name on TableName for type --type:insert,update,delete as ...

  4. JAVA包装类解析和面试陷阱分析

    包装类 什么是包装类 虽然 Java 语言是典型的面向对象编程语言,但其中的八种基本数据类型并不支持面向对象编程,基本类型的数据不具备“对象”的特性——不携带属性.没有方法可调用. 沿用它们只是为了迎 ...

  5. Hadoop FAQ

    测试环境: Hadoop 2.6.0-cdh5.7.1 apache-kylin-2.0.0-bin kylin运行check-env.sh时,报如下警告: WARN util.NativeCodeL ...

  6. 【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++

    原题传送门 这道题用最小生成树来完成,我选用的是kruskal(克鲁斯卡尔)来完成.这道题目在克鲁斯卡尔模板的基础上,有变动的地方只有2处:1.因为必须从一个点出发,而最小生成树最后会让所有点都连通, ...

  7. python爬取新浪股票数据—绘图【原创分享】

    目标:不做蜡烛图,只用折线图绘图,绘出四条线之间的关系. 注:未使用接口,仅爬虫学习,不做任何违法操作. """ 新浪财经,爬取历史股票数据 ""&q ...

  8. 哈夫曼编码与解码的C++实现:建立哈夫曼树、进行哈夫曼编码与解码

    最近完成了数据结构课程设计,被分到的题目是<哈夫曼编码和解码>,现在在这篇博文里分享一下自己的成果. 我在设计时,在网上参考了很多老师和前辈的算法和代码,向他们表示感谢!他们的成果给了我很 ...

  9. Sublime Text 3 实现C++代码的编译和运行

    在数据结构代码的编写中,我选用了优秀的编辑器 Sublime Text 3,但是在实现C++代码的编译和运行上费了一番周折,接下来我贴出 C++ 编译系统的代码,供各位参考. 编译后是在弹出的CMD命 ...

  10. mac 部署安装接口自动化持续集成 jmeter+ant+jenkins

    由于前段时间刚换的工作,公司用的是mac电脑办公,之前办公都是windows系统.刚开始使用时连基本的操作都要去找度娘,很不习惯,新电脑开始就是安装相关的工作工具 下面就说说遇到的哪些坑. 1.  m ...