在QEMU MIPS仿真器上实现本机编译(Native Compiling on a QEMU Emulator)
QEMU是一款开源的虚拟机和仿真器软件。它提供了MIPS系统的仿真器(目前不支持图形卡仿真,只能运行于字符终端方式),使我们可以在x86平台上安装运行Debian Linux for MIPS,从而在其中进行本机编译。本文将详细介绍在Ubuntu 9.10上安装部署的过程。
While::beging:
qemu-system-mips -M malta -m 128 -kernel vmlinux-2.6.32-5-4kc-malta -hda hda.img -append "root=/dev/sda1 console=ttyS0" -nographic -no-reboot
(一)安装QEMU
首先安装QEMU软件包:
$ sudo apt
-
get
install qemu qemu
-
common qemu
-
kvm qemu
-
kvm
-
extras
(二)下载Debina网络安装映像文件
$ wget http:
//
ftp.de.debian.org
/
debian
/
dists
/
lenny
/
main
/
installer
-
mipsel
/
current
/
images
/
malta
/
netboot
/
vmlinux
-
2.6
.
26
-
2
-
4kc
-
malta
$ wget http:
//
ftp.de.debian.org
/
debian
/
dists
/
lenny
/
main
/
installer
-
mipsel
/
current
/
images
/
malta
/
netboot
/
initrd.gz
现在网址改作http://ftp.de.debian.org/debian/dists/stable/main/installer-mips/current/images/malta/netboot/initrd.gz
其中
vmlinux
-
2.6
.
26
-
2
-
4kc
-
malta是内核,initrd.gz是用于网络安装的引导RAM Disk。
注: Malta是MIPS Technologies公司设计的一款开发板,QEMU提供了针对Malta板的仿真。
(三)创建硬盘映像文件
为安装Debian Linux操作系统准备一个10GB的虚拟磁盘。QEMU支持多种磁盘映像格式,其中qcow2是功能最多最好用的一种格式。
$ qemu
-
img create
-
f qcow2 hda.img 10G
新建的磁盘映像只占用很少的空间,随着使用才逐渐扩张直至达到设定的10G。
(四)安装Debian Linux for MIPS
***安装过程需要一直连接互联网,安装可能会花费数小时***
qemu-system-mips -M malta -m 128 -kernel vmlinux-2.6.32-5-4kc-malta -initrd initrd.gz -hda hda.img -append "root=/dev/ram console=ttyS0" -nographic -no-reboot
1. 引导网络安装程序
$ qemu
-
system
-
mipsel
-
M malta
-m 128 -
kernel vmlinux
-
2.6
.
26
-
2
-
4kc
-
malta
-
initrd initrd.gz
-
hda hda.img
-
append
"
root=/dev/ram console=ttyS0
"
-
nographic -no-reboot
2. 启动后会自动进入安装程序,首先是选择语言和国家。语言选择English,国家选Other -> Asia -> China
3. 配置网络:输入主机名、域名,选择Debian镜像服务器以及配置代理服务器
4. 磁盘分区
5. 开始下载并安装基本系统
6. 设置用户/口令:设置root口令以及新建一个普通用户
...截图略过...
7. 选择安装软件:只选择标准系统(Standard system)
忽略"No boot loader installed"警告并继续
8. 安装完成
(五)启动系统
$ qemu
-
system
-
mipsel
-
M malta
-m 128 -
kernel vmlinux
-
2.6
.
26
-
2
-
4kc
-
malta
-
hda hda.img
-
append
"
root=/dev/hda1 console=ttyS0
"
-
nographic
-
no
-
reboot
用上面的命令启动安装好的Debian系统,此时QEMU将使用默认的网络配置,只能从客户机访问外部网络。如果希望客户机对外提供网络服务,如telnet,ssh,ftp等,则需要配置tap网络接口,详细步骤可参考文章: QEMU/Networking
(六)部署本机编译环境
本机编译工具链仍使用我自制的根文件系统: mipsel-native-toolchain-gcc442-uc0928-rootfs.tar.bz2 (如果不能下载请尝试 此链接)
下面操作在客户机上进行:
1. 解压工具链
# mkdir
/
toolchain
-
root
# cd
/
toolchain
-
root
# tar jxf
/
path
/
to
/
mipsel
-
native
-
toolchain
-
gcc442
-
uc0928
-
rootfs.tar.bz2
2. 客户机启动时自动为/toolchain-root绑定/proc,/sys,/dev,/tmp等伪文件系统。把下面的内容加入/etc/rc.local末尾处exit 0前面
# bind psudo filesystems
for
/toolchain-root
mount --bind /proc /toolchain-root/proc
mount --bind /sys /toolchain-root/sys
mount --bind /dev /toolchain-root/dev
mount -t tmpfs tmpfs /toolchain-root/
tmp
3. 进入本机编译环境
# chroot
/
toolchain
-
root
/
bin
/
sh
BusyBox v1.
15.3
(
2010
-
04
-
08
22
:
24
:
27
CST) built
-
in shell (ash)
Enter
'
help' for a list of built-in commands.
#
我安装的Debian Linux + 本机编译工具的磁盘映像文件可以在 这里下载,供大家参考。root口令就是root。