Build Linux System

学号265,原创作品转载请注明出处+https://github.com/mengning/linuxkernel/

实验环境:ubuntu16.04

首先下载 linux-5.0.1 ,然后解压: xz -d linux-5.0.1.tar.xz tar -xvf linux-5.0.1.tar cd linux-5.0.1

安装相关依赖: sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev

编译内核: sudo make defconfig sudo make -j8 sudo make install

更新grub,然后重启内核: update-grub reboot

可以看到grub界面中已经有了linux 5.0.1的入口,但是选择该内核后发生了end kernel panic错误,尝试从recovery mode进入,进入的是BusyBox环境,在该环境中查看内核版本,显示为linux 5.0.1,说明内核已经安装但无法启动图形界面:

回到图形界面,用qemu加载内核,结果同样显示end kernel panic错误:

按照stack overflow等论坛的相关问题讨论,重装内核,更新对应内核版本的initramfs,仍然显示该错误。

接着构造MenuOS: git clone https://github.com/mengning/menu.gitcd menu sudo apt-get install libc6-dev-i386 make rootfs 此时出现错误:

重新make内核,选择i386_defconfig,并运行以下命令: make rootfs cd ../menu gcc -pthread -o init linktable.c menu.c test.c -m32 -static cp init ../rootfs find . | cpio -o -Hnewc | gzip -9 > ../rootfs.img qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd ../rootfs.img

最后成功显示:

Last updated