1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Linux内核源码编译调试

Linux内核源码编译调试

时间:2021-01-07 12:27:05

相关推荐

Linux内核源码编译调试

一、 环境准备

需要下载相应的环境,以下提供了工具获取方法。建议源码编译安装,编译若少依赖就自行百度。官网都会有编译安装教程。

开发操作系统:

/#download

linux源码获取:

busybox源码版本:

/downloads/

qemu

/

二、Linux源码编译

1.指定硬件体系架构。

目前使用的是x86,因为我的开发环境就是x86。如果你要编译arm的内核,则指定ARCH=arm且需要安装交叉编译器。

export ARCH=x86

2.配置board config,此处配置为 x86_64_defconfig。

make x86_64_defconfig

3.配置内核

此处可以有图形界面配置想要编译内核的模块

make menuconfig

这一步其实是对第2步的菜单进行微调,我们需要内核支持ramdisk驱动,所以需要选中如下配置:

General setup —>

----> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support

Device Drivers —>

[*] Block devices —>

<*> RAM block device support

(65536) Default RAM disk size (kbytes)

4、编译内核

make

三、buysbox编译并制作内核

1.解压buysbox源码

tar xvf busybox-xxxxx.tar.bz2

2.配置buysbox源码为静态编译

make menuconfig

Busybox Settings —>

Build Options —>

[*] Build BusyBox as a static binary (no shared libs)

3.编译和安装

make && make install

4.编译完成后的busybox就安装在源码根目录下的_install目录了,我们进入_install目录,补充一些必要的文件或目录,相关的shell命令如下:

cd _installmkdir etc dev mntmkdir -p proc sys tmp mkdir -p etc/init.d/

写fstab

vim etc/fstab

将下面信息写入

proc /proc proc defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

sysfs /sys sysfs defaults 0 0

写rcS

vim etc/init.d/rcS

写入下面内容并保存

echo -e "Welcome to Linux"/bin/mount -aecho -e "Remounting the root filesystem"mount -o remount,rw /mkdir -p /dev/ptsmount -t devpts devpts /dev/ptsecho /sbin/mdev > /proc/sys/kernel/hotplugmdev -s

执行:

chmod 755 etc/init.d/rcS

写inittab

vim etc/inittab

写入并保存:

::sysinit:/etc/init.d/rcS::respawn:-/bin/sh::askfirst:-/bin/sh::ctrlaltdel:/bin/umount -a -r

执行:

chmod 755 etc/inittabcd devmknod console c 5 1mknod null c 1 3mknod tty1 c 4 1

内核制作结束

四、制作根文件系统镜像文件

先回到busy-box的目录

cd ..

1.先制作一个空的镜像文件

2.然后把此镜像文件格式化为ext3格式

3.然后把此镜像文件挂载,并把根文件系统复制到挂载目录

4.卸载该镜像文件

5.打成gzip包

直接来个bash脚本

vim mkimg.sh

写入并保存

#!/bin/bashrm -rf rootfs.ext3rm -rf fsdd if=/dev/zero of=./rootfs.ext3 bs=1M count=32mkfs.ext3 rootfs.ext3mkdir fsmount -o loop rootfs.ext3 ./fscp -rf ./_install/* ./fsumount ./fsgzip --best -c rootfs.ext3 > rootfs.img.gz

执行

chmod 755 ./mkimg.sh

执行脚本

./mkimg.sh

就得到了文件系统镜像:rootfs.img.gz

五、qemu模拟器启动我们自己编译的内核和文件系统

下载qemu源码

解压进入目录

./configure --prefix=/opt/qemu

make

make install

启动内核

参数路径需要修改

/opt/qemu/bin/qemu-system-x86_64 -kernel /home/wdhh/linux-6.0-rc7/arch/x86_64/boot/bzImage -initrd /home/wdhh/busybox-1.35.0/rootfs.img.gz -append "root=/dev/ram init=/linuxrc" -serial file:output.txt

无图形界面的终端上可以使用

/opt/qemu/bin/qemu-system-x86_64 -kernel /home/wdhh/linux-6.0-rc7/arch/x86_64/boot/bzImage -initrd /home/wdhh/busybox-1.35.0/rootfs.img.gz -append "root=/dev/ram init=/linuxrc console=ttyS0" -serial mon:stdio -nographic

退出用

Ctrl - a x

大功造成哈哈哈哈哈哈

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。