从国内镜像下载Linux内核
http://mirrors.aliyun.com/linux-kernel/v4.x/
我下载的是tar zxvf linux-4.15.1.tar.gz
然后tar zxvf linux-4.15.1.tar.gz命令解压内核
然后进入内核源代码目录,执行下面的操作,分别制定架构以及对应的内核配置文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201020101630450.png#pic_center
在源代码根目录下执行make menuconfig
General setup里默认已经选择了Initial RAM filesystem and RAM disk (initramfs/initrd)
Drivers->Block devices->RAM block device support
执行上面的make命令编译,但是报错了,安装相关的库
sudo apt search libelf-dev
sudo apt-get install libelf-dev
然后执行make ,结果如下:
当我编译3.x内核的时候报错如下,百度了一下是主机gcc编译器和内核不匹配
make编译报错,根据错误提示,复制我的编译主机里的compiler-gcc.h到当前源代码的include/linux/compiler-gcc5.h,但是这样子复制以后还有其他报错,暂时没有精力去查,所以后来直接换4.x内核编译了,我的主机系统版本号如下:
下载对应版本的busybox
http://busybox.net/downloads/
我下载了busybox-1.32.0,下载后解压
在busybox源代码目录下执行make menuconfig
然后Settings里面勾选"Build static binary (no shared libs)",如下:
然后退出生成新的.config,然后执行make && make install
执行结果如下在_install/usr/bin和_install/usr/sbin下生成各种命令
进入_install目录
执行下面的
mkdir etc dev mnt
mkdir -p etc/init.d/
vim etc/fstab内容如下:
vim etc/init.d/rcS
chmod 0755 etc/init.d/rcS
vim etc/inittab
chmod 0755 etc/inittab
cd dev
mknod console c 5 1
mknod null c 1 3
mknod tty1 c 4 1
执行froome.sh生成对应的rootfs.img.gz
安装qemu-system-x86
qemu-system-x86_64 -kernel linux-4.15.1/arch/x86_64/boot/bzImage -initrd busybox-1.32.0/
rootfs.img.gz --append “root=/dev/ram init=/linuxrc” -serial file:output.txt -curses
如果是通过xshell登录的-curses必须加