目录
一、Debian系统介绍
Debian GNU/Linux 是 Linux 操作系统的一个特定发行版,以及在其上运行的众多软件包。Debian项目由 Ian Murdock 于 1993 年发起,是在Linux发行版的概念还很新的时候获得广泛认可的首批自由软件项目之一。Debian 这个名字——发音为 deb-EE-uhn——是一个合成词,它混合了创建者的名字 Ian 和他妻子 Debra 的名字。
二、Linux发行版和Linux内核的关系
内核:位于应用软件和底层硬件系统之间。它直接与硬件通信,传递应用软件的任何请求。一个简单的例子来说明这一点,就是在手机上录制视频。当你点击相机应用程序时,该软件将向内核传达它想要使用相机和麦克风的信息。然后,内核将通知摄像头和麦克风硬件唤醒并做好准备。那么现在,软件和硬件将协同工作,为你录制好视频。
操作系统:主要目的是管理系统进程和资源。它包含内核,因此执行内核可以执行的所有任务。此外,它还确保系统保护和安全。操作系统充当用户和底层硬件系统之间的接口。所有应用程序都在操作系统创建的封闭环境中运行。因此,没有操作系统就无法使用系统。
Linux 本身就是一个内核。然后,开发人员在其基础上进行构建,以提供当今可用的各种 Linux 发行版。
三、Debian文件系统制作
由于F1C200s的RAM只有64M,无法支持像是Ubuntu-Core这样的文件系统(最低RAM需求512M),所以一般只能用buildroot来生成简单的文件系统,或者裸机开发。
但是为了方便地使用Debian系的丰富软件,我们可以自己构建Debian最小系统,最小rootfs在180MB左右。
— 稚辉君
1、环境配置
首先下载两个工具:qemu-arm-static和debootstrap。
🥝 qemu-arm-static:通过qemu-arm-static,我们在x86的Ubuntu PC机上,可以模拟ARM处理器,就像运行在ARM上一样进行各种操作。这样既实现了ARM环境,又利用了x86 PC的处理能力。
🥝 debootstrap:是Debian/Ubuntu下的一个工具,用来构建一套基本的系统(根文件系统)。生成的目录符合Linux文件系统标准(FHS),即包含了/boot、/etc、/bin、/usr等等目录,但它比发行版本的Linux体积小很多,当然功能也没那么强大,因此,只能说是“基本的系统”。
sudo apt install qemu-user-static -y sudo apt install debootstrap -y mkdir Debian_rootfs
2、Debian文件系统构建
由于我们的Ubuntu是Linux系统,而开发板是ARM系统,在使用bootstrap为外部体系结构引导发行版时,才需要分开两个阶段。请参见手册页–foreign上的选项说明。
例如,使用x64机器为嵌入式ARM系统创建Debian安装系统。第一阶段将下载所需的.deb文件并将其解压缩到您指定的目录中。第二阶段解压运行所有程序包配置脚本,这些脚本必须使用目标体系结构或使用qemu-user-static模拟目标体系结构来完成,在此处我们使用qemu-user-static模拟ARM系统来完成。在完成两个阶段的配置后,还需要进入qemu模拟器进行一些必要配置。
🍟 第一阶段
使用华为镜像源抽取根文件系统(下载deb软件包),命令如下,bootstrap命令详解见Bootstrap命令详解。其中foreign表示若目标架构与本机架构不符时,需要携带该参数;arch代表架构,armhf (支持硬件浮点)、armel (软浮点);verbose表示不打印wget等包下载数据,进行静默安装;buster代表Debian发行版本代号。
sudo debootstrap --foreign --verbose --arch=armel buster rootfs http://mirrors.huaweicloud.com/debian/
其中,不同Debian发行版代号如下。命令执行完成后就是大家最常见的linux根文件系统,但是目前还不能直接使用,还需要对其做一些其他的配置。
版本号 | 代号 | 备注 |
Debian 11 | bullseye | 稳定版 |
Debian 10 | buster | 旧稳定版 |
Debian 9 | stretch | 旧稳定版 |
Debian 8 | jessie | 已存档版 |
Debian 7 | wheezy | 被淘汰版 |
Debian 6 | squeeze | 被淘汰版 |
Debian 5 | lenny | 被淘汰版 |
至此,已经下载了最小的Debian系统, 你也可以将它想象为”最小系统”类似的存在,没有其他 “外设” 。下图是我补充的图片,所在文件夹名字和上面不同。
🍟 第二阶段
上面讲在第二阶段我们应该使用qemu-user-static模拟ARM系统运行所有程序包配置脚本,怎么模拟ARM系统呢?使用qemu这个虚拟机。简而言之,我们需要在qemu模拟出的ARM系统中执行一个Debian系统配置,相当于把Debian放到ARM开发板上配置。具体操作为:文件夹挂载 + chroot切换根目录。
1)文件挂载:
首先对文件夹按照下面的命令进行挂载,这里为什么需要挂载呢?
cd rootfs sudo mount --bind /dev dev/ sudo mount --bind /sys sys/ sudo mount --bind /proc proc/ sudo mount --bind /dev/pts dev/pts/
我的理解是:因为在宿主(Ubuntu虚拟机)是x64架构,不能安装arm架构的软件,需要依靠qemu-arm-static来模拟成arm环境进行安装,而模拟arm环境相当于,以指定的某个目录为新的根目录,如果不更改挂载点,直接下载一些软件或者依赖项就会下载到原来的挂载点而出错。
通俗一点的理解:虽然更新了根目录,如果没有挂载新文件系统的/dev等文件夹,如果再去操作/dev,相当于还是在操作Ubuntu的/dev,只有挂载了这个文件夹之后,再操作才相当于真正操作Debian新的根文件系统的/dev。评论区讨论吧!欢迎指正!
2)chroot切换根目录:
chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 /,即以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 / 位置。
sudo cp /usr/bin/qemu-arm-static usr/bin/
使用上面的命令将我们之前安装的qemu复制到/rootfs/usr/bin目录下,可以看到我们具有该文件的读、写、可执行权限。
然后在Debian_rootfs目录下执行下面的命令,该命令意思是设置一些环境变量,并使用chroot命令将rootfs切换为新的根目录,执行目录rootfs/debootstrap下的命令: debootstrap –second-stage,后面的是debootstrap可执行文件的两个参数。
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs /debootstrap/debootstrap --second-stage --verbose
该命令的主要作用是:对拉取的Debian根文件系统进行配置。这主要是由上面的–foreign选项决定的。这里是使用qemu-user-static模拟目标体系结构来完成的,因为我们使用的chroot更改了根目录,并挂载了新的文件系统的文件夹,相当于使用chroot命令+挂载,完成arm架构的模拟。
三、Debian文件系统配置
sudo LC_ALL=C LANGUAGE=C LANG=C chroot rootfs
使用上面的命令进入qemu虚拟器,相当于进入ARM系统下的Debian文件系统中,如下图所示。chroot rootfs 后面不加命令相当于执行chroot rootfs /bin/bash,也就是打开一个shell,详见chroot语法。
1、更新源
更新源为国内源可以提高后续软件下载速度,具体命令如下。因为默认的源是 http 的,但是如果准备使用的镜像源是https 的,所以需要额外的安装有关 HTTPS 的包。所以安装这两个包之后就可以正常拉取https的源了:apt-transport-https和ca-certificates。
vi /etc/apt/sources.list #写入: deb http://mirrors.huaweicloud.com/debian buster main apt-get update
2、安装网络相关库
apt-get install wpasupplicant #安装WIFI配置相关的组件 apt-get install net-tools #安装网络基础组件、如使用ifconfig等 apt-get install udhcpc #当wifi连接成功后,需要用这个组件去获取IP地址 apt-get install evtest #触摸屏测试 apt-get install mplayer apt-get install alsa-utils #音频测试 ## 其他组件 apt-get install wireless-tools apt install sudo vim openssh-server htop apt install pciutils usbutils acpi #acpi我没有安装成功,换了其他的源也不可以
3、配置账号
设置root账号密码。
passwd root
4、配置时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5、配置SSH
vi /etc/ssh/sshd_config #写入: PermitRootLogin yes
6、rootfs打包
apt clean #清理 exit #退出chroot rm rootfs/usr/bin/qemu-arm-static #删除之前拷贝的文件
cd rootfs sudo umount dev/pts/ # 一定要在/dev前面umount sudo umount dev/ sudo umount sys/ sudo umount proc/
sudo tar cvf ../rootfs.tar ./ #在rootfs目录下执行
最终生成了Debian文件系统压缩包,解压即可使用。
7、Debian文件系统启动
在rootfs.tar文件目录终端中,输入以下命令解压到TF卡的rootfs分区,也就是第二分区。
sudo tar -vxf ./rootfs.tar -C /media/project01/rootfs/
注意:一定要等待拷贝完成,再拔出TF卡,我的转接器上有指示灯,等待指示灯常亮,不再闪烁即可拔出。将TF卡插到开发板上,上电启动复位,等待,启动成功!!!
四、增加swap分区
芯片的SiP内存只有64MB,大部分情况下都不够用,所以需要开启swap使用内存卡的一部分空间来作为交换内存。
在使用一些软件的过程中,会遇到系统崩溃,尤其是使用 apt-get install 的时候,所以需要加入swap分区,可以简单理解为虚拟内存。
这十分类似于Windos的虚拟内存,虚拟内存其实就是将硬盘的一部分容量当内存使用,从而弥补物理内存不足的问题。
我们可以通过free -m来查看下内存使用状况,此处我直接在qemu虚拟器中查看:
使用如下命令创建你想要添加swap分区的大小:
dd if=/dev/zero of=/swap1 bs=1M count=512 #count是SWAP大小,512就是512MB
设置swap分区文件,然后激活分区:
# 设置分区文件 mkswap /swap1 # 激活swap分区 swapon /swap1
vi /etc/fstab # 最后一行添加 # /swap1 swap swap defaults 0 0
将新的根文件系统拷贝到TF卡的第二分区,重新上电启动,查看交换分区大小,的确为我们设置的512M。
五、参考内容
1. 创建基于arm的debian文件系统
2. debootstrap定制arm平台linux
3. Debootstrap – linux-sunxi.org
4. 系统移植2-Debian系统的移植 – Shuzang’s Blog
5. Debian文件系统制作,以及WIFI配置、交换分区配置
今天的文章
自制一个linux开发板_linux系统的电脑分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/81291.html