该片文章将完整记录一个Debian的最小文件系统的生成,以及自定义配置WIFI组件、网络组件和交换分区配置
本文章参考:
https://whycan.com/t_4236.html
http://www.leux.cn/doc/debootstrap.html
(该网站在备案中,可能暂时无法查看了) 帖子整理完成。 # 1. 制作Debian系统 构建debian文件系统,作为记录,最小rootfs在180MB左右。
1.1 配置构建环境
安装构建文件系统的工具,一个是用来chroot,一个是用来构建文件系统
sudo apt install qemu-user-static -y
sudo apt install debootstrap -y
mkdir rootfs
构建文件系统之前,你要知道你想要构建哪个版本的文件系统,
我从 https://www.debian.org/mirror/list.zh-cn.html 这里,
选择了我访问速度快的源,并且该源有armel。
armhf (支持硬件浮点)
armel (软浮点)
我用这个了mirrors.ustc.edu.cn
然后就是debian的版本,我尝试一下buster对应debian 10,不算是最新的,最新的是bookworm对应debian 12,中间还有个Debian 11 叫 bullseye,不过debian 10是LTS的,还是保险点吧
sudo debootstrap --foreign --verbose --arch=armel buster rootfs http://mirrors.ustc.edu.cn/debian/
构建完成之后,需要chroot进去修改密码等配置
cd rootfs
sudo mount --bind /dev dev/
sudo mount --bind /sys sys/
sudo mount --bind /proc proc/
sudo mount --bind /dev/pts dev/pts/
cd ..
sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/
sudo chmod +x rootfs/usr/bin/qemu-arm-static
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs /debootstrap/debootstrap --second-stage --verbose
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs
最后一条命令chroot完成,
此时可以先apt-get等给你的文件系统安装你需要的软件包
为了提高下载速度,我们首先修改源
vi /etc/apt/sources.list
改为(注意要换其他源用http方式可以访问的,要不然还得处理https的内容):
deb http://mirrors.ustc.edu.cn/debian buster main
改完以后执行:
apt-get update
使源生效
安装网络相关的库
apt-get install wpasupplicant #安装WIFI配置相关的组件
apt-get install net-tools #安装网络基础组件、如使用ifconfig等
apt-get install udhcpc #当wifi连接成功后,需要用这个组件去获取IP地址
## 其他组件
apt-get install wireless-tools
apt install sudo vim openssh-server htop
apt install pciutils usbutils
1.2 配置账号
修改root登录密码的方式如下
passwd root
添加用户
groupadd <用户组>
useradd -m -g <用户组> -s /bin/bash <用户名>
passwd <用户名>
1.3 新增账号sudo配置
对于出现
<用户名> is not in the sudoers file. This incident will be reported.
切换到超级用户:
su
打开/etc/sudoers
文件:
vi /etc/sudoers
修改文件内容
保存退出
修改主机名,否则将会以当前编译的系统的主机名进行设置(如:笔者为Ubuntu,相当的尴尬)
HOSTNAME=<你的主机名>
echo $HOSTNAME > /etc/hostname
echo $HOSTNAME > /proc/sys/kernel/hostname
sed -i '/localhost/s/$/\t'"$HOSTNAME"'/g' /etc/hosts
1.4 配置时区
修改系统默认时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
1.5 配置SSH
如果要使用SSH服务,并且允许SSH客户端以root方式登录需要进行一下设置。
vi etc/ssh/sshd_config
添加
PermitRootLogin yes
1.6 rootfs打包
当所有的内容制作完成,就可以清理缓存,打包之后就可以替换你的文件系统了
apt-get clean #删除安装包
exit #退出chroot
sudo rm rootfs/usr/bin/qemu-arm-static
卸载刚在挂载的文件夹。
cd rootfs
sudo umount dev/pts/
sudo umount dev/
sudo umount sys/
sudo umount proc/
打包文件。
cd rootfs #进到文件系统目录,如果已经在该文件夹下,可以忽略
tar cvf ../rootfs.tar . #要注意那个. 代表当前目录
生成的rootfs.tar任意解压到文件系统即可
2. 使用wpa_supplicant连接wifi
创建配置文件
vi /etc/wpa_supplicant.conf
输入内容:
network={
ssid="我的热点"
psk="我的密码"
}
然后执行命令
wpa_supplicant -B -d -i wlan0 -c /etc/wpa_supplicant.conf
示例如下
执行dhcp命名,获取IP地址
3. 增加swap分区
在使用一些软件的过程中,会遇到系统崩溃,尤其是使用 apt-get install 的时候,所以需要加入swap分区,可以简单理解为虚拟内存。
使用
free -m -h
查看当前swap大小,
使用如下命令创建你想要添加swap分区的大小
dd if=/dev/zero of=/swap1 bs=1M count=512 #改成你要设置的SWAP大小,512就是512MB
设置swap分区文件
mkswap /swap1
激活swap分区
swapon /swap1
此时使用free命令就能看到创建好的swap分区,但这只是临时性的, 重启会失效,需要配置一下,下次开机时候要开swap
vi /etc/fstab
操作,在最后一行添加
/swap1 swap swap defaults 0 0
展示
开始进入Debian
使用我们自定义的pi账户登录
使用命令查看Swap分区
如果需要再次用qemu制作镜像
cd rootfs
sudo mount --bind /dev dev/
sudo mount --bind /sys sys/
sudo mount --bind /proc proc/
sudo mount --bind /dev/pts dev/pts/
cd ..
sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/
sudo chmod +x rootfs/usr/bin/qemu-arm-static
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs
再重复1.6的操作