用qemu搭建linux环境的最简单步骤(硬盘启动)
来源:互联网 发布:淘宝网店海报设计技巧 编辑:程序博客网 时间:2024/06/05 19:34
只有有了最基本的东西,才能在此基础上起飞!
环境: ubuntu14 x86_64 cpu
过程很简单,准备,制作和运行
----------------------------------------
甲: 准备
----------------------------------------
1. 获取源码: a. kernel b. busybox
方法任意,这里从略。目录如下:
~/misc/qemu$ ls
busybox linux-3.13.0
2. 源码编译:
cd ~/misc/qemu/linux-3.13.0G
make defconfig
make
成功编译出内核.
cd ~/misc/qemu/busybox
make menuconfig
选择静态编译: BusyboxSettings->Build options->Build Busybox as a static binary
make
成功编译出busybox
----------------------------------------
乙: 制作
----------------------------------------
a. 内核文件准备
cd ~/misc/qemu/linux-3.13.0
cp arch/x86/boot/bzImage ..
b 根文件系统制作
cd ~/misc/qemu
dd if=/dev/zero of=rootfs.img bs=1M count=10 #创建大小为10M到根文件系统
mkfs.ext3 rootfs.img #以ext3类型来格式化
mkdir rootdisk
sudo mount -t ext3 -o loop rootfs.img rootdisk #将img mount 到 loop设备上
cd rootdisk
mkdir dev proc sys 创建三个目录
#把busybox文件系统安装到根文件系统中
cd ~/misc/qemu/busybox
sudo make install CONFIG_PREFIX=~/misc/qemu/rootdisk
cd ~/misc/qemu
sudo umount rootdisk
rmdir rootdisk
制作完成后的目录:
~/misc/qemu$ ls
busybox bzImage linux-3.13.0 rootfs.img
----------------------------------------
丙: 运行
----------------------------------------
cd ~/misc/qemu
qemu-system-x86_64 -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/bin/ash"
内核启动, 熟悉的linux 环境出来了,ls, cat, .....
----------------------------------------
进阶篇:
----------------------------------------
1. 调试内核
a. 编译时加上-g 选项
b. qemu-system-x86_64 启动时加-S 选项, 使内核启动冻结
c. ctrl+alt+2 可切换到qemo控制台,输入“gdbserver"
d. 另起一个终端,
cd ~/misc/qemu/linux-3.13.0
gdb vmlinux
target remote localhost:1234
开始调试内核。
还可以使用ddd 前端或 vimgdb 前端等, 已经着陆了。
环境: ubuntu14 x86_64 cpu
过程很简单,准备,制作和运行
----------------------------------------
甲: 准备
----------------------------------------
1. 获取源码: a. kernel b. busybox
方法任意,这里从略。目录如下:
~/misc/qemu$ ls
busybox linux-3.13.0
2. 源码编译:
cd ~/misc/qemu/linux-3.13.0G
make defconfig
make
成功编译出内核.
cd ~/misc/qemu/busybox
make menuconfig
选择静态编译: BusyboxSettings->Build options->Build Busybox as a static binary
make
成功编译出busybox
----------------------------------------
乙: 制作
----------------------------------------
a. 内核文件准备
cd ~/misc/qemu/linux-3.13.0
cp arch/x86/boot/bzImage ..
b 根文件系统制作
cd ~/misc/qemu
dd if=/dev/zero of=rootfs.img bs=1M count=10 #创建大小为10M到根文件系统
mkfs.ext3 rootfs.img #以ext3类型来格式化
mkdir rootdisk
sudo mount -t ext3 -o loop rootfs.img rootdisk #将img mount 到 loop设备上
cd rootdisk
mkdir dev proc sys 创建三个目录
#把busybox文件系统安装到根文件系统中
cd ~/misc/qemu/busybox
sudo make install CONFIG_PREFIX=~/misc/qemu/rootdisk
cd ~/misc/qemu
sudo umount rootdisk
rmdir rootdisk
制作完成后的目录:
~/misc/qemu$ ls
busybox bzImage linux-3.13.0 rootfs.img
----------------------------------------
丙: 运行
----------------------------------------
cd ~/misc/qemu
qemu-system-x86_64 -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/bin/ash"
内核启动, 熟悉的linux 环境出来了,ls, cat, .....
ctrl-alt 释放qemu 鼠标。
其他:
使用 -hda, 指明硬盘镜像, qemu-system 能够仿真硬盘, -cdrom 还可以仿真CD-ROM -boot 选项指定启动设备
默认为硬盘: d
从 CD-ROM 引导, a
从软盘引导,c
从硬盘引导(默认),而n
从网络引导
-append 是内核启动参数, root=/dev/XXX, root 是根文件系统之意,这个启动参数/dev 与 dev设备没有关系。只是约定名称
init=XXX, init 指明根文件系统第一个运行的程序。
----------------------------------------
进阶篇:
----------------------------------------
1. 调试内核
a. 编译时加上-g 选项
b. qemu-system-x86_64 启动时加-S 选项, 使内核启动冻结
c. ctrl+alt+2 可切换到qemo控制台,输入“gdbserver"
d. 另起一个终端,
cd ~/misc/qemu/linux-3.13.0
gdb vmlinux
target remote localhost:1234
开始调试内核。
还可以使用ddd 前端或 vimgdb 前端等, 已经着陆了。
0 0
- 用qemu搭建linux环境的最简单步骤(硬盘启动)
- QEMU搭建arm linux环境
- qemu 的beagleboard环境搭建
- linux内核调试环境的搭建(使用qemu)
- linux内核调试环境的搭建(使用qemu)
- 用qemu搭建基于arm和linux的嵌入式开发环境
- linux 环境搭建步骤
- ubuntu--qemu调试linux内核环境搭建
- 搭建linux on qemu开发环境
- 最简单的AspectJ实验环境搭建
- 最简单的PHP开发环境搭建
- 最简单的android NDK环境搭建
- 最简单的安卓环境搭建
- 搭建最简单的jQuery环境
- 在硬盘中安装Linux操作系统最简单的方法
- Linux环境下搭建php开发环境的操作步骤
- 用qemu-system-arm搭建arm11环境
- qemu 环境搭建
- UIImagePickerController全屏
- actionSheet报错的问题及解决方法
- 最初的梦想
- 方法(六)
- Qt写入txt文件
- 用qemu搭建linux环境的最简单步骤(硬盘启动)
- C++知识点随笔(二):继承、多态
- [Leetcode]Word Ladder
- thinkphp验证码在服务器显示不了
- 使用尾递归实现String To Int
- Android WebView
- Oracle中job的使用详解
- MinGW Msys Intro - Solution to not found gcc
- android开发中屏幕适配问题