LFS搭建总结

该文档参考LFS官网 和 https://www.cnblogs.com/alphainf/p/16661308.html
下文中未提及的部分参考官方文档

环境准备

在Oracle VM VirtualBox中先创建一个20G的磁盘,安装bebian操作系统,此时该硬盘为sda,分了三个区,分别是Linux,Extended和Swap。(ps:系统安装在固态硬盘中,不然后续编译会很慢)

分区

在Oracle VM VirtualBox再安装一个40G的磁盘sdb用于后续使用

根据书中的要求,我们要对即将构造lfs的磁盘sdb进行分区。
我们将其分成三个分区,分别为boot,swap,root。其中:
boot分区用于进行系统引导,且是sdb的第一个分区,分区大小为256MB。
swap分区用于进行内存交换,分区大小为2G。该分区将用于进行内存交换(当运行内存不足时将会发生交换)
root分区为主分区,整个LFS系统将会构造在其中

在分区上创建文件系统

我们需要将boot分区(/dev/sdb1)和root分区(/dev/sdb3/)设置为ext4文件系统
对于swap分区(/dev/sdb2),我们需要将其设置为交换目录,命令如下

mkfs -v -t ext4 /dev/sdb1
mkfs -v -T small -t ext4 /dev/sdb3
mkswap /dev/sdb2

设置$LFS环境变量

export LFS=/mnt/lfs

注意:随时查看$LFS环境变量,切换用户和退出程序的时候可能丢失

挂载分区

我们创建文件夹/mnt/lfs,并将root分区(/dev/sdb3)挂载到/mnt/lfs中,代码如下:

mkdir -pv $LFS
mount -v -t ext4 /dev/sdb3 $LFS

我们创建文件夹LFS/boot,并将boot分区(/dev/sdb1)挂载到
LFS/boot下,代码如下:

mkdir -v $LFS/boot
mount -v -t ext4 /dev/sdb1 $LFS/boot

我们用下面这条指令挂载swap分区

/sbin/swapon -v /dev/sdb2

文件安装

依照官方文档

注意:
1.当一个软件多次安装的时候(例如gcc第二次)需要删除原来的文件并重新解压,不能被以前的数据影响
2.编译和测试的时候可以使用多线程提升速度:make -j4 或者 make -j4 check

进入Chroot并构建临时工具

注意:
1.进入chroot的时候必须用su - root不能用su root,不然不会有chroot命令
2.如果出现机器重启的情况,需要重新“挂载和激活/dev” 和“挂载虚拟文件系统”以及“创建shm目录”
3.chroot步骤的安装参考以前的安装方式,只不过目录为chroot下的sources

文件备份

Oracle VM VirtualBox提供了快照功能,可以忽略这一部分。

软件安装及清理

注意:
1.安装软件的时候make check可能会错误,有一些错误可以忽略
2.官方文档第八章glibc设置时区:Americas-》United States-》Eastern

系统配置

文档9.6.5的配置

cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console

UNICODE="1"
KEYMAP="us"
FONT="lat1-16 -m 8859-1"

# End /etc/sysconfig/console
EOF

文档9.7 shell配置(用到8.5节安装过的语言)

LC_ALL=en_US.iso88591 locale charmap
LC_ALL=en_US.iso88591 locale language
LC_ALL=en_US.iso88591 locale int_curr_symbol
LC_ALL=en_US.iso88591 locale int_prefix
cat > /etc/profile << "EOF"
# Begin /etc/profile

export LANG=en_US.ISO-8859-1

# End /etc/profile
EOF

使 LFS 系统可引导

文档10.2创建/etc/fstab

对照官方文档:本人机器 对应sdb3,对应ext4,对应sdb2
但是,我们还有boot分区,该分区也要一并设置进fstab中,我们还要增加boot的设置

然后,考虑到在接下来的设置中,由于磁盘将会互换,sdb会变为sda,编号不稳定,我们可以用稳定的UUID进行磁盘确认。
使用如下命令:

blkid

用sdb1/2/3对应的UUID对上面的fstab进行替换,替换后的fstab如下:

cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# file system mount-point type options dump fsck
# order
#/dev/sda3 is the root
UUID=4ee938e6-61f5-42cc-aa5d-b86f7df71b81 / ext4 defaults 1 1
#/dev/sda1 is the boot
UUID=ee79b98c-8393-43a4-8e90-23a228329b83 /boot ext4 defaults,noauto 0 2
#/dev/sda2 is the swap
UUID=b8010fbf-3557-4277-9bca-153a276ca2d8 swap swap pri=1 0 0
proc /proc proc nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0
# End /etc/fstab
EOF

Linux内核安装

make mrproper
make defconfig  #这一行主要是进行一些默认配置
make menuconfig

在虚拟机下应该勾选上如下的选项

Device Drivers --->
   Generic Driver Options --->
   [*]Network device support --->
      [*]Ethernet Driver support --->
         [*] AMD PCnet32 PCI support
   [*]Fusion MPT device support --->
      <*> Fusion MPT ScsiHost drivers for SAS
      <*> Fusion MPT misc device (ioctl) driver  
      [*] Fusion MPT logging facility 
   SCSI device support --->
      [*] SCSI low-level drivers

GRUB安装

无需解压和cd,我们直接运行以下命令
本人机器使用如下命令:

grub-install /dev/sdb

创建/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 5.10.17-lfs-10.1" {
        linux   /boot/vmlinuz-5.10.17-lfs-10.1 root=/dev/sda3 ro
}
EOF

收尾并启动LFS

echo 10.1 > /etc/lfs-release

cat > /etc/lsb-release << "EOF"
DISTRIB_ID="Linux From Scratch"
DISTRIB_RELEASE="10.1"
DISTRIB_CODENAME="xwj"
DISTRIB_DESCRIPTION="Linux From Scratch"
EOF

cat > /etc/os-release << "EOF"
NAME="Linux From Scratch"
VERSION="10.1"
ID=lfs
PRETTY_NAME="Linux From Scratch 10.1"
VERSION_CODENAME="xwj"
EOF

离开chroot环境

完成这些工作后,我们输入以下命令离开chroot环境

logout

解除挂载

umount -v $LFS/dev/pts
umount -v $LFS/dev
umount -v $LFS/run
umount -v $LFS/proc
umount -v $LFS/sys
umount -v $LFS/boot
umount -l $LFS

更改磁盘顺序

先关机,关机后,我们调整两块磁盘的挂载顺序。
我们更改LFS安装的磁盘的挂载位置,使其从SCSI 0:1变更为SCSI 0:0,变更后的情况如图所示
LFS搭建总结_第1张图片
将虚拟硬盘端口互换

启动LFS

启动虚拟机成功以后,登录用户使用root

项目遇到的非技术问题:

1.使用快捷键的时候小心ctrl+shift和其他键的组合可能造成FireFox浏览器故障
2.虚拟机自带的火狐浏览器偶尔会解析不了网址,需要换一个更稳定的浏览器

你可能感兴趣的:(服务器,运维)