1 Star 1 Fork 0

陨石旁的天际 / linux-scripts

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

提供脚本编译和运行Linux和BusyBox,主要目的是在源码目录外编译。
准备工作:
1、安装交叉编译工具
2、安装qemu
3、下载Linux kernel源码并解压
4、下载Busybox源码并解压

以aarch64架构为例:
1、创建aarch64目录
2、将make-aarch64.sh,make-rootfs.sh,qemu-system-aarch64.sh脚本复制到aarch64目录
3、进入aarch64目录
4、配置Linux kernel编译选项
./make-aarch64.sh -C <Linux kernel源码目录> -- defconfig
5、编译Linux kernel
./make-aarch64.sh -C <Linux kernel源码目录> -- all
这样就编译完成Linux kernel了。
6、配置Busybox编译选项
./make-aarch64.sh -C <Busybox源码目录> -- menuconfig
在Busybox编译选项配置界面,配置静态链接选项。
或者使用LDFLAGS=-static选项也可以静态连接。
7、编译BusyBox
./make-aarch64.sh -C <Busybox源码目录> -- install
./make-aarch64.sh -C <Busybox源码目录> -- LDFLAGS=-static install
这样就编译完成BusyBox了。
8、创建根文件系统
./make-rootfs.sh -s <Busybox输出目录>
Busybox输出目录在当前目录可以找到。这样就创建一个名为rootfs.img的根文件系统文件。
9、运行验证一下效果
./qemu-system-aarch64.sh -k <Linux kernel输出目录>
Linux kernel输出目录在当前目录可以找到。
一切正常的话,qemu就会启动Linux,进入Busybox。

编译Linux module:
./make-aarch64.sh -C <Linux kernel源码目录> -M <module源码目录>
正常情况下可以在ko源码目录找到编译好的ko文件。
mount根文件系统镜像文件,将该ko文件复制到根文件系统中,再次启动,可以测试ko。
也可以使用当前系统内核编译模块,注意需要加上无参数的-O选项:
./make-x86_64.sh -C <module源码目录> -O

编译Linux工具,例如perf:
/make-aarch64.sh -C ../../linux/linux-5.10.23/tools/perf/ -- LDFLAGS=-static
可以在--后面增加一些额外的编译选项,例如上面的静态链接选项。

使用u-boot启动arm:
1、参考https://www.jianshu.com/p/91baa4d140a2
2、安装tftp:sudo apt install tftp-hpa tftpd-hpa xinetd
默认tftp目录是/srv/tftp
3、编译u-boot:
./make-arm.sh -C ../../u-boot/u-boot-2021.01/ -- vexpress_ca9x4_defconfig
./make-arm.sh -C ../../u-boot/u-boot-2021.01/
4、编译kernel uImage:
./make-arm.sh -C ~/Workspace/linux/linux-5.10.23 -- uImage LOADADDR=0x60003000
5、复制uImage和dtb文件到ftfp目录:
sudo cp linux-5.10.23/arch/arm/boot/uImage /srv/tftp/
sudo cp linux-5.10.23/arch/arm/boot/dts/vexpress-v2p-ca9.dtb /srv/tftp/
6、启动qemu,进入u-boot:
qemu-system-arm -M vexpress-a9 -m 256 -kernel u-boot-2021.01/u-boot -nographic -net nic,macaddr=00:16:3e:00:00:01 -net tap -sd rootfs.img
注:如果命令失败,需要先配置qemu好网络,要用root用户执行命令。
su切换到root用户后,可以使用source /etc/profile命令重新配置环境变量。
7、在u-boot界面:
配置serverip和ipaddr:
setenv serverip 192.168.3.2
setenv ipaddr 192.168.3.8
使用tftp加载uImage和dtb:
tftp 0x60003000 uImage
tftp 0x60500000 vexpress-v2p-ca9.dtb
配置启动参数,启动系统:
setenv bootargs 'root=/dev/mmcblk0 console=ttyAMA0'
bootm 0x60003000 - 0x60500000
正常情况下就可以进入shell了。

动态编译BusyBox:
1、使用默认config编译BusyBox:
./make-arm.sh -C ~/Workspace/busybox/busybox-1.32.1 -- defconfig
./make-arm.sh -C ~/Workspace/busybox/busybox-1.32.1 -- install
2、制作根文件系统时,需要复制对应gcc编译器的libc库:
./make-rootfs.sh -s busybox-1.32.1/ -lib /opt/gcc-linaro/arm-linux-guneabi/arm-linux-gnueabi/libc/lib/
生成的rootfs.img可以正常使用。

空文件

简介

提供脚本编译和运行Linux和BusyBox,主要目的是在源码目录外编译。 展开 收起
Shell 等 3 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/xunknown/linux-scripts.git
git@gitee.com:xunknown/linux-scripts.git
xunknown
linux-scripts
linux-scripts
master

搜索帮助