20. Debian根文件系统的构建

20.1. 前言

我们这里使用目前Debian社区较为推荐的Multistrap构建Debian根文件系统,与传统的debootstrap不同,multistrap在包的选择上更具灵活性

Multistrap的详细信息可以看 https://manpages.debian.org/bullseye/multistrap/multistrap.1.en.html

20.2. 安装依赖

1
sudo apt-get install tar qemu-user-static vim multistrap -y

20.3. 配置config_file

我们创建一个文件config_file存放我们需要安装的包信息

1
2
3
touch ./config_file
mkdir ./rootfs
vim ./config_file

填入如下内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  [General]
  #directory=target-rootfs
  cleanup=true
  noauth=true
  unpack=true
  debootstrap=Debian Net Utils Ebf
  aptsources=Debian
  noauth=true # GPG error

  [Debian]
  packages=apt kmod lsof
  #source=https://mirrors.sjtug.sjtu.edu.cn/debian/
  source=https://mirrors.tuna.tsinghua.edu.cn/debian/
  keyring=debian-archive-keyring
  suite=buster
  components=main contrib non-free

  [Net]
  # Basic packages to enable the networking
  packages=netbase net-tools ethtool udev iproute2 iputils-ping ifupdown isc-dhcp-client ssh
  #source=https://mirrors.sjtug.sjtu.edu.cn/debian/
  source=https://mirrors.tuna.tsinghua.edu.cn/debian/

  [Utils]
  # General purpose utilities
  packages=locales vim adduser less wget dialog usbutils
  #source=https://mirrors.sjtug.sjtu.edu.cn/debian/
  source=https://mirrors.tuna.tsinghua.edu.cn/debian/

  [Lhf]
  packages=python3 mate-desktop-environment
  source=http://mirrors.bfsu.edu.cn/debian
  suite=buster
  components=main contrib non-free

  [Ebf]
  packages= ifupdown rsyslog htop iputils-ping
  source=http://mirrors.bfsu.edu.cn/debian
  suite=buster
  components=main

其中之需要将需要的安装包添加到 [Ebf] 中的 packages 即可

20.4. 下载与构建

然后执行 multistrap -a armhf -d ./rootfs/ -f ./config_file

1
 multistrap -a armhf -d ./rootfs/ -f ./config_file

等待配置完成后执行如下代码配置密码

1
2
3
4
5
6
 cd ./rootfs
 sudo cp /usr/bin/qemu-arm-static ./usr/bin/
 sudo echo "nameserver 8.8.8.8"  > ./etc/resolv.conf
 sudo chroot ./
 passwd root //设置root的密码
 exit

20.5. 调试与烧写

现在我们可以把该目录放置到我们的NFS中试试能否启动,/home/lhf/nfs是你的nfs网络文件系统根目录,若未搭建nfs网络文件系统,请参考 Buildroot根文件系统的构建章节的第5小节 搭建NFS网络系统

如果要烧写到开发板中,参考 根文件系统的几种烧写方法