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. 面试中的作用域题和THIS 指向的问题

    作用域的面试题 1. fn() function fn () { console.log(12) } var as = function () { console.log(45) } 2. var a ...

  2. WordPress教程之初识WordPress

    你是否梦想过以极低的成本获得一个漂亮的网站,而无需聘请专业的开发和设计人员,也不必学习任何编程知识,并且网站功能可以无限扩展?对这些问题中的任何一个,如果你的答案是肯定的,那么 WordPress 将 ...

  3. django基础知识之Ajax:

    使用Ajax 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差 改进方案:通过ajax的方 ...

  4. Jpa 笔记

    ORM 思想 对象关系映射, 建立实体类和表的关系映射关系, 实体类和表中字段的映射关系,我们操作实体类底层是操作数据表, 进而自动的拼接出SQL语句 Jpa规范 Jpa(Java Persisten ...

  5. GitHub使用整理——从开始到上传项目

    前期准备 首先是github官网: https://github.com/ 下载github工具: https://git-for-windows.github.io/ 进入github创建一个新的项 ...

  6. 关于Markdown编辑器的基本使用规则

    @TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown ...

  7. Lucene05-分词器

    Lucene05-分词器 1.概念 Analyzer(分词器)的作用是把一段文本中的词按规则取出所包含的所有词.对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同 ...

  8. 【Go】类似csv的数据日志组件设计

    原文链接:https://blog.thinkeridea.com/201907/go/csv_like_data_logs.html 我们业务每天需要记录大量的日志数据,且这些数据十分重要,它们是公 ...

  9. c++小游戏——2048

    #include <stdio.h> #include <time.h> #include <conio.h> #include <windows.h> ...

  10. Excel催化剂开源第19波-一些虽简单但不知道时还是很难受的知识点

    通常许多的知识都是在知与不知之间,不一定非要很深奥,特别是Excel这样的应用工具层面,明明已经摆在那里,你不知道时,永远地不知道,知道了,简单学习下就已经实现出最终的功能效果. 在程序猿世界里,也是 ...