本文介紹了一個自動搭建openEuler虛擬機QEMU運行環境的腳本使用方法,本腳本能下載並安裝各種依賴項,自動下載並編譯安裝QEMU 4.1.1和busybox 1.25.1,下載並安裝對Linux 4.19.1進行ARM64交叉編譯並用gdb進行調試的環境,該環境能幫助我們理解openEuler內核的運行,以及下載和QEMU環境下安裝openEuler 1.0版。本腳本參考了前輩[1]在ARM32位環境下對Linux Kernel的交叉編譯腳本,特此感謝!我們修改了QEMU、busybox和Linux kernel的版本和根文件系統搭建的方法,增加了依賴項,並將ARM交叉編譯環境和gdb改為了64位,而且增加了openEuler的相關內容。
一、openEuler虛擬機運行環境搭建
環境准備:在VMware 15.1.0或VirtualBox 6.10上搭建Ubuntu 18.04虛擬機,建議分配硬盤大小120G,內存大小2G以上。
自動搭建腳本碼雲地址:
https://gitee.com/luo_yu_zhe/openEulerInstallation
運行腳本之前請手動更改下載源為國內源!否則下載較慢,更改源的方式見參考文獻[3]。
A. 腳本運行流程
1.sudo ./prepare.sh
2.source ~/.bashrc
3.sudo ./build.sh, 做完這一步ARM64交叉編譯環境、linux kernel 4.19.1、busybox和QEMU以及依賴項應該都裝好了。
5.sudo ./start-qemu.sh進行無gdb調試linux kernel 4.19.1 或者sudo./start-qemu-gdb.sh之后另開一個窗口,aarch64-linux-gnu-gdb 進入gdb界面,再輸入 target remote localhost:1234進入調試階段,在gdb 窗口輸入c就可以切換到qemu窗口運行。
sudo ./start-qemu.sh后:
開啟gdb運行后:
B. Prepare.sh 腳本功能介紹
該腳本用於下載並解壓64位ARM交叉編譯工具、QEMU-4.1.1和openEuler鏡像,此外,它還會通過apt install 安裝依賴項。該腳本會檢查壓縮包是否存在,若存在不會重復下載解壓。
下載openEuler鏡像:
下載並解壓交叉編譯gcc,設置環境變量:
安裝依賴項:
下載並安裝QEMU-4.1.1:
下載QEMU UEFI啟動固件並生成img文件,大小可以分配:
C. Build.sh腳本功能介紹
下載並編譯linux kernel 4.19.1,下載並編譯busybox1.25.1,制作根文件系統。架構和版本可以通過文件開頭的參數進行設置。
編譯Linux內核4.19.1版:
把編譯好的Image文件copy到目標文件夾:
下載並解壓busybox:
編譯安裝busybox:
制作根文件系統:
D. qemu啟動腳本介紹
start-qemu.sh:qemu普通啟動。
start-qemu-gdb.sh:帶gdb 啟動。
start-euleros.sh:用qemu啟動euleros鏡像。
采用gdb模式啟動的時候首先運行sudo./start-qemu-gdb.sh命令,然后重新啟動一個terminal,運行aarch64-linux-gnu-gdb,輸入端口號然后按c。
qemu常見選項[2]:
-hda file、-hdb file、-hdc file和-hdd file。
把文件當成hard disk 0、hard disk 1、hard disk 2和hard disk 3。
-append cmdline
將cmdline作為kernel commandline,所謂kernel command line就是在kernel啟動的時候,用cmdline對內核進行配置。比如"root=/dev/hda",將/dev/hda設置成根文件系統。
-M machine
選擇模擬的機器(我們可以輸入-M?提到一個模擬的機器列表)
-fda file/-fdb file
使用file作為軟盤鏡像.我們也可以通過將/dev/fd0作為文件名來使用主機軟盤。
-cdrom file
使用文件作為CD-ROM鏡像(但是我們不可以同時使用'-hdc'和'-cdrom').我們可以通過使用'/dev/cdrom'作為文件名來使用主機的CD-ROM。
-boot [a|c|d]
由軟盤(a),硬盤(c)或是CD-ROM(d).在默認的情況下由硬盤啟動.
-snapshot
寫入臨時文件而不是寫入磁盤鏡像文件.在這樣的情況下,並沒有寫回我們所使用的磁盤鏡像文件.然而我們卻可以通過按下C-a s來強制寫回磁盤鏡像文件。
-m megs
設置虛擬內存尺寸為megs M字節.在默認的情況下為128M。
-smp n
模擬一個有n個CPU的SMP系統.為PC機為目標,最多可以支持255個CPU。
-nographic
在通常情況下,Qemu使用SDL來顯示VGA輸出。使用這個選項,我們可以禁止所有的圖形輸出,這樣Qemu只是一個簡單的命令行程序。模擬的串口將會重定向到命令行。所以,我們仍然可以在Qemu平台上使用串口命令來調試Linux內核。
二、openEuler 系統安裝說明
1.QEMU安裝openEuler鏡像
運行完sudo ./prepare.sh后,運行sudo./start_euleros.sh,運行該腳本會執行一下命令:
qemu-system-aarch64 -machine virt -cpucortex-a57 -m 1024 -bios ./QEMU_EFI.fd -cdrom openEuler-1.0-aarch64-dvd.iso-hda ./qemu_Euler.img -serial stdio
QEMU會讀入openEuler的鏡像文件然后進入安裝流程。選擇安裝openEuler后,選擇安裝模式(選擇test media選項),之后分別配置每個前面有”[!]”這個標記的選項,主要有installation destination, root password和user password 等,注意選擇的時候是先輸入選項對應的數字,確定之后按回車,然后再按c(continue)繼續安裝。以下是一個選擇的流程,選項前面有[x]代表選中了該選項:
A.選擇 Use text mode 選項
B.選擇Root password選項並配置
配置完之后我們可以發現大部分之前有[!]的選項之前都變成了[x]。
C. 配置安裝目的地
選擇大小:
選擇使用空間:
VMware:
VirtualBox:
選擇Partition方式:
VMware:
VirtualBox:
D. 配置用戶賬戶,輸入b完成配置
E.安裝完成
到這一步需要按一下回車然后輸入之前設定的用戶名和密碼才行。
然后就和linux的操作基本一樣了~有一個問題是每次運行都要安裝一次,所以裝好之后最好能保存一個虛擬機快照。
參考文獻
[1]https://github.com/xianjimli/qemu-arm-linux.git
[2]https://blog.csdn.net/ustc_dylan/article/details/5385691
[3]https://blog.csdn.net/qq_35451572/article/details/79516563