嵌入式Linux实验
嵌入式Linux作业一
作业要求
- 下载一个新版本的内核源码,尽量与你的笔记本也就是本机内核版本相近。
- 修改内核源码,在启动过程中加入你的名字和学号,并重新编译内核。
- 用新内核启动,过程中应该出现你加入的信息。
- 在启动时最好出现两个内核版本的选择.
- 要求写出详细的实验步骤和结果记录。
- 作业完成可进行小组讨论,但作业报告需独立完成,个人独立提交作业报告。
提示:以下是本篇文章正文内容,下面案例可供参考
一、作业分析
- 查看本机内核版本,并在Linux官网下载一个相近的内核版本,
- 修改内核中的启动信息。
- 启动时尽可能可以选择内核版本(可选任务项)
二、实验步骤
1.查看本机内核版本,并在官网下载相近内核版本
查看内核版本:可以有多种方式查看,主要采用了三种命令查看分别是:cat /proc/version和 uname -a 和 uname -r,运行截图如下图所示:
可以看到本主机的内核版本为5.15.0
因此去Linux官网上下载相近的版本,如图所示,最相近的版本为5.15.86:
将下载的Linux放到qemuLinux文件夹中并解压,截图如图所示:
2.修改内核源码并重新编译内核
-
对linux-5.15.86修改配置文件和源码
修改配置文件makefile的384、385行如下图所示:
在Linux-5.15.86/init/main.c中第939行添加一行printk(“Linux kernel 5.15.8 ---------------- qqt SA22225303\n”);,修改源码截图如下图所示:
-
配置
sh make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm menuconfig sh System Type --> [ ] Enable the L2x0 outer cache controller 取消该选项
重新编译make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm
make dtbs
-
qemu模拟器启动Linux-5.15.86内核
qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-5.15.86/arch/arm/boot/zImage -dtb linux-5.15.86/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 console=ttyAMA0 rw init=/linuxrc" -sd a9rootfs.ext3
可以看到启动的截图: -
同理,修改linux-4.9.336/init/main.c源文件,如图所示:
重新编译linux-4.9.336内核并qemu运行,qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-4.9.336/arch/arm/boot/zImage -dtb linux-4.9.336/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 console=ttyAMA0 rw init=/linuxrc" -sd a9rootfs.ext3
,qemu运行截图如图所示:
3.启动时选择内核版本
启动时选择内核版本,本小组采用的方法是通过写一个运行命令的Linux脚本来实现,运行qemuStartLinux.sh脚本,根据提示输入信息,从而选择相应的内核版本启动。
qemuStart.sh脚本代码如下所示:
1 #!/bin/bash
2 read -p "1:linux-4.9.336 2:linux-5.15.86,choose a version to pick: " num
3 echo $num
4 cd ~/workdir/qemuLinux
5 if [ $num = "1" ] ; then
6 qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-4.9.336/arch/arm/boot/zImage -dtb linux-4.9.336/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 co nsole=ttyAMA0 rw init=/linuxrc" -sd a9rootfs.ext3
7 else
8 qemu-system-arm -M vexpress-a9 -m 512M -kernel linux-5.15.86/arch/arm/boot/zImage -dtb linux-5.15.86/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 co nsole=ttyAMA0 rw init=/linuxrc" -sd a9rootfs.ext3
9 fi
运行该脚本,即./qemuStartLinux.sh
,运行截图如下图所示:
-
选择linux-4.9.336:
-
选择linux-5.15.86
至此,本次作业的实验步骤全部结束。
总结
本次作业主要是查看内核的版本,下载相近的内核版本。然后修改内核源码,添加自己个人信息,修改Linux内核的配置文件并编译。最后通过Linux脚本,启动时出现两个内核版本的选择,可根据输入数字选择linux-5.15.86和linux-4.9.336两个版本。