操作系统课程记录(2)————制作grub启动盘(1)
2017-03-18 15:41
183 查看
下载qemu模拟器
sudo apt-get install qemu
qemu是linux下的通用的,开放源码的机器模拟器和虚拟器。可以模拟多种架构下的系统。一般qemu命令不能直接使用,需要指定需要模拟的架构。这里我们使用
qemu-system-i386。
下载linux内核
linux内核在https://www.kernel.org/就可以下载到。国内的服务的话,中科大的镜像站很丰富的软件资源。当然,搜索厦门大学镜像站,清华大学镜像站什么的(不一定有,我没试过),都可以搜索到。中科大的下载地址在http://mirrors.ustc.edu.cn/kernel.org/linux/kernel/
可以下载到。在里面选择自己的想要的版本就行了。我用的是linux-3.10.98,操作系统是Ubuntu16.10,32位版本的。(下面有些操作在64位下会出现问题,当然也不是不能解决)。
下载之后通过
tar -xzvf fileName.tar.gz
解压得到源码目录
下面就来编译linux源码,假设解压得到的linux的源码目录是
~/Downloads/linux-3.10.98,于是采用i386的缺省编译:
cd ~/Downloads/linux-3.10.98 make i386_defconfig make
make的过程可能会比较久。(据说make加上 -j num,其中num是你电脑的内核数目,会比较快。然而我下载了一个linux-4的源码,make跟make -j num没什么区别。)
准备一个应用程序
为什么需要准备应用程序以及接下来的操作是为什么,等以后我再补充吧,因为我也不是很懂。选择你喜欢的文本编辑器写一个helloworld.c程序在~目录下。#include <stdio.h> int main() { printf("hello world!\n"); while(1); return 0; }
然后编译,注意gcc 的参数:
cd ~ gcc -static -m32 helloworld.c -o hello
如果你是32位的系统,理应是没有问题的。如果你是64位的系统,可能因为-m32的缘故导致编译出错,在gcc之前你需要下载编译32位程序需要的库:
sudo apt-get install build-essential module-assistant sudo apt-get install gcc-multilib g++-multilib
然后你在~目录下就得到了一个hello可执行程序。
准备文件
cd mkdir rootfs mkdir rootfs/dev sudo mknod rootfs/dev/console c 5 1 sudo mknod rootfs/dev/ram d 1 0 cp hello rootfs
生成映像
cd rootfs find .| cpio -o --format=newc > ../rootfs.img
运行内核
cd qemu-system-i386 -kernel ./Downloads/linux-3.10.98/arch/x86/boot/bzImage -initrd rootfs.img -append "root=/dev/ram rdinit=/hello"
运行的结果应该是这样的:
无限输出是因为那一句while(1)语句。当然也可以不加,最后只会输出一句helloworld语句并且报
attemp to kill init,which is...,是可以理解的。
相关文章推荐
- 操作系统课程记录(2)——制作grub启动盘(2)
- 关于学习MIT6.828操作系统课程lab1记录
- 在windows下制作Ubuntu的USB启动盘和Grub的修复
- 教你制作Linux操作系统的USB启动盘
- Ubuntu15.10下制作Linux 操作系统优盘启动盘
- 用u盘制作grub启动盘[来源不详]
- Ubuntu15.10下制作Linux 操作系统优盘启动盘
- 使用UltraISO制作U盘CentOS启动盘及安装grub修改
- 操作系统启动盘制作(windows & linux)
- 不用制作启动盘安装Windows操作系统的最简单办法
- 先从制作操作系统启动盘开始吧
- 操作系统课程记录(1)——感想
- 教你制作Linux操作系统的USB启动盘
- 关于学习MIT6.828操作系统课程的记录
- 用U盘制作启动盘来引导linux,修复grub
- 制作grub 0.97启动盘
- 用NERO刻录ISO文件制作启动盘
- dd usb 启动盘制作 成功版本
- FZU操作系统课程实验 实验一
- Unity3D之游戏暂停制作方法记录