tags: qemu
安裝交叉編譯工具鏈
將下列源新增到/etc/apt/sources.list或在/etc/apt/sources.list.d/目錄下新建乙個檔案debian-arm-toolchain.list。
#
# -- emdebian cross toolchains
## deb unstable main
# deb testing main
deb squeeze main
然後,執行
#apt-get update
#apt-get install gcc-4.4-arm-linux-gnueabi
安裝工具鏈的方法可以參考
安裝qemu
#apt-get install qemu-system
$cd
$home
$tar
xjf linux-2.6.39.2.tar.bz2
$make
mrproper
#保證原始乾淨環境
$make
arch
=arm versatile_defconfig #使用versatile平台預設配置
$make
arch
=arm cross_compile
=arm-linux-gnueabi- all #編譯
幾分鐘過後,arch/arm/boot/zimage即生成了,然後使用qemu模擬。之所以選擇versatile平台,是因為qemu可以完全模擬。
$cp
arch/arm/boot/zimage$home/versatile-zimage
$qemu
-system-arm-m versatilepb-kernelversatile-zimage -m 128m
由於沒有提供根檔案系統,所以kernel會崩潰,由於找不到合適的root掛載項。下面製作乙個最小的initramfs,使其可以正常執行。
$mkdir
$home/versatile-initramfs
$cd$home/versatile-initramfs
$cat > init.c <> #include
> #include
> int main(void)
>
> eof
然後,編譯並且將其打包成initramfs。
$arm-linux-gnueabi-gcc -static -o init init.c
$rminit.c
$find. |
cpio -o -h newc
|gzip > ../versatile-initrd
$qemu
-system-arm -m versatilepb -kernel versatile-zimage -initrd
versatile-initrd -m 128m
tags:
qemu
$tar xjf busybox-1.18.5.tar.bz2
$cd busy box-1.18.5
$make
arch
=arm cross_compile
=arm-linux-gnueabi- defconfig
$make
arch
=arm cross_compile
=arm-linux-gnueabi- menuconfig
選擇將busybox編譯成靜態檔案, "busybox settings --> build options"
$make
arch
=arm cross_compile
=arm-linux-gnueabi- install
編譯安裝完成後,會在當前目錄下生成_install目錄,此為預設的安裝目錄,也可以在busybox settings中設定為別的目錄。現在製作initramfs。
$cd _install
$find . | cpio -o -h newc | gzip $home/versatile-busybox
現在用qemu模擬。
$cd
$home
$qemu
-system
-arm-m
versatilepb
-kernel
versatile
-zimage
-initrd
versatile
-busybox-m
128m
-"root=/dev/ram rdinit=/bin/sh"
這裡如果不加rdinit=/bin/sh,那麼/linuxrc將會試圖掛載根檔案系統,並且執行新根檔案系統中的init,由於我們沒有另外的真正的根檔案系統,所以使用rdinit=/bin/sh,啟動到sh中,敲入回車,將會出現shell命令提示符。在當前root中,沒有/proc,/sys存在,所以例如mount等這些以來/proc, /sys的命令不能正常工作。在虛擬機器中執行
#mkdir /proc /sys
#mount -t proc proc /proc
#mount -t sysfs sysfs /sys
也可以將其加入到啟動指令碼中,關閉虛擬機器,然後修改versatile-busybox
$cd busybox-1.18.5/_install
$mkdir -p etc/init.d
$cd etc/init.d
$cat > rcs <#!/bin/sh
>mkdir /proc /sys
>mount -t proc proc /proc
>mount -t sysfs sysfs /sys
>mdev -s
eof$chmod +x rcs
$cd busybox-1.18.5/_install
$find . | cpio -o -h newc | gzip > $home/versatile-busybox
現在用qemu模擬
$
qemu
-system
-arm-m
versatilepb
-kernel
versatile
-zimage
-initrd
versatile
-busybox-m
128m
-"root=/dev/ram rdinit=/sbin/init"
注意這裡的rdinit=/sbin/init,前面之所以是rdinit=/bin/sh,是因為/sbin/init會執行/etc/init.d/rcs,而前面並沒有建立這個檔案,所以會列印很多錯誤!特別是由於沒有啟動mdev。
使用 qemu 模擬器搭建 arm 執行環境(一)
一.流程 1 安裝交叉編譯工具鏈 2 安裝 qemu 模擬器 3 編譯 arm 架構 u boot 4 用 u boot 測試 qemu 是否正常啟動 二.原理 qemu 是乙個在 linux 上廣泛使用的可以模擬 arm 的模擬器。在進行嵌入式系統的開發時,執行程式的目標平台通常具有有限的儲存空間...
從零使用qemu模擬器搭建arm執行環境
再續 從零使用qemu模擬器搭建arm執行環境 早在2011年的時候,跟當時同事一起討論,做linux系統開發正處於整個linux開發中間層,沒有上層的c c 業務和資料庫的開發經驗,也沒有底層的核心和驅動開發經驗,到底路該如何走 基於對linux系統開發的理解和核心的興趣,認為選擇linux核心開...
Ubuntu上使用QEMU模擬Ubuntu
install qemu on ubuntu 1 sudo apt get install kvm qemu libvirt bin virtinst virt manager virt viepwer qemu,kqemu,kvm,qemu kvm,libvirt關係 qemu的三種執行模式 2 ...