用qemu模拟i386的linux内核,用于内核学习
来源:互联网 发布:2017年网络销售好做吗 编辑:程序博客网 时间:2024/05/22 17:22
安装
apt-get install qemu
下载http://kernel.org/ 这里也测试过4.5版本,但是无法启动
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.4.tar.bz2
tar xvf linux-3.7.4.tar.bz2
cd linux-3.7.4.tar.bz2
编译内核
ls arch/x86/configs/
make i386_defconfig
make menuconfig
# compile whith the kernel parameter
# General Setup –> Initial RAM filesystem and RAM disk support
# Device Drivers –> Block Devices –> RAM block device support
make -j 2
用hello world 测试
#include <stdio.h>
#include <unistd.h>
int main(void)
{
while(1){
printf("hello,world\n");
usleep(1000000);
}
return 0;
}
编译
gcc -static -o init init.c
制作磁盘
dd if=/dev/zero of=ramdisk.img bs=1M count=4
格式化
mkfs.ext2 ramdisk.img
挂载磁盘
sudo mount -o loop ramdisk.img rootfs
sudo cp init rootfs
sudo mkdir rootfs/dev
sudo mknod rootfs/dev/console c 5 1
sudo mknod rootfs/dev/ram b 1 0
sudo umount rootfs
启动qemu,我的ubuntu系统是64位
qemu-system-x86_64 -kernel arch/x86/boot/bzImage -initrd ../qemu-i386/ramdisk.img -append "root=/dev/ram init=/init"
用busybox制作,注意哪个王好像无法下载,可以到国内一些网站下载,下面命令执行也要注意目录位置,
所有make命令都是源码目录进行,for i in {1..4} ; do sudo mknod dev/tty$i c 4 $i; done;在挂载目录执行,其他的看平时了
wget http://www.busybox.net/downloads/busybox-1.21.0.tar.bz2
tar xvf busybox-1.21.0.tar.bz2
cd busybox-1.21.0
make menuconfig # This creates a file called ".config"
# Busybox Settings --->Build Options --->[*] Build BusyBox as a static binary (no shared libs)
make -j 2 # This creates the "busybox" executable
sudo mount -o loop ramdisk.img rootfs # mount it again
sudo rm rootfs/init # delete the init program
sudo make CONFIG_PREFIX=Path-to/rootfs install
#make install # or make CONFIG_PREFIX=/path/from/root install
for i in {1..4} ; do sudo mknod dev/tty$i c 4 $i; done;
# to fix the the /dev/tty? no found
sudo umount rootfs
动命令
qemu-system-x86_64 -kernel arch/x86/boot/bzImage -initrd ../qemu-i386/ramdisk.img -append "root=/dev/ram init=/linuxrc"
apt-get install qemu
下载http://kernel.org/ 这里也测试过4.5版本,但是无法启动
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.7.4.tar.bz2
tar xvf linux-3.7.4.tar.bz2
cd linux-3.7.4.tar.bz2
编译内核
ls arch/x86/configs/
make i386_defconfig
make menuconfig
# compile whith the kernel parameter
# General Setup –> Initial RAM filesystem and RAM disk support
# Device Drivers –> Block Devices –> RAM block device support
make -j 2
用hello world 测试
#include <stdio.h>
#include <unistd.h>
int main(void)
{
while(1){
printf("hello,world\n");
usleep(1000000);
}
return 0;
}
编译
gcc -static -o init init.c
制作磁盘
dd if=/dev/zero of=ramdisk.img bs=1M count=4
格式化
mkfs.ext2 ramdisk.img
挂载磁盘
sudo mount -o loop ramdisk.img rootfs
sudo cp init rootfs
sudo mkdir rootfs/dev
sudo mknod rootfs/dev/console c 5 1
sudo mknod rootfs/dev/ram b 1 0
sudo umount rootfs
启动qemu,我的ubuntu系统是64位
qemu-system-x86_64 -kernel arch/x86/boot/bzImage -initrd ../qemu-i386/ramdisk.img -append "root=/dev/ram init=/init"
用busybox制作,注意哪个王好像无法下载,可以到国内一些网站下载,下面命令执行也要注意目录位置,
所有make命令都是源码目录进行,for i in {1..4} ; do sudo mknod dev/tty$i c 4 $i; done;在挂载目录执行,其他的看平时了
wget http://www.busybox.net/downloads/busybox-1.21.0.tar.bz2
tar xvf busybox-1.21.0.tar.bz2
cd busybox-1.21.0
make menuconfig # This creates a file called ".config"
# Busybox Settings --->Build Options --->[*] Build BusyBox as a static binary (no shared libs)
make -j 2 # This creates the "busybox" executable
sudo mount -o loop ramdisk.img rootfs # mount it again
sudo rm rootfs/init # delete the init program
sudo make CONFIG_PREFIX=Path-to/rootfs install
#make install # or make CONFIG_PREFIX=/path/from/root install
for i in {1..4} ; do sudo mknod dev/tty$i c 4 $i; done;
# to fix the the /dev/tty? no found
sudo umount rootfs
动命令
qemu-system-x86_64 -kernel arch/x86/boot/bzImage -initrd ../qemu-i386/ramdisk.img -append "root=/dev/ram init=/linuxrc"
1 0
- 用qemu模拟i386的linux内核,用于内核学习
- 以Qemu模拟Linux,学习Linux内核
- 用qemu调试linux内核
- 使用qemu虚拟机学习linux内核
- Qemu调试Linux内核
- Qemu模拟运行ARM内核
- linux工具---用qemu调试linux内核
- linux工具---用qemu调试linux内核
- 在Linux下运行Qemu模拟AArch64硬件调试内核
- Linux最小根文件系统的建立,内核模块的编译,Qemu模拟测试最小系统
- linux内核信号量学习(2.6.23(i386))
- 编译linux3内核,与busybox,用qemu模拟运行
- 使用qemu调试linux内核
- linux内核调试+qemu+eclipse
- linux内核调试+qemu+eclipse
- Linux内核在I386架构下的内存管理
- linux内核的学习
- linux内核调试环境的搭建(使用qemu)
- 磁盘分区模式 && 格式化
- Muduo网络库源码分析(三)线程间使用eventfd通信和EventLoop::runInLoop系列函数
- 正则表达式-oracle提取汉字
- SearchBar放至UINavigationBar
- Cocos2d 创建一个精灵
- 用qemu模拟i386的linux内核,用于内核学习
- 嵌入式操作系统基础知识
- Objective-C中NSArray和NSMutableArray的基本用法
- Cocos2d 控件:创建一个label
- iOS开发中对数组元素进行排序
- Spark RDD缓存代码分析
- PLSQL安装:ORA-12154:TNS:无法解析指定的连接符
- Linux IO barrier
- C++实验3—本月有几天?