原文:https://www.bilibili.com/read/cv31634226/
实验介绍
之前的实验中介绍了如何使用 buildroot 构建一个易于使用的完整文件系统,但是 buildroot 的功能不止于此。
本实验准备使用 buildroot 构建一个完整的 Linux 操作系统。
本实验还会将编译好的固件烧录到 U盘中,然后在物理机中运行自己编译好的 Linux 系统。
开始构建
下载 buildroot 源码包
可以从buildroot官网(http://buildroot.uclibc.org/download.html)获取buildroot源码包,buildroot基本上三个月更新一次,这里我们实际下载的源码包是 buildroot-2023.02.9.tar.gz。
wget https://buildroot.org/downloads/buildroot-2023.02.9.tar.gz
tar xf buildroot-2023.02.9.tar.gz
cd buildroot-2023.02.9/
cd configs/
ls *x86_64*
pc_x86_64_bios_defconfig pc_x86_64_efi_defconfig qemu_x86_64_defconfig
cd ..
# 这里使用 pc_x86_64_bios_defconfig
make ARCH=x86_64 pc_x86_64_bios_defconfig
这里就直接使用 pc_x86_64_bios_defconfig 这个默认的配置。
注意这里使用的是 bios 启动的方式。
安装编译依赖
sudo apt install libncurses-dev
sudo apt install g++
编译下载依赖包修改国内源
修改 .config 文件。
BR2_BACKUP_SITE="http://sources.buildroot.net"
BR2_KERNEL_MIRROR="https://mirrors.aliyun.com/linux-kernel"
BR2_GNU_MIRROR="https://mirrors.aliyun.com/gnu"
BR2_LUAROCKS_MIRROR="https://luarocks.cn"
BR2_CPAN_MIRROR="https://mirrors.aliyun.com/CPAN"
http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v4.x/
如果下载不到 linux-4.19.204 ,可以自己从别的软件源下载,例如:
https://mirrors.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.19.204.tar.xz
cd dl/linux/
wget https://mirrors.tuna.tsinghua.edu.cn/kernel/v4.x/linux-4.19.204.tar.xz
编译
make -j8 all
编译完成
编译完成之后,将会在 output/images/ 目录下生成一个 disk.img 文件,该文件就是最终生成的固件。
$ ls output/images/disk.img
output/images/disk.img
分析 disk.img
这里对生成的 disk.img 文件进行简单的分析,了解其组成结构。
使用 fdisk 查看 disk.img 的分区。
$ fdisk disk.img
Welcome to fdisk (util-linux 2.38.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk disk.img: 120.15 MiB, 125985792 bytes, 246066 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
disk.img1 306 246065 245760 120M 83 Linux
Command (m for help): q
验证测试
qemu 验证测试
qemu-system-x86_64 -hda disk.img
# 使用 kvm 模式
qemu-system-x86_64 -enable-kvm -hda disk.img
真实物理机验证测试
准备一个大小不小于4GB的U盘,使用 dd 将output/images/disk.img 文件烧录到 U盘中。
将U盘插入笔记本的USB接口,使用lsblk查看U盘对应的设备名称。
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdc 8:32 1 29.3G 0 disk
└─sdc1 8:33 1 120M 0 part
注意,这里的 /dev/sdc对应的是U盘这个设备。
sudo dd if=output/images/disk.img of=/dev/sdc
作者:飘雪冰封 https://www.bilibili.com/read/cv31634226/ 出处:bilibili