linux操作系统实验四--qemu的安装和根目录系统制作
来源:互联网 发布:php csdn 编辑:程序博客网 时间:2024/05/18 22:10
安装QEMU
sudo apt-get install qemu
$ tar jxvf qemu-1.4.0.tar.bz2$ cd qemu-1.4.0
编译安装:
编译:有很多版本,老师给的pdf是:./configure --prefix=/usr/bin --target-list=i386-softmmu
网上的版本是一是:./configure --enable-debug --enable-sdl --enable-kvm --target-list=i386-softmmu
还有的是直接:./configure。
这个过程中或许出现一些错误,大部分是因为缺少相关的软件,安装需求进行安装即可,如提示:
Error: zlib check failed
Make sure to have the zlib libs and headers installed.
----------------------------------------------------------
google了一下,这个错误很容易解决:
$sudo apt-get install zlib1g-dev$sudo apt-get install libglib2.0-dev
由于对这部分知识基础为零,所以我都尝试过,最后选择了第二个版本。
安装:
$make$sudo make install
然后就可以试下了
$ qemu-system-i386
我的机器会出现:
Could not access KVM kernel module: No such file or directory
failed to initialize KVM: No such file or directory
Back to tcg accelerator.
这是因为:QEMU是个完全独立的虚拟环境,本身可以不依赖KVM,而KVM虚拟化方案则一定要依赖QEMU。
在usr/bin目录下输入q,按tab健匹配有:
qdbus qemu-io qpdldecode
qemu-ga qemu-launcher qrttoppm
qemu-i386 qemu-nbd quirks-handler
qemu-ifdown qemu-system-i386 quote
qemu-ifup qemu-system-x86_64 quote_readline
qemu-img qemu-x86_64
上面输入的命令是:qemu-system-i386,可以建立一条软链接:
$sudo ln -s /usr/bin/qemu-system-i386 /usr/bin/qemu
以后就可以直接在任何目录下输入qemu命令了。
编译内核
这里的实验环境需要更新ubuntu的内核,之前的实验三已经更新过了,可以参考:
Linux操作系统-Lab3 更新内核与添加系统调用
这里只需要重新编译一下,添加相应的调试信息即可。具体步骤如下:
1.首先下载最新版的内核源代码
https://www.kernel.org/pub/linux/kernel/v3.x/
下载linux-3.9.tar.gz放在自己建立的文件夹LinuxKernel里。进入LinuxKernel文件夹:
$tar zxvf linux-3.9.tar.gz$make menuconfig
在Kernel hacking项目里面将Compile the kernel with debug info和Compile the kernel with frame pointers,两项勾选。这些项目可以让编译时添加调试信息.
然后执行:
$make -j2 bzImage
编译内核,双核的cpu是-j2,如果是4核则是-j4。
进行调试
$bunzip2 linux-0.2.img.bz2
$qemu -S -kernel arch/i386/boot/bzImage -hda linux-0.2.img -append "root=dev/hda"
# -kernel 用来指定内核,注arch/x86/bzImage是不带调试信息的内核,vmlinux是带有调试信息的内核.
#-hda 指定IDE硬盘
#-append cmdline use 'cmdline' as kernel command line
之后弹出一个小黑窗口,qemu就算起来了。
ctrl+alt+1 与 ctrl+alt+2可以切换界面,前者是屏幕输出,后者是qemu控制台
运行起来后是黑屏,我们要切换到控制台,用鼠标点击窗口,然后ctrl+alt+2,
计算机的启动过程
- x86 CPU启动的第一个动作CS:EIP=FFFF:0000H(换算为物理地址为000FFFF0H,因为16位CPU有20根地址线),即BIOS程序的位置。http://wenku.baidu.com/view/4e5c49eb172ded630b1cb699.html
- BIOS例行程序检测完硬件并完成相应的初始化之后就会寻找可引导介质,找到后把引导程序加载到指定内存区域后,就把控制权交给了引导程序。这里一般是把硬盘的第一个扇区MBR和活动分区的引导程序加载到内存(即加载BootLoader),加载完整后把控制权交给BootLoader。
- 引导程序BootLoader开始负责操作系统初始化,然后起动操作系统。启动操作系统时一般会指定kernel、initrd和root所在的分区和目录,比如root (hd0,0),kernel (hd0,0)/bzImage root=/dev/ram init=/bin/ash,initrd (hd0,0)/myinitrd4M.img
- 内核启动过程包括start_kernel之前和之后,之前全部是做初始化的汇编指令,之后开始C代码的操作系统初始化,最后执行第一个用户态进程init。
- 一般分两阶段启动,先是利用initrd的内存文件系统,然后切换到硬盘文件系统继续启动。initrd文件的功能主要有两个:1、提供开机必需的但kernel文件(即vmlinuz)没有提供的驱动模块(modules) 2、负责加载硬盘上的根文件系统并执行其中的/sbin/init程序进而将开机过程持续下去
制作根系统目录
sudo mount -o loop initrd.img rootfs
cp init rootfs/
准备dev目录:
sudo mkdir rootfs/dev
linux启动过程中会启用console设备:
sudo mknod rootfs/dev/console c 5 1
另外需要提供一个linux根设备,我们使用ram:
sudo mknod rootfs/dev/ram b 1 0
sudo umount rootfs
至此,一个包含简单应用程序的根目录initrd4M.img映像就准备好。
- linux操作系统实验四--qemu的安装和根目录系统制作
- QEMU虚拟机安装linux操作系统
- 实验一 Linux操作系统的安装
- 实验一 Linux操作系统的安装
- 实验一 Linux操作系统的安装
- 实验一 Linux操作系统的安装
- 实验一 、Linux操作系统的安装
- 实验一 Linux操作系统的安装
- 实验一:Linux操作系统的软件安装
- 实验一:Linux操作系统的安装
- 实验一 Linux操作系统的安装
- 实验一 Linux 操作系统的安装
- 实验一 Linux操作系统的安装
- 实验一Linux操作系统的安装
- linux操作系统实验四--打造自己的Linux发行版
- Nachos系统编译和安装---操作系统高级教程实验一
- Linux根目录”/“下各个系统文件夹的含义和用途
- Linux根目录各个系统文件夹的含义和用途
- Visual Lint 4.0.4 交互式静态代码分析工具
- 解决CISCO打错命令等待的问题
- 第九课 oracle数据约束,索引等
- xcode4.4+ APP 打包以及提交apple审核详细流程(新版本更新提交审核)
- Servle生命周期
- linux操作系统实验四--qemu的安装和根目录系统制作
- Bash编程实例 一
- TabHost和android:layout_height="0.0dip"以及android:layout_weight配合在布局中的使用
- 使用stl的next_permutation
- Uva375
- 仿制金山毒霸专杀工具界面
- jQuery Capty 图片标题插件
- java performance 读书笔记—— (二)os 性能监测
- 虚拟主机提权,调用远程路径去执行CMD