ubuntu18.04 qemu環境搭建【學習筆記】


一、准備工具  

1.1 安裝相關工具    

sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueabi build-essential

1.2 下載kernel(linux-4.0)與busybox(1.24)源碼

https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/

https://busybox.net/downloads/busybox-1.24.0.tar.bz2

 

二、編譯最小文件系統

2.1 解壓busybox

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-

make menuconfig   選中靜態編譯
|
Busybox Settings  ---> 
    |
    [*] Build BusyBox as a static binary (no shared libs)

make install 

cd _install
mkdir etc dev mnt
mkdir -p etc/init.d/
cd etc/init.d/

vim rcS
mkdir -p /proc
mkdir -p /tmp
mkdir -p /sys
mkdir -p /mnt
/bin/mount -a
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

chmod a+x rcS

cd ..
vim fstab
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
debugfs /sys/kernel/debug defaults defaults 0 0

vim inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

cd ..
cd dev 
sudo mknod console c 5 1
sudo mknod null c 1 3

拷貝交叉工具鏈的庫到根文件系統
cp /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/lib/*so* lib/ -d
cp /opt/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/arm-linux-gnueabi/libc/usr/lib/*so* usr/lib -d

生成ext3鏡像文件並掛載
  sudo dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=32 

mkfs.ext3 path/a9rootfs.ext3
mkdir tmpfs
sudo mount -t ext3 a9rootfs.ext3 tmpfs -o loop sudo cp -r rootfs/*tmpfs sudo umount tmpfs 

啟動參數要添加-sd選項
進入系統執行mount -t ext3 /dev/mmcblk0 /mnt/

 2.2 linux編譯配置

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
make vexpress_defconfig

make menuconfig
General setup  ---> 
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support                                                              
    (_install) Initramfs source file(s) 

  ()  Default kernel command string

Kernel Features  ---> 
Memory split (3G/1G user/kernel split)  ---> 
(X) 3G/1G user/kernel split 



make bzImage -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
make dtbs
啟動qemu qemu
-system-arm -M vexpress-a9 -smp 4 -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -dtb arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM