busybox+Linux kernel

1. 编译busybox

需要静态编译。

http://www.busybox.net/下载源代码包包*1

make menuconfig

静态编译设置: Busybox Settings->Build Options->

20130901163959

一直exit, 然后yes

make即可。

cd到源代码目录下的_install。

建立etc, dev, proc, sysfs文件夹

在dev里使用mknod建立如下内容

mknod console c 5 1

mknod null c 1 3

mknod random c 1 8

mknod urandom c 1 9

mknod zero c 1 5

20130901164406不过据说好像会自己建立0 0

撰写./etc/fstab:

#device mount-point type options dump fsck
proc /proc proc defaults 0 0
sys /sys sysfs defaults 0 0

撰写./etc/inittab:

::sysinit:/etc/init.d/rcs
console::respawn:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

撰写./etc/init.d/rcs:

mount -a

(加上clear应该也行)

2.制作initrd.img.gz

dd if=/dev/zero of=initrd.img bs=1M count=16 (用不着太大0 0, 64也是可以的, 但是不能超过接下来设置的内核支持的大小~)

mkfs -text4 initrd.img

mkdir xxxx

mount -o loop initrd.img xxxx

cp 那个_install的路径/* ./ -r

umount xxxx

gzip -9 initrd.img (可以不做此步)

2. 编译内核

https://www.kernel.org/ 下载源代码

make menuconfig

General setup->

20130901174008

Device Drivers > Block devices

20130901174436

> File systems

20130901174612

一直exit, 然后yes

会生出来arch/x86/boot/bzImage (x86的, 其他的在其他地方)

cp 之 到 initrd.img.gz同目录 (不必要, 只是以后方便)

然后你得到了两个文件!~

bzImage, initrd.img.gz

cd 到initrd.img.gz

qemu -kernel bzImage -initrd initrd.img.gz -append “root=/dev/ram0 rw”  已成功启动。

grub的话可能可以这样写

linux /bzImage root=/dev/ram0 rw
initrd /initrd.img.gz
boot

PS. 之前一直死在最后一步, 就是rootfs死活也挂不上, 后来发现是initrd不对头。

有些文章写用cpio制作initrd, 反正我是没弄成

这里的initrd应该是initramfs

这里有做好的: rel.zip

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/4899QrCode