VMware Ubuntu 20.04 LTS 使用Qemu虛擬機u-boot啟動或者配合busybox模擬ARM開發板


這里提供相關工具的下載地址

Linux內核下載地址
busybox下載地址
Qemu下載地址
u-boot下載地址

文中使用的版本為Linux-4.9.268、busybox-1.33.0、qemu-5.2.0、u-boot-2021.01-rc4
版本差別不大,應該都沒有問題的

一、busybox制作根目錄,通過鏡像啟動linux內核模擬ARM板

1、編譯linux內核

編譯條件:gcc編譯器,交叉編譯器

sudo apt install gcc
sudo apt install gcc-arm-linux-gnueabi

具體安裝配置見:交叉編譯器安裝使用

清除做過的配置

make clean

image
自定義內核配置,通過空格鍵選擇配置。這里不做修改,采用默認配置,后面可以根據需要再修改。

make menuconfig

image

如果運行make menuconfig出錯,則需要安裝如下的支持包

sudo apt-get install lncurses-dev
sudo apt-get install libncurses5-dev

保存退出后會自動生成.config配置文件

然后創建一個腳本build.sh
輸入下面內容,運行即可編譯

#! /bin/sh
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm

image

運行命令,開始編譯,內容比較多,會花一些時間

sudo sh build.sh

image

然后會在源碼目錄下的arch/arm/boot/文件夾下生成鏡像Image和zImage

2、編譯busybox

進入到busybox目錄下,編輯Makefile

搜索如下兩個變量,更改成這樣

ARCH ?= arm
CROSS_COMPILE ?= arm-linux-gnueabi-

執行下面命令,使得編譯器生效

source /etc/profile

修改配置文件

make menuconfig

如果出現沒有<curses.h>頭文件,嘗試安裝如下支持包

sudo apt-get install libncurses5-dev

修改配置完成后,make編譯

image

再make install生成默認文件_install

image

文件內容

image

記住這個_install文件夾位置,制作根目錄的時候會用到

3、編譯安裝qemu

為了更好的使用qemu,安裝前先下載一些安裝包

#必要安裝包
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev

#推薦安裝包
sudo apt-get install git-email
sudo apt-get install libaio-dev libbluetooth-dev libbrlapi-dev libbz2-dev
sudo apt-get install libcap-dev libcap-ng-dev libcurl4-gnutls-dev libgtk-3-dev
sudo apt-get install libibverbs-dev libjpeg8-dev libncurses5-dev libnuma-dev
sudo apt-get install librbd-dev librdmacm-dev
sudo apt-get install libsasl2-dev libsdl1.2-dev libseccomp-dev libsnappy-dev libssh2-1-dev
sudo apt-get install libvde-dev libvdeplug-dev libvte-2.90-dev libxen-dev liblzo2-dev
sudo apt-get install valgrind xfslibs-dev

#額外安裝包
sudo apt-get install libnfs-dev libiscsi-dev

自帶的qemu可能比較老,這里采用安裝包的方式安裝新版本

解壓后進入qemu文件夾

這里選擇一種在其他目錄安裝的方式,比較安全,不會向原目錄增加多余的文件

 # 在qemu根目錄打開終端
 # 准備一個本機debug版本
 mkdir -p bin/debug/native cd bin/debug/native
 # 配置 QEMU 並啟動構建
 ../../../configure --enable-debug

如果提示沒有Ninja,則進行下面的操作

#安裝支持包
sudo apt install re2c
#安裝編譯ninja
git clone git://github.com/ninja-build/ninja.git && cd ninja
./configure.py --bootstrap
#如果提示沒有python,則sudo apt install python
#如果還報錯沒有c++,則安裝sudo apt-get install g++,裝完后再次執行上面的命令
ls   #查看生成的ninja文件
cp ninja /usr/bin/    #拷貝ninja文件到/usr/bin/路徑下
#檢查ninja版本
ninja --version
#如果檢查報錯就安裝
sudo apt install ninja-build

image

錯誤解決,再回到出錯的步驟繼續執行

cd ..   #回到native目錄
../../../configure --enable-debug

image

配置完成,然后make編譯

