LFS - Linux From Scratch 从零开始全记录 - 1 准备篇

发布时间 2023-06-03 16:46:48作者: Zijian/TENG

上次折腾 LFS 已经是好几年前了,只记得最后用 VMware 引导成功了,好多技术细节已经不记得了。趁着最近有空,再来折腾一次。这一次用的一台新的 Win10 PC,目标是在一个 U 盘上构建 LFS,然后用 U 盘引导物理机,顺便记录一下整个过程。

准备阶段

下载虚拟机、Ubuntu 镜像

  1. 下载安装 Microsoft Visual C++ Redistributable 2019,VirtualBox 依赖于该组件,如果安装其他程序的时候已安装过这个包,则可跳过
  2. 下载安装 VirtualBox
  3. 下载 Ubuntu 22.04.2 LTS 镜像 ubuntu-22.04.2-desktop-amd64.iso 考虑到网速,我从清华镜像站下载的

虚拟机设置

按照我的个人习惯,创建两个磁盘文件

  • /dev/sda 用于系统:BIOS boot、EFI System(/boot)、RootFS(/)
  • /dev/sdb 用于主目录(/home)。万一今后系统挂掉了,我们平时保存资料的 /home 里面的东西都还在,重新搞个虚拟机,再挂载上去就可以了。当然,也可以方便地把这个 vdi 虚拟磁盘文件挂载到其他 Linux 系统

创建虚拟机、挂载上述两个 vdi 文件,挂载光盘镜像,启动,安卓 Ubuntu,按照提示一路下一步即可,安装完成后,弹出 Ubuntu 光盘镜像。

安装后的 Linux 配置

按照个人习惯的可选配置

# 安装 gcc、vim 等工具
sudo apt install vim gcc

# 安装 sshd,这样就可以在 Windows Terminal 中通过 SSH 访问,不再需要 VirtualBox 的图形界面了
sudo apt install openssh-server

# 把 Windows 的公钥 id_rsa.pub 拷贝到 Linux 虚拟机 ~/.ssh/authorized_keys 中,之后可以免密登录。Windows 公钥可以在 PowerShell 通过 ssh-keygen.exe 命令生成,一路回车即可,默认保存在 C:\Users\<username>\.ssh\id_rsa.pub 中
vi ~/.ssh/authorized_keys

# 按照个人习惯设置提示符、命令别名等
vi ~/.bashrc
# 修改 PS1='\w '
# 增加以下别名
# alias l='ls -lh'
# alias sl='ls'
# alias mkae='make'

分区、格式化

# 分区,把 sdb 只分了一个 gpt 分区
sudo cfdisk /dev/sdb # 顺便记下 sdb1 的 Filesystem UUID: 3d7d0be8-02de-420c-9af3-ec0a6c4cca16,后面自动挂载分区要用

# 格式化为 ext4 格式
sudo mkfs -t ext4 -F /dev/sdb1

自动挂载 /dev/sdb

修改 /etc/fstab 自动挂载 /home

sudo vi /etc/fstab

增加下面一行,其中 UUID 来自上面分区的步骤

UUID=3d7d0be8-02de-420c-9af3-ec0a6c4cca16 /home ext4 errors=remount-ro 0 1

转移 /home 到 /dev/sdb

# 备份整个 ~ 目录到 /tmp,其中 -a 可以复制其中的隐藏文件、保留链接、文件属性等
cp -a /home/zijian/ /tmp
sudo rm -rf /home/*

# 挂载
sudo mount /dev/sdb1 /home # 顺便提一句,卸载是 sudo umount /home,并且当前不能在 /home 目录里执行 umount 命令

# 把主目录拷贝到 /dev/sdb 中
sudo cp -a /tmp/zijian /home

新的虚拟机差不多就这样,下一篇开始按照 LFS 教程开始操作!