Buildroot:修订间差异
第115行: | 第115行: | ||
* https://wiki.qemu.org/Documentation/9p_root_fs | * https://wiki.qemu.org/Documentation/9p_root_fs | ||
* https://wiki.qemu.org/Documentation/9psetup | * https://wiki.qemu.org/Documentation/9psetup | ||
== 笔记 == | |||
=== 构建技巧 === | |||
==== 保存下载的文件 ==== | |||
默认情况下,buidlroot编译过程中的文件保存在dl目录中,若使用软链接将此下载目录软链接到其它目录,则可实现下载文件的保留(<code>make distclean</code>只会删除dl目录,当dl目录为软链接时,只会删除dl软链接)。 | |||
当构建一个新的buildroot时,可在make前将之前保存的目录软链接到dl,则可节省部分下载文件的时间。 | |||
== 官方资料 == | == 官方资料 == | ||
网址:http://buildroot.org/ | 网址:http://buildroot.org/ |
2023年9月3日 (日) 08:55的版本
源代码
主要
http://git.buildroot.net/buildroot/
https://git.busybox.net/buildroot/
备用
https://github.com/buildroot/buildroot.git
说明
这是一个强大的嵌入式Linux系统构建工具,可一键构建嵌入式Linux。
buildroot可直接构建嵌入式Linux开发的各种工具,不用为编译环境的配置而烦恼。
常用编译命令参数如下:
项目 | 类型 | 说明 | 备注 |
---|---|---|---|
menuconfig | Makefile目标 | 使用菜单配置buildroot | 通常需要先导入某个默认配置再使用菜单配置。
注意若在编译完成后变更了配置(尤其是增加了配置),最好使用 |
busybox-menuconfig | Makefile目标 | 使用菜单配置busybox | |
linux-menuconfig | Makefile目标 | 使用菜单配置Linux | |
source | Makefile目标 | 下载构建所需源代码 | 一般用于网不好时预先下载源代码,使用此目标可较快获取缺失的源代码 |
V | 环境变量/Makefile变量 | 指定打印的级别,0 => quiet build, 1 => verbose build |
个人使用场景
- 为LicheePi-Zero(基于全志V3S芯片)构建内核。
Qemu测试
buildroot预置大量Qemu defconfig配置文件,使用这些配置可方便使用Qemu测试Linux内核、根文件系统、应用程序等。
在buildroot编译时可采用make defconfig配置文件
,截止编辑时具体支持的Qemu defconfig配置文件列表如下:
- qemu_aarch64_ebbr_defconfig
- qemu_aarch64_sbsa_defconfig
- qemu_aarch64_virt_defconfig
- qemu_arm_ebbr_defconfig
- qemu_arm_versatile_defconfig
- qemu_arm_vexpress_defconfig
- qemu_arm_vexpress_tz_defconfig
- qemu_m68k_mcf5208_defconfig
- qemu_m68k_q800_defconfig
- qemu_microblazebe_mmu_defconfig
- qemu_microblazeel_mmu_defconfig
- qemu_mips32r2el_malta_defconfig
- qemu_mips32r2_malta_defconfig
- qemu_mips32r6el_malta_defconfig
- qemu_mips32r6_malta_defconfig
- qemu_mips64el_malta_defconfig
- qemu_mips64_malta_defconfig
- qemu_mips64r6el_malta_defconfig
- qemu_mips64r6_malta_defconfig
- qemu_nios2_10m50_defconfig
- qemu_or1k_defconfig
- qemu_ppc64_e5500_defconfig
- qemu_ppc64le_powernv8_defconfig
- qemu_ppc64le_pseries_defconfig
- qemu_ppc64_pseries_defconfig
- qemu_ppc_bamboo_defconfig
- qemu_ppc_e500mc_defconfig
- qemu_ppc_g3beige_defconfig
- qemu_ppc_mac99_defconfig
- qemu_ppc_mpc8544ds_defconfig
- qemu_riscv32_virt_defconfig
- qemu_riscv64_nommu_virt_defconfig
- qemu_riscv64_virt_defconfig
- qemu_s390x_defconfig
- qemu_sh4eb_r2d_defconfig
- qemu_sh4_r2d_defconfig
- qemu_sparc64_sun4u_defconfig
- qemu_sparc_ss10_defconfig
- qemu_x86_64_defconfig
- qemu_x86_defconfig
- qemu_xtensa_lx60_defconfig
- qemu_xtensa_lx60_nommu_defconfig
buildroot编译完后镜像将在将在output/images/中目录,可使用start-qemu.sh启动Qemu。
对于绝大多数用户应用程序而言,跟特定硬件的关联并不高,因此Qemu测试的根文件系统其实可以直接应用于真机,只是需要注意清理与内核相关的目录,如/lib/modules。
使用9p文件系统作为根目录
使用9p文件系统+virtio可用作宿主机到客户机(虚拟机内部)的文件共享。
当使用9p文件系统作为根文件系统时就可把宿主机的目录用作虚拟机的根目录,这样就不用频繁生成镜像,直接修改目录即可。
要实现9p文件系统作为根文件系统,需要以下条件:
- Linux内核启用了9p文件系统+virtio支持。
- Qemu添加相应设备:在Qemu命令参数中添加
-fsdev local,security_model=passthrough,id=fsdev-fsRoot,path=`pwd`/root/ -device virtio-9p-pci,id=fsRoot,fsdev=fsdev-fsRoot,mount_tag=fsRoot
其中fsdev的path选项就是要共享的目录。 - Linux内核命令行中添加9p文件系统的root挂载:
root=fsRoot rw rootfstype=9p rootflags=trans=virtio,version=9p2000.L,msize=5000000,cache=mmap,posixacl
注意:虚拟机内部操作系统的权限同执行Qemu程序的宿主机用户权限相同,如需根文件系统可写,则需确保用户对共享的目录可写(或者粗暴地使用root用户执行qemu程序)。
参考资料
笔记
构建技巧
保存下载的文件
默认情况下,buidlroot编译过程中的文件保存在dl目录中,若使用软链接将此下载目录软链接到其它目录,则可实现下载文件的保留(make distclean
只会删除dl目录,当dl目录为软链接时,只会删除dl软链接)。
当构建一个新的buildroot时,可在make前将之前保存的目录软链接到dl,则可节省部分下载文件的时间。