在QE MU上模擬SD Card Rootfs

2021-06-19 17:11:03 字數 3878 閱讀 2593

1. 編譯 busybox的 arm版本。

2. 拷貝必要的動態庫檔案到 _install/lib下面。

-rwxr-xr-x 1 charles charles   93476 oct  7  2011 ld-2.13.so

lrwxrwxrwx 1 charles charles 10 apr 25 2012 ld-linux.so.3 -> ld-2.13.so

-rwxr-xr-x 1 charles charles 876656 oct 7 2011 libc-2.13.so

lrwxrwxrwx 1 charles charles 12 apr 25 2012 libc.so.6 -> libc-2.13.so

-rw-r--r-- 1 charles charles 9812 oct 7 2011 libdl-2.13.so

lrwxrwxrwx 1 charles charles 13 apr 25 2012 libdl.so.2 -> libdl-2.13.so

-rw-r--r-- 1 charles charles 407148 oct 7 2011 libm-2.13.so

lrwxrwxrwx 1 charles charles 12 apr 25 2012 libm.so.6 -> libm-2.13.so

-rwxr-xr-x 1 charles charles 105112 oct 7 2011 libpthread-2.13.so

lrwxrwxrwx 1 charles charles 18 apr 25 2012 libpthread.so.0 -> libpthread-2.13.so

-rw-r--r-- 1 charles charles 55144 oct 7 2011 libresolv-2.13.so

lrwxrwxrwx 1 charles charles 17 apr 25 2012 libresolv.so.2 -> libresolv-2.13.so

-rw-r--r-- 1 charles charles 22540 oct 7 2011 librt-2.13.so

lrwxrwxrwx 1 charles charles 13 apr 25 2012 librt.so.1 -> librt-2.13.so

-rw-r--r-- 1 charles charles 2871558 apr 25 2012 libstdc++.a

lrwxrwxrwx 1 charles charles 19 apr 25 2012 libstdc++.so -> libstdc++.so.6.0.17

lrwxrwxrwx 1 charles charles 19 apr 25 2012 libstdc++.so.6 -> libstdc++.so.6.0.17

-rwxr-xr-x 1 charles charles 4924070 apr 25 2012 libstdc++.so.6.0.17

-rw-r--r-- 1 charles charles 2588 apr 25 2012 libstdc++.so.6.0.17-gdb.py

-rw-r--r-- 1 charles charles 9848 oct 7 2011 libutil-2.13.so

lrwxrwxrwx 1 charles charles 15 apr 25 2012 libutil.so.1 -> libutil-2.13.so

3. 建立乙個200m的景象檔案(使用 dd命令),並初始化為 ext3型別(mkfs.ext3)然後,mount到 rootfs目錄

4. 在 etc/下,建立檔案 inittab,內容如下:

::sysinit:/etc/init.d/rcs

::respawn:-/bin/login

::restart:/sbin/init

ttyama0::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a –r

5. 在 etc 下建立目錄 init.d, 在 init.d下建立檔案 rcs, 內容如下:

#!/bin/sh

path=/sbin:/bin:/usr/sbin:/usr/bin

umask 022

export path

/bin/mount -a

/sbin/mdev -s

#/bin/sh

echo /sbin/mdev > /proc/sys/kernel/hotplug

hostname taotao

6.在 etc 下建立檔案 profile, 內容如下:

user="id -un"

logname=$user

#/bin/hostname taotao

hostname=`/bin/hostname`

ps1='\u@\h:\w#'

export user logname hostname ps1 path

7. 建立檔案 etc/fstab:

/dev/mmcblk0   /           ext3  errors=remount-ro,noatime 0 1 

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

tmpfs /tmp tmpfs defaults 0 0

tmpfs /var tmpfs defaults 0 0

mdev /dev ramfs defaults 0 0

8. 建立passwd檔案:

root::0:0:root:/root:/bin/sh

daemon::1:1:daemon:/usr/sbin:/bin/sh

bin::2:2:bin:/bin:/bin/sh

sys::3:3:sys:/dev:/bin/sh

和 group檔案:

root::0:

daemon::1:

bin::2:

sys::3:

tty::5:

etc目錄下的配置檔案總體結構如下:

etc

├── fstab

├── group

├── init.d

│   └── rcs

├── inittab

├── passwd

└── profile

1 directory, 6 files

9. 建立必要的裝置檔案:

sudo mknod mmcblk0 b 8 0
sudo mknod mmcblk0p1 b 8 1

10. 啟動核心:

11. 存在的問題:

i: mount 的時候提示有錯: 

mounting /dev/mmcblk0 on / failed: no such device or address
ii)執行mount 命令,會發現,有兩個在 / 的 mount項:

rootfs on / type rootfs (rw)

/dev/root  on /  type ext3

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 ...

使用qemu在x86上模擬arm64環境

最近要驗證 能否相容arm平台,因此需要在本地模擬乙個arm環境,目前虛擬化中,看起來只有qemu能滿足在x86伺服器上虛擬arm環境 qemu編譯 基礎依賴安裝 yum install zlib devel glib2 devel pixman devel y clone qemu原始碼 git ...

使KVM autotest支援qemu 模擬

在預設的情況下 kvm autotest必須要kvm的支援。否則會報錯。現在做下面的改動,可以讓在沒有kvm支援的情況下,也可以使用kvm autotest。diff git a client virt kvm vm.py b client virt kvm vm.py index ffa55c1....