235 + 原创作品转载请注明出处 + 中科大孟宁老师的linux操作系统分析: https://github.com/mengning/linuxkernel/
实验要求:
完成一个简单的时间片轮转多道程序内核代码;
仔细分析进程的启动和进程的切换机制;
阐明自己对“操作系统是如何工作的”理解。
实验内容:
一、实验过程及截图
实验环境:VMware 虚拟机+Ubuntu 16.04.10(Linux4.15)
下载并解压kernel内核linux-3.9.4及kernel补丁包mykernel_for_linux3.9.4sc.patch:
sudo apt-get install qemu # install QEMU
sudo ln -s /usr/bin/qemu-system-i386 /usr/bin/qemu
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.9.4.tar.xz # download Linux Kernel 3.9.4 source code
wget https://raw.github.com/mengning/mykernel/master/mykernel_for_linux3.9.4sc.patch # download mykernel_for_linux3.9.4sc.patch
xz -d linux-3.9.4.tar.xz
tar -xvf linux-3.9.4.tar
cd linux-3.9.4
patch -p1 > ../mykernel_for_linux3.9.4sc.patch //打补丁
make allnoconfig
make
qemu -kernel arch/x86/boot/bzImage
安装QEMU,编译运行kernel:
需要注意的一点是make的时候可能会产生错误,在/include/linux下找不到compiler-gcc5.h导致make失败。这是因为mykernel是基于linux原来的3.9.4内核写的,当时gcc的版本还没有到5,在对应的文件夹下只有compiler-gcc4.h compiler-gcc3.h compiler-gcc.h。因此需要自己下载compiler-gcc5.h并将它放在make目录的文件夹中的/include/linux中,注意不要错放在系统/usr/