











2026-08-29 22:06 蜡笔小旧 阅读(2) 评论() 收藏 举报
今天尝试了下编译linux kernel比想象中的简单很多。
第一个花时间的在了下载源码,后面果断放弃git clone用浏览器走dl下载。
第二个花时间的点是路径问题 `bin/busybox --install -s .` 始终都是绝对路径,最后改成了简单的ln方式。
sudo apt update sudo apt install \ build-essential \ bc \ bison \ flex \ libssl-dev \ libelf-dev \ libncurses-dev \ qemu-system-x86 \ cpio \ busybox-static ############################################################# # i use web browser instead of git git clone --depth=1 --branch v6.12 https://github.com/torvalds/linux.git cd linux mv linux kernel ############################################################# # generate .config file make defconfig # start complie then generated a file `bzImage` make -j$(nproc) # Kernel: arch/x86/boot/bzImage is ready (#1) #############################################################
mkdir rootfs cd ./rootfs mkdir -p \ bin \ sbin \ etc \ proc \ sys \ dev \ tmp cp /usr/bin/busybox bin/ cd .. cat > rootfs/init <<'EOF' #!/bin/sh # option 2 #mount -t devtmpfs none /dev #mount -t proc none /proc #mount -t sysfs none /sys echo echo "================================" echo " Hello from my Linux kernel!" echo "================================" echo exec /bin/sh # option 2 # exec setsid cttyhack /bin/sh EOF chmod +x rootfs/init
ln -s busybox sh ln -s busybox ls ln -s busybox cat ln -s busybox echo ln -s busybox mount ln -s busybox ps
# Create initramfs cd rootfs find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../rootfs.cpio.gz cd .. # directory # kernel/ # arch/x86/boot/bzImage # # rootfs/ # init # bin/ # proc/ # sys/ # ... # rootfs.cpio.gz
qemu-system-x86_64 -kernel ./kernel/arch/x86/boot/bzImage -initrd ./rootfs.cpio.gz -append "console=ttyS0" -nographic
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。