lfs系列从零开始diylinux系统:基本系统配置-使用grub设置启动过程(代码片段)

Lucifer三思而后行 Lucifer三思而后行     2023-01-09     592

关键词:

简介

一定要确保你有一个可以引导的光盘或者是 U 盘以备不时之需,否则万一电脑真的不能启动谁都救不了你。如果你需要建立可引导的设备,可以按照以下方法操作(跳转到 BLFS 从 libisoburn 软件包安装 xorriso)。
(其实你手头可以备一个其它发行版的 LiveCD 制作的可引导 U盘,以备不时之需。Ubuntu、Fedora之类的都是上佳之选。)

cd /tmp 
grub-mkrescue --output=grub-img.iso 
xorriso -as cdrecord -v dev=/dev/cdrw blank=as_needed grub-img.iso 

GRUB 命名约定

GRUB 对于硬盘和分区自有一套命名规则(hdN,M),其中 N 是硬盘数,M 是分区号。硬盘数 N 从 0 开始计数,分区数需要区别对待——主分区从 1 开始计数而扩展分区从 5 开始计数。

需要注意的是,和早期版本相比,计数方式都有所变化。例如,分区 sda1 是 (hd0,1),sdb3 是 (hd1,3)。Linux 下,并不将 CD-ROM 设备假想为硬盘。

例如,就算已有 CD 设备挂载为hdb,第二块硬盘挂载为 hdc,GRUB 依旧将第二块硬盘称为(hd1)。
(为什么这里扩展分区从 5 计数,可以查看 mbr 的相关知识。早期版本的 GRUB 是什么计算磁盘和分区数,我忘记了,不过,大家就记住新的就好啦。)

配置配置文件

GRUB 会将一些数据写入硬盘的第一个物理扇区。这一部分不属于任何一个操作系统,在启动时,该部分数据激活,然后寻找 Grub 的模块,Grub 模块的默认位置为 /boot/grub/。

一种建议是使用一个独立的小分区(建议大小 100MB)专用于引导信息。那样的话,每一个发行版,不论是 LFS 还是其他的商业发行版,都能访问相同的引导文件而且任何已经启动的系统都能访问它。如果你选择这么做,你需要挂载这个独立分区,移动所有的文件从当前的 /boot 目录(比如说你上一节刚编译的 Linux 内核)到新的分区。你然后要卸载这个新分区,重新挂载它为 /boot。如果你这么做,一定要更新 /etc/fstab。
使用当前的 lfs 分区也没有什么问题,但是在配置多系统启动的时候有些不同。

从以上信息可知,需要确定根分区的磁盘位置(如果使用单独的分区,则需要知道引导分区的磁盘位置),以下假定根分区(或者是磁盘分区)是 sda3

将 GRUB 文件安装到 /boot/grub 然后设置启动扇区:

grub-install /dev/sda

⚠️ 警告: 以上命令将会覆盖已有的引导器。如无需要,请勿运行(比如已经有第三方引导器管理 MBR)。

创建 GRUB 配置文件

创建 /boot/grub/grub.cfg:

cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd0,1)

menuentry "GNU/Linux, Linux 3.19-lfs-7.7-systemd" 
        linux   /boot/vmlinuz-3.19-lfs-7.7-systemd root=/dev/sda3 ro

EOF

GRUB 功能十分强大,它提供了大量的用于从种类繁多的设备和操作系统以及不同的分区类型启动的选项。此外还可以定制溅射屏幕、播放声音或者是鼠标等。

📢 注意: grub-mkconfig 命令可以自动建立配置文件。它使用位于 /etc/grub.d/ 下的一组脚本且将会忽略用户的设置。这些命令主要用于那些非源码编译的发行版,所以不建议 LFS 用户使用此命令。如果你使用商业发行版,你可以试着运行这个命令(运行之前记得备份原来的 grub.cfg文件)。


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️

lfs系列从零开始diylinux系统:基本系统配置-系统区域设置(代码片段)

本地语言的支持依赖于/etc/locale.conf,/etc/locale.conf包含不少于此相关的环境变量。更改此文件后,可能会出现以下的变化:大量的程序界面语言的本地化修正字符在字母、数字和其它类的分类。对于非英语区域设置来... 查看详情

lfs系列从零开始diylinux系统:基本系统配置-linux-3.19(代码片段)

Linux软件包包含Linux内核。安装内核编译内核包括以下步骤—配置、编译和安装。首先进入到源码目录,解压软件包:cd/sourcestarxflinux-3.19.tar.xzcdlinux-3.19运行以下命令准备编译:makemrproper这将保证内核树的绝对干净。内... 查看详情

lfs系列从零开始diylinux系统:基本系统配置-创建/etc/inputrc文件(代码片段)

inputrc文件的作用是告知系统应该以怎样的键盘布局处理键盘。此文件对于readline(readline:GNUreadlinelibrary,和输入紧密相关的库)或者是一些shell(例如bash等)来说十分重要。对于大部分用户来说,都... 查看详情

lfs系列从零开始diylinux系统:基本系统配置-systemd的用法与配置(代码片段)

基本配置/etc/systemd/system.conf文件包含了大量的systemd控制命令。假如未作任何的更改,文件中的所有行应该都是注释掉的,这代表了systemd正使用默认的运行方式。这个文件中可以设置日志级别,可以修改日志的基本设... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-inetutils-1.9.2(代码片段)

