在openEuler上搭建LFS

LFS7.7-systemd on openEulers实验报告

一. 实验介绍

本次课程将“如何构建一个自己的Linux操作系统”的津要和盘托出,依托专门撰写的“构建脚本”,足以让我们能够顺利地完成构建LFS系统的基础工作。

二. 虚拟机的安装方式

  1. 下载Virtualbox或者vmvare软件,以vmvare为例;
  2. 下载要安装的操作系统如openEuler20.09的iso镜像;
  3. 在vmvare上创建虚拟机;
  4. 调整虚拟机参数,主要是内存大小,处理器数量,硬盘大小;
  5. 将openEuler镜像安装到光驱;
  6. 启动虚拟机,傻瓜式安装;

三. 从社区获取资料

  1. LFS官网:https://www.linuxfromscratch.org/lfs/
  2. openEuler社区:https://openeuler.org/
  3. build-lfs7.7systemd.sh 构建脚本

四. LFS系统的构建

linux操作系统的基本操作
  1. 安装工具
yum group install -y "Development Tools"
yum install -y bc
yum install -y openssl-devel
yum install -y texinfo # for makeinfo
yum install -y vim
  1. 关于分区
lsblk,blkid #显示硬盘分区信息
fdisk #对硬盘进行分区操作
mkfs -v -t ext4 /dev/sdb1 #格式化
  1. 关于ip
ip a | grep 192.168
  1. 基本操作
scp -r root@192.168.56.102:~/opc/lfs-course/ ./
linux操作系统的基本架构和实现原理
  1. 准备构建LFS系统所需的包和补丁

lfs-packages-7.7-systemd.tar

  1. 创建并以lfs用户编译临时工具链
  • /mnt/lfs及lfs用户
1. 设置了$LFS环境变量
2. 在宿主机上创建相应文件夹
3. 将LFS系统将要编译和安装到的那个盘挂载进来
4. 创建lfs用户
  • L F S / s o u r c e s 和 LFS/sources 和 LFS/sourcesLFS/tools文件夹
    1. 构建LFS系统需要的包从本地拷贝到/mnt/lfs
    2. 这个包将会以lfs用户解压到$LFS/sources
    3. 另外请注意临时工具链都会安装到$LFS/tools
  • 用编译指南
    1. 以lfs用户解压要编译的软件包
    2. 进入到解压后创建的目录中
    3. 根据指南说明编译软件包
    4. 回退到源文件目录
    5. 除非特别说明,删除解压出来的目录
    6. 对于gcc-4.9.2编译过程中的一个问题,非官方解决方案安装一个补丁
    7. 注意几次chmod和chown的作用
  1. 在chrooted环境下构建真正的LFS目标系统
  • mount & chroot

和LFS-BOOK不同的是,我们允许您不断地重启宿主机系统,这在“构建脚本”中多次重启的命令也可以看出来。但在此节每次重启系统后,需要重新mount和chroot。为了可以在宿主机reboot后接着进行LFS系统的构建工作,建议将每次root登录进来之后的mount和chroot写成脚本

  • 通用编译指南
    1. 进入chroot环境后解压要编译的软件包
    2. 进入到解压后创建的目录中
    3. 根据指南说明编译软件包
    4. 回退到源文件目录
    5. 除非特别说明,删除解压出来的目录
  • 第二个版本的chroot

    完成本节的编译安装工作后,由于不再需要/tools目录,在以后的任务中可以修改mount和chroot命令

  1. 配置LFS目标系统

本节为LFS系统进行网络、主机名、/etc/hosts文件的设置,其余的配置可以忽略。

  1. 编译并安装内核

本节进行内核的编译和安装。需要注意的是make menu config这一步,除LFS-BOOK中所提到的那些配置选项外,需要选择和虚拟机提供的硬件相匹配的驱动(特别是硬盘的驱动),否则以后启动新系统时系统将会mount不上sdb。

  1. 设置GRUB使新系统可引导
  • LFS系统GRUB设置

LFS系统(即目前的chrooted环境)可以按以下命令生成grub.cfg文件:

grub-install /dev/sdb
grub-mkconfig -o /boot/grub/grub.cfg
  • 宿主机GRUB设置

对于宿主机的GRUB设置,将LFS系统的grub.cfg中menuentry模块复制到宿主机/boot/grub2/grub.cfg中的相应位置即可。

  1. 进入新系统

重启系统,会出现LFS系统的选择项,移动键盘的上下键选中它,按回车键进入,以root用户登录,输入LFS-BOOK 6.25.3. Setting the root password节设置的密码。

五. 作业的提交

  1. 注册gitee账户
  2. 获取lfs-course的仓库地址
  3. 从git仓库获取资料
  • Git的初始设置
git config --global user.name "your-user-name"
git config --global user.email "your-email-address-on-gitee"
  • 克隆lfs-course仓库
mkdir ~/openEuler
cd ~/openEuler
git clone https://gitee.com/openeuler-practice-courses/lfs-course
cd lfs-course/
ls
LICENSE  README.en.md  README.md  lfs-7.7-systemd/

4.提交作业

  1. 进入openEuler创新实践课官方代码仓
  2. 选择自己学校的代码仓进入
  3. 该页面上找到Fork按钮并fork之
  4. 先在gitee页面上拷贝仓库地址
  5. 在git命令窗口clone自己fork的仓库并进入仓库目录
  6. 新增上游远程分支
git remote add upstream https://gitee.com/openeuler-practice-courses/nankai_university_2021.git
git pull upstream
  1. 创建自己仓库的开发分支
git checkout -b zhaoyan upstream/master
git branch
  1. 同步上游代码
git pull --rebase
  1. 在自己的仓库下建立文件夹
mkdir 12306-zhaoyan
  1. 将自己的作业截图放到该文件夹下
  2. 增加此图片到仓库中
git add 12306-zhaoyan
git add 12306-zhaoyan /12306-zhaoyan.png
git status
  1. 提交至本地仓库
git commit -m "Push 12306-zhaoyan’s homework"
git status
  1. Push代码到自己的远程仓库
git push origin zhaoyan
git log
  1. 到gitee网页查看自己的远程仓库
  2. 进行“Pull Requests”操作
  3. 首次需签署个人CLA
  4. 在原始远程仓检查提交情况

六. 实验总结

  1. 这次实验主要是对心态的考验,这次实验前期的一个问题是虚拟机的安装,下载的vmvare者virtualbox可能会报错,需要重装或者修改网卡连接方式。我在实验过程中发现自己所用的openEuler版本不兼容导致报错,最后解决了这个问题。
  2. 还有一个就是在对照bash文件进行粘贴的时候需要注意其中reboot命令处会被打断,为了方便复制粘贴,可以使用SSH连接。
  3. 实验过程中可能会报错,并且很难找到错误的原因,这个时候一方面需要有足够的耐心,另一方面还要有从头再来的勇气,当然,为了不要真的“从头”再来,不时地拍个快照是个不错的习惯。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值