【華為雲技術分享】自動搭建openEuler虛擬機QEMU運行環境


本文介紹了一個自動搭建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

 


免責聲明!

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



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