Inetutils软件包包含基本的网络程序。安装Inetutils首先进入到源码目录,解压软件包:cd/sourcestarxfinetutils-1.9.2.tar.gzcdinetutils-1.9.2创建一个定义使ifconfig程序能正确编译:echo'#definePATH_PROCNET_DEV"/proc/net/dev 查看详情

lfs系列从零开始diylinux系统:基本系统配置-创建/etc/shells文件(代码片段)

shells文件是当前系统所有可用shell的列表文件。应用程序通过读取它可以知道需要使用的shell是否有效。每行指定一个可用的shell,且需要为绝对路径。例如,当非特权用户想要使用chsh命令更改自己登录所用的shell时。如... 查看详情

lfs系列从零开始diylinux系统:基本系统配置-使用grub设置启动过程(代码片段)

简介一定要确保你有一个可以引导的光盘或者是U盘以备不时之需,否则万一电脑真的不能启动谁都救不了你。如果你需要建立可引导的设备,可以按照以下方法操作(跳转到BLFS从libisoburn软件包安装xorriso)。࿰... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-coreutils-8.23(代码片段)

Coreutils软件包包含用于显示和设置基本系统特性的工具。安装Coreutils首先进入到源码目录,解压软件包:cd/sourcestarxfcoreutils-8.23.tar.xzcdcoreutils-8.23POSIX要求Coreutils中的程序即使在多字节语言环境也能正确识别字符边界。下... 查看详情

lfs系列从零开始diylinux系统:构建临时系统-coreutils-8.23(代码片段)

Coreutils软件包包含一套用于显示和设定基本系统属性的工具。首先,切换到lfs用户下:su-lfs确保环境变量已生效,并且解压软件包echo$LFScd$LFS/sourcestarxfcoreutils-8.23.tar.xzcdcoreutils-8.23配置Coreutils准备编译:./configure--pr... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-perl-5.20.2(代码片段)

Perl软件包包含实用信息抽取与报告语言。安装Perl首先进入到源码目录,解压软件包:cd/sourcestarxfperl-5.20.2.tar.bz2cdperl-5.20.2首先创建其中一个Perl配置文件和可选测试套件引用的基本/etc/hosts文件:echo"127.0.0.1localhost$(h... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-glibc-2.21(代码片段)

Glibc软件包包含了主要的C函数库。这个库提供了分配内存、搜索目录、打开关闭文件、读写文件、操作字符串、模式匹配、基础算法等基本程序。安装Glibc首先进入到源码目录,解压软件包:cd/sourcestarxfglibc-2.21.tar.xzcdglibc... 查看详情

lfs系列从零开始diylinux系统:构建临时系统-glibc-2.21(代码片段)

Glibc软件包包括主要的C库!这个库提供了基本的内存分配、文件夹搜素、读写文件、字符串处理、模式匹配、算术等等例程。首先,切换到lfs用户下:su-lfs确保环境变量已生效,并且解压软件包echo$LFScd$LFS/sourcestar... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-创建目录(代码片段)

现在准备创建LFS文件系统里的一些目录结构。使用下面的命令创建一个标准的目录树:mkdir-pv/bin,boot,etc/opt,sysconfig,home,lib/firmware,mnt,optmkdir-pv/media/floppy,cdrom,sbin,srv,varinstall-dv-m0750/rootinstall-dv-m1777/tmp/va 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-iproute2-3.19.0(代码片段)

IPRoute2软件包包含基于IPV4网络的基本和高级程序。安装IPRoute2首先进入到源码目录,解压软件包:cd/sourcestarxfiproute2-3.19.0.tar.xzcdiproute2-3.19.0该软件包包含的二进制程序arpd依赖于BerkeleyDB。由于arpd在基础Linux系统中通常并不... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-进入chroot环境(代码片段)

现在可以切换到chroot环境开始构建和安装最终的LFS系统了。以root用户运行下面的命令进入这个“空间”,目前,里面只入住了之前准备的临时工具:chroot"$LFS"/tools/bin/env-i\\HOME=/root\\TERM="$TERM"\\PS1=&... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-kmod-19(代码片段)

Kmod软件包包含用于加载内核模块的库和工具安装Kmod首先进入到源码目录,解压软件包:cd/sourcestarxfkmod-19.tar.xzcdkmod-19准备编译Kmod:./configure--prefix=/usr\\--bindir=/bin\\--sysconfdir=/etc\\--with-rootlibdi 查看详情

lfs系列从零开始diylinux系统:收尾(代码片段)

哈哈,干的很不错!到这里,全新的LFS系统就已经安装完成了!我们也很期待你那闪闪发光的定制Linux系统呐。创建一个systemd所需的/etc/os-release文件:cat>/etc/os-release<<"EOF"NAME="LinuxFromScratch"... 查看详情

lfs系列从零开始diylinux系统:构建lfs系统-ncurses-5.9(代码片段)

Ncurses软件包包含用于不依赖于特定终端的字符屏幕处理的库。安装Ncurses首先进入到源码目录,解压软件包:cd/sourcestarxfncurses-5.9.tar.gzcdncurses-5.9准备编译Ncurses:./configure--prefix=/usr\\--mandir=/usr/share/man\\--with-share 查看详情