這里有8000多行的編譯,時間會比較長

image

安裝

sudo make install

image

# 返回到QEMU根目錄
cd ../../..

運行./configure --help 可以獲得幫助信息

測試qemu編譯是否正常,輸入命令

bin/debug/native/x86_64-softmmu/qemu-system-x86_64 -L pc-bios

image

彈出QEMU界面,安裝成功。由於還沒有制作根目錄,所以顯示沒有設備

根據界面頂端提示,使用ctrl+alt+g退出輸入界面

可以用qemu-system-arm -machine help命令來查看所支持的開發板

image

4、制作啟動根目錄

自己選擇一個地方創建rootfs目錄

image

在rootfs里面創建下面的這些空目錄(和busybox的_install文件夾里重復的文件夾也可以不用創建,馬上要復制過來)

image

(1)完善編譯環境

先將剛剛busybox里生成的_install文件夾內部的全部內容復制到rootfs文件夾里。

在rootfs文件夾內打開終端

sudo cp -r ../../busybox-1.33.0/_install/* ./

命令里的文件夾路徑根據自己的情況來寫

image

當然lib庫還是不夠的,因為文件系統運行在arm平台,所以還需要arm-linux-gnueabi的庫,直接從系統里安裝的交叉編譯器里復制過來。

sudo cp -p /usr/arm-linux-gnueabi/lib/* ./lib

image

接着來完善根目錄文件

(2)完善設備文件dev內容

從終端進入dev文件夾

  • 創建四個串口設備
sudo mknod -m 666 tty1 c 4 1
sudo mknod -m 666 tty2 c 4 2
sudo mknod -m 666 tty3 c 4 3
sudo mknod -m 666 tty4 c 4 4
  • 創建控制台
sudo mknod -m 666 console c 5 1
  • 創建null
sudo mknod -m 666 null c 1 3

image

(3)完善配置文件etc內容

從終端進入etc文件夾
image

  • 創建inittab
::sysinit:/etc/init.d/rcS
#::respawn:-/bin/sh
#::respawn:-/bin/loginconsole
::askfirst:-/bin/sh
#tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
  • 創建fstab
proc    /proc      proc     defaults    0   0
none    /dev/pts   devpts   mode=0622   0   0
mdev    /dev       ramfs    defaults    0   0
sysfs   /sys       sysfs    defaults    0   0
tmpfs   /dev/shm   tmpfs    defaults    0   0
tmpfs   /dev       tmpfs    defaults    0   0
tmpfs   /mnt       tmpfs    defaults    0   0
var     /dev       tmpfs    defaults    0   0
ramfs   /dev       ramfs    defaults    0   0
  • 創建profile
# /etc/profile: system-wide .profile file for the Bourne shells

echo "-----------------------------------"
echo "Mini2440 FileSystem is Ready ..."
echo "-----------------------------------"

USER="`id -un`"
LOGNAME=$USER
#PS1='[\u@\h \W]\# ' #顯示主機名、當前路徑等信息
PS1='pymeia@Mini2440:\w # ' #顯示主機名、當前路徑等信息
PATH=$PATH
HOSTNAME=`/bin/hostname`

export USER LOGNAME PS1 PATH
  • 創建init.d/rcS
#! /bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin #可執行程序 環境變量
export LD_LIBRARY_PATH=/lib:/usr/lib #動態鏈接庫 環境變量
/bin/mount -n -t ramfs ramfs /var
/bin/mount -n -t ramfs ramfs /tmp
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t ramfs none /dev
/bin/mkdir /var/tmp
/bin/mkdir /var/modules
/bin/mkdir /var/run
/bin/mkdir /var/log
/bin/mkdir -p /dev/pts //telnet服務需要
/bin/mkdir -p /dev/shm //telnet服務需要
#echo /sbin/mdev > /proc/sys/kernel/hotplug//USB自動掛載需要
/sbin/mdev -s //啟動mdev在/dev下自動創建設備文件節點
/bin/mount -a

echo "-----------------------------------"
echo " welcome to Mini2440 board"
echo "-----------------------------------"
  • 創建group
root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:
lpmail:*:8:
news:*:9:
uucp:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
sudo:*:27:
  • 創建passwd
root::0:0:root:/:/bin/sh
ftp::14:50:FTP User:/var/ftp:
bin:*:1:1:bin:/bin:

創建var文件夾,存放日志信息

sudo ln -s /tmp var/lock
sudo ln -s /tmp var/log
sudo ln -s /tmp var/run
sudo ln -s /tmp var/tmp

5、qemu啟動開發板鏡像

制作根文件系統鏡像,把rootfs根目錄的內容復制到這個鏡像中,然后用qemu啟動模擬開發板。

方法1

制作磁盤鏡像啟動方式

(1)制作磁盤鏡像img

制作磁盤鏡像並格式化

qemu-img create -f raw disk.img 512M   #生成512M大小的磁盤鏡像
mkfs -t ext4 ./disk.img		#把磁盤鏡像格式化成ext4文件系統

也可以將其打包成mkdisk.sh腳本,方便再次創建

sudo sh mkdisk.sh
#!/bin/sh
qemu-img create -f raw disk.img 512M
mkfs -t ext4 ./disk.img

image

(2)復制rootfs內容到磁盤鏡像

將rootfs根目錄中所有內容復制到磁盤鏡像中

mkdir tmpfs #創建一個臨時文件夾,文件夾與rootfs同級
sudo mount -o loop ./disk.img tmpfs/  #創建掛載點並掛載
sudo cp -r rootfs/* tmpfs/		#復制文件到鏡像
sudo umount tmpfs		#卸載

也可以打包起來方便更新磁盤內容

sudo sh update.sh
#!/bin/sh
sudo mount -o loop ./disk.img tmpfs/
sudo cp -r rootfs/* tmpfs/
sudo umount tmpfs

image

更新期間會將rootfs的內容復制到tmpfs,再刪除

image

檢查鏡像文件信息

file disk.img
(3)啟動開發板
不帶qemu界面

直接在終端啟動,不帶lcd界面

sudo sh runnolcd.sh
#! /bin/sh
qemu-system-arm -M vexpress-a9 -m 512M -dtb ../linux-4.9.268/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel ../linux-4.9.268/arch/arm/boot/zImage -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd disk.img

如果遇到拒絕訪問的情況,請授予文件訪問權限,刪掉磁盤重新創建(直接更新不成功)

image

chmod +x rcS
chmod -R 777 init.d/*
或者授予etc的所有文件訪問權限
chmod -R 777 etc/

啟動界面如下

image

帶qemu界面

帶lcd界面啟動方式

sudo sh runlcd.sh
#! /bin/sh
qemu-system-arm -M vexpress-a9 -m 512M -dtb ../linux-4.9.268/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel ../linux-4.9.268/arch/arm/boot/zImage -append "root=/dev/mmcblk0 rw console=tty0" -sd disk.img

啟動界面如下

image

【注意】:啟動終端的命令,里面的路徑一定要根據自己創建的文件夾填寫正確。啟動命令也可以直接在終端輸入,但是比較麻煩。

方法2

制作sd根文件系統鏡像啟動方式

(1)制作sd卡鏡像

生成虛擬sd卡並格式化為ext格式

sudo sh mksd.sh
#! /bin/sh
dd if=/dev/zero of=rootfs.ext3 bs=1M count=32
mkfs.ext3 rootfs.ext3
(2)復制內容到sd鏡像

將虛擬sd卡掛載到/mnt,拷貝rootfs的所有文件到sd,然后卸載sd

sudo sh update.sh
#! /bin/sh
mount -t ext3 rootfs.ext3 /mnt/ -o loop
cp -r rootfs/* /mnt
umount /mnt

(3)啟動開發板

不帶qemu界面
sudo sh runnolcd.sh
#! /bin/sh
qemu-system-arm -M vexpress-a9 -m 512M -dtb ../linux-4.9.268/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel ../linux-4.9.268/arch/arm/boot/zImage -nographic -append "root=/dev/mmcblk0 rw console=ttyAMA0" -sd rootfs.ext3
帶qemu界面
sudo sh runlcd.sh
#! /bin/shqemu-system-arm -M vexpress-a9 -m 512M -dtb ../linux-4.9.268/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel ../linux-4.9.268/arch/arm/boot/zImage -append "root=/dev/mmcblk0 rw console=tty0" -sd rootfs.ext3

6、關閉虛擬開發板

方法一:直接關掉終端

方法二:ctrl +a 放手,然后按x

方法三:打開另一個終端輸入

sudo killall qemu-system-arm

二、u-boot啟動Linux內核方式,模擬ARM開發板

1、生成uImage內核映像

我們的目的是:uImage文件

生成它的步驟是:編譯u-boot生成mkimage--->用mkimage生成uImage

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

這里解釋一下uImage:

Linux內核編譯(make)之后會生成兩個文件,一個Image,一個zImage,其中Image為內核映像文件,而zImage為內核的一種映像壓縮文件,Image大約為4M,而zImage不到2M

而uImage是用mkimage工具根據zImage制作而來的,它是uboot專用的映像文件,它是在zImage之前加上一個長度為64字節的“頭”,說明這個內核的版本、加載位置、生成時間、大小等信息;其0x40之后與zImage沒區別。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

(1)編譯u-boot

修改配置

進入u-boot源碼目錄,分別進入Makefile和config.mk修改配置

修改頂層Makefile,指定交叉編譯器

CROSS_COMPILE ?= arm-linux-gnueabi-

修改頂層config.mk,指定ARM架構

ARCH := arm
編譯
#配置開發板
make vexpress_ca9x4_defconfig
#編譯u-boot
make –j4

image

如果編譯出錯,缺少如下配置

image

則安裝如下,解決問題

sudo apt install bison flex

如果make -j4報錯可能是上面的配置沒有起到作用,則嘗試如下命令

export CROSS_COMPILE=arm-linux-gnueabi-
export ARCH=arm
make clean
make vexpress_ca9x4_defconfig
make -j4

編譯完成后如圖

image

測試效果

在u-boot源碼路徑下,運行u-boot看是否成功

qemu-system-arm -M vexpress-a9 -kernel u-boot -nographic -m 512M

這里由於u-boot還沒有uImage鏡像,讓倒計時結束自動加載會出問題。看到提示后,快速按任意按鍵,停止自動加載,出現下圖,說明編譯成功。

image

(2)拷貝mkimage

編譯完u-boot源碼,會在tools目錄下生成mkimage,用它可以將zImage轉變成uImage

把u-boot目錄下tools/mkimage 拷貝到/usr/bin目錄下,為了可以執行mkimage相關的命令。

如果不拷貝直接執行命令,你會發現/usr/bin缺少文件

image

除此之外,還可以,直接命令下載,也會再該/usr/bin目錄下生成mkimage

sudo apt install u-boot-tools

這種方法下載自帶的u-boot-tools不知道會不會出問題,可以嘗試嘗試。

為nfs服務做准備

再生成uImage前,需要nfs配置的修改,重新編譯Linux內核,讓內核支持nfs功能,生成新的zImage,然后再轉化成uImage

修改配置如下,在Linux內核目錄下輸入:make menuconfig

進入File system --->

image

再進入Network File System --->

image

將帶有NFS的都用空格鍵選上

image

選中后如圖

image

保存退出

(3)生成uImage(疑問待解決)

方法一:

直接按照以下命令重新編譯(待驗證,地址也有問題)

 export ARCH=arm
 export CROSS_COMPILE=arm-linux-gnueabi-
 make vexpress_defconfig
 make zImage -j8
 make modules -j8
 make LOADADDR=0x60003000 uImage -j8
 make dtbs

方法二:將編譯生成的zImage轉化成uImage(也是地址問題待解決)

切換到Linux內核目錄下,執行下面命令

mkimage -n 'mini2440' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d  arch/arm/boot/zImage  arch/arm/boot/uImage

參數說明

-n 'mini2440'   #指定鏡像名稱
-A arm          #設置為arm架構
-O linux        #設置操作系統為linux
-T kernel       #設置鏡像類型為kernel
-C none         #設置壓縮類型為none
-a 0x30008000   #指定加載地址為0x30008000
-e 0x30008040   #執行入口地址為0x30008040
-d arch/arm/boot/zImage #指定鏡像數據文件路徑
arch/arm/boot/uImage    #最終生成的uImage的路徑和文件名稱

這里直接在zImage旁邊生成uImage

image

image

到此uImage鏡像生成結束

然后將uImage文件拷貝到tftpboot目錄下(這一步也可以后面再一起做),這個文件夾是在配置tftp的時候創建的。

sudo cp ../../linux-4.9.268/arch/arm/boot/uImage ./		#路徑根據自己的情況來

image

2、安裝配置nfs服務

在前面我們已經裝好了tftp服務器,但還需要安裝nfs服務

(1)安裝

sudo apt-get install  nfs-kernel-server

image

(2)創建nfs共享目錄,設置權限

sudo chmod 777 ./rootfs

image

(3)添加NFS共享目錄路徑

vi /etc/exports
在/etc/exports添加以下路徑
/home/pymeia/qemu/ARM/ubootA9/rootfs *(rw,sync,no_subtree_check)
其中:
	rw    可讀可寫操作
	sync    內存和磁盤上的內容保持同步

	no_root_squash    Linux主機不再將開發板設置為匿名用戶,可以操作文件讀寫
	注意:Ubuntu20.04,這個文件里不填這個參數,會報錯。exports文件里有參考實例說明,只有三個參數

	no_subtree_check    不檢查根文件系統子目錄文件

(4)重啟nfs服務

sudo /etc/init.d/rpcbind restart
sudo /etc/init.d/nfs-kernel-server restart
或者
systemctl restart nfs-kernel-server

(5)檢查nfs是否啟動正常

sudo showmount -e
#顯示全部可以掛載的目錄
sudo /etc/init.d/nfs-kernel-server status	#查看nfs服務的當前狀態
ps -e |grep nfs		#看進程中nfs服務是否啟動

image

(6)nfs使用

自己創建一個目錄當作nfs目錄,然后再/etc/exports中添加路徑,可以把你的程序放到這個目錄下,通過掛載映射到./mnt。./mnt可以再主機上,也可以在開發板上,方便進行代碼的調試。

在本機localhost上掛載nfs目錄到./mnt,這樣rootfs的內容就映射到了./mnt

image

sudo mount -t nfs localhost:/home/pymeia/qemu/ARM/ubootA9/rootfs ./mnt/
#這里掛載的目錄一定要在/etc/exports里添加,否則掛載無效

image

卸載后,文件刪除

umount ./mnt

同理,在開發板上掛載nfs目錄到/mnt(假設主機IP地址為192.168.146.129)

mount -t nfs -o nolock 192.168.146.129:/dev/nfs  /mnt
#其中:-o nolock是去除文件鎖,否則會報錯

3、安裝配置tftp服務

(1)安裝tftp

sudo apt-get install tftp-hpa tftpd-hpa xinetd

(2)更改配置文件

sudo cp  /etc/default/tftpd-hpa  /etc/default/tftpd-hpa_back	#備份原始設置
sudo gedit /etc/default/tftpd-hpa

填寫自己要創建tftpboot文件的路徑

image

(3)創建tftp目錄,設置權限

配置好后,到上面填寫的路徑,創建文件夾,並設置權限

#切換到上面填寫的路徑
sudo mkdir tftpboot
sudo chmod 777 tftpboot

(4)重啟tftp服務,讓其生效

sudo /etc/init.d/tftpd-hpa restart

image

(5)測試tftp服務是否正常

把需要的文件如u-boot、dtb、uImage等拷貝到tftpboot文件夾(后面u-boot啟動要用到)

uImage

cp -r /home/pymeia/qemu/ARM/linux-4.9.268/arch/arm/boot/uImage ./

u-boot

cp -r /home/pymeia/qemu/ARM/ubootA9/u-boot/u-boot ./

vexpress-v2p-ca9.dtb

cp -r /home/pymeia/qemu/ARM/linux-4.9.268/arch/arm/boot/dts/vexpress-v2p-ca9.dtb ./

整理copy.sh

#! /bin/sh
cp -r /home/pymeia/qemu/ARM/linux-4.9.268/arch/arm/boot/uImage ./
cp -r /home/pymeia/qemu/ARM/ubootA9/u-boot/u-boot ./
cp -r /home/pymeia/qemu/ARM/linux-4.9.268/arch/arm/boot/dts/vexpress-v2p-ca9.dtb ./

image

tftp 192.168.146.129   #主機ip可以用ifconfig來查看
tftp> get uImage	#獲取文件,保存到用戶名目錄下
tftp> q	#退出tftp
ps -e | grep "tftp"	#查看 tftp  的進程號

image

可以看到,獲取的文件和獲取失敗的文件都會顯示在用戶目錄下

image

4、配置qemu和ubuntu網絡橋接功能(這一部分,暫時沒有搞完)

VMware 需要配置成NAT模式, 在VMware的橋接模式下面,目前qemu無法成功連接網絡
VMware也不能設置成靜態ip地址,設置成靜態ip地址也是無法連接網絡

安裝橋接依賴包

sudo apt install uml-utilities bridge-utils
#bridge-utils    虛擬網橋工具
#uml-utilities   UML(User-mode linux)工具

查看是否tun設備文件,如果存在說明宿主機的內核支持TAP網絡接口

ls /dev/net

image

如果沒有,則要手動創建

sudo mkdir /dev/net
sudo mknod /dev/net/tun c 10 200

加載tun模塊

sudo /sbin/modprobe tun

非常建議更改重要配置的節點時,及時創建虛擬機快照,方便恢復,已經重裝一次,吸取教訓了

下面是大雷區,不要亂用,或者在用之前創建還原快照,否則會直接導致Ubuntu 20.04 LTS失去網絡,甚至運氣差點要重裝

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

修改配置文件(重啟生效)

sudo gedit /etc/network/interfaces

添加以下內容

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto ens33
auto br0
iface br0 inet dhcp
bridge_ports ens33

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

添加qemu有關系統腳本

/etc/qemu-ifup文件中添加以下內容

#!/bin/sh

echo sudo tunctl -u $(id -un) -t $1
sudo tunctl -u $(id -un) -t $1
echo sudo ifconfig $1 0.0.0.0 promisc up
sudo ifconfig $1 0.0.0.0 promisc up
echo sudo brctl addif br0 $1
sudo brctl addif br0 $1
echo brctl show
brctl show

sudo ifconfig br0 192.168.146.129
# 根據自己的實際情況修改 IP地址,注意:uboot 中的 CONFIG_SERVERIP(serverip) 要跟這里一樣

/etc/qemu-ifdown文件中添加以下內容

#!/bin/sh
echo sudo brctl delif br0 $1
sudo brctl delif br0 $1
echo sudo tunctl -d $1
sudo tunctl -d $1
echo brctl show
brctl show

給上面的腳本添加執行權限

sudo chmod +x /etc/qemu*

重啟網絡使生效

sudo service network-manager restart

u-boot啟動

修改u-boot配置文件include/configs/vexpress_common.h

sudo gedit include/configs/vexpress_common.h
#define CONFIG_BOOTCOMMAND \
		"tftp 0x60003000 uImage;tftp 0x60500000 vexpress-v2p-ca9.dtb; \
		setenv bootargs 'root=/dev/mmcblk0 console=tty0'; \
		bootm 0x60003000 - 0x60500000;"


#define CONFIG_IPADDR 10.0.2.14
#define CONFIG_NETMASK 255.255.255.0
#define CONFIG_SERVERIP 192.168.146.129

所有配置完成后,開始建立u-boot啟動內核文件

新建啟動腳本ubootqemu.sh

#! /bin/sh
qemu-system-arm \
	-M vexpress-a9 \
	-kernel u-boot  \
	-nographic  \
	-m 512M  \
	-net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
	-sd rootfs.ext3

未完....問題解決后更新

參考文章鏈接:
https://blog.csdn.net/u010344264/article/details/82949143
https://zhuanlan.zhihu.com/p/340362172
https://www.jianshu.com/p/8619a6739040
https://www.cnblogs.com/schips/p/12350122.html
https://blog.csdn.net/wxh0000mm/article/details/90056912


免責聲明!

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



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