最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

構(gòu)建QEMU使用的嵌入式Linux系統(tǒng)

2023-06-06 18:06 作者:神棍技術(shù)宅Leo  | 我要投稿

0. 聲明

基于QEMU虛擬vexpress-a9

1. 準(zhǔn)備工作

需要安裝

  • 交叉編譯工具鏈,本人使用gcc-linaro-7.2.1-2017.11-rc1-x86_64_arm-linux-gnueabi

  • QEMU

安裝后需要配置好環(huán)境變量。

需要獲取

  • U-Boot源碼

  • Linux Kernel源碼

  • Busybox源碼

2. U-Boot源碼編譯

2.1 源碼修改

有一個(gè)問(wèn)題,和構(gòu)建環(huán)境有關(guān)。就是說(shuō),你在MenuConfig里配置了BOOT_ARGUMENT后無(wú)法成功設(shè)置bootargs環(huán)境變量。

打開(kāi)文件 {U-Boot_Dir}/include/configs/vexpress_common.h:152

把bootargs設(shè)置為應(yīng)該設(shè)置的參數(shù)(具體啟動(dòng)參數(shù)的內(nèi)容同下文)。

2.2 配置并編譯U-Boot

進(jìn)入U(xiǎn)-Boot源碼目錄,在終端中輸入

進(jìn)行vexpress-a9的默認(rèn)配置

在配置結(jié)束后輸入

進(jìn)入menuconfig,在之中找到Boot options,并進(jìn)入

選中Enable a default value of bootcmd并設(shè)置bootcmd為

上述代碼為U-Boot三行命令,以分號(hào)分割,分別加載了zImage內(nèi)核鏡像到內(nèi)存,加載設(shè)備樹(shù)到內(nèi)存,并且從內(nèi)存引導(dǎo)啟動(dòng)zImage。

并且設(shè)置boot argument為

配置完后保存退出。

配置完后進(jìn)行U-Boot的編譯。在終端中輸入

其中-j8指明了多核??梢蕴嵘幾g速度。

編譯完成后將會(huì)在U-Boot目錄出現(xiàn)U-Boot文件。

3. Linux 內(nèi)核編譯

進(jìn)入Linux內(nèi)核源碼目錄。在Shell中執(zhí)行

之后進(jìn)入menuconfig進(jìn)行進(jìn)一步的配置。

按需配置并退出,在這里L(fēng)eo醬沒(méi)有做什么修改。

接下來(lái)進(jìn)行編譯。

編譯完成后會(huì)在arch/arm/boot目錄中生成zImage,在arch/arm/boot/dtb目錄中找到設(shè)備樹(shù)文件vexpress-v2p-ca9.dtb

4 構(gòu)建文件系統(tǒng)

4.1 創(chuàng)建空白磁盤(pán)鏡像并分區(qū)

使用

創(chuàng)建一個(gè)512M的空白磁盤(pán)鏡像 sd.img,并對(duì)其進(jìn)行分區(qū)

在fdisk命令行中,輸入n新建分區(qū),新建分區(qū)時(shí)會(huì)依次要求輸入分區(qū)類(lèi)型(主磁盤(pán)分區(qū)或是拓展分區(qū)MS-DOS分區(qū)表),選擇主分區(qū),然后要求輸入分區(qū)號(hào),這些都使用默認(rèn)值即可。

接下來(lái)要求你輸入起始扇區(qū)與結(jié)束扇區(qū),起始扇區(qū)可以緊接上一個(gè)扇區(qū),使用默認(rèn)值。結(jié)束扇區(qū)可以使用諸如+32M的方式指定大小。分區(qū)結(jié)束后輸入w寫(xiě)入更改,Leo醬創(chuàng)建了一個(gè)32M的boot分區(qū),剩下的空間創(chuàng)建為根目錄的分區(qū)。

4.2 使用回環(huán)設(shè)備掛載img并格式化虛擬磁盤(pán)

使用kpartx,輸入

如果成功,會(huì)提示諸如

虛擬磁盤(pán)掛載成功的輸出信息

接下來(lái)可以針對(duì)每一個(gè)分區(qū),進(jìn)行格式化。

將第一個(gè)分區(qū)格式化為FAT,第二個(gè)分區(qū)格式化為EXT4

其中第二行的-L選項(xiàng)指定了卷標(biāo),不是必須

接下來(lái)可以新建兩個(gè)目錄掛載這兩個(gè)分區(qū),在此Leo醬新建了boot和rootfs目錄分別掛載第一個(gè)分區(qū)和第二個(gè)分區(qū)。創(chuàng)建好掛載點(diǎn)后進(jìn)行掛載。

將zImage內(nèi)核鏡像和設(shè)備樹(shù)文件復(fù)制到第一個(gè)分區(qū)的根目錄中。(注意root權(quán)限)

在第二個(gè)分區(qū)需要構(gòu)建文件系統(tǒng),可以使用buildroot或者使用busybox自己構(gòu)建。這里演示如何使用busybox構(gòu)建一個(gè)簡(jiǎn)單可用的文件系統(tǒng).

4.3 編譯Busybox

進(jìn)入busybox的源碼目錄,在Shell中輸入

進(jìn)入menuconfig,在菜單中選擇busybox包含的功能,配置完畢后保存退出。在此Leo醬沒(méi)有做任何修改。

配置后進(jìn)行編譯

編譯之后會(huì)在源碼目錄中生成busybox

4.4 制作文件系統(tǒng)

進(jìn)入掛載后的rootfs目錄,創(chuàng)建如下目錄

我們先構(gòu)建最小的可以運(yùn)行的Linux,因此并不搬移任何運(yùn)行庫(kù)。

將busybox放入bin目錄并做鏈接。

在這一步可以鏈接更多的Linux工具,取決于busybox中所啟用的功能。在此不一一列出。

進(jìn)入etc目錄,創(chuàng)建文件inittab,寫(xiě)入如下內(nèi)容

第一行指明開(kāi)機(jī)執(zhí)行rcS,第二行指明啟動(dòng)后按下Enter鍵進(jìn)入sh

創(chuàng)建開(kāi)機(jī)啟動(dòng)腳本/etc/init.d/rcS并寫(xiě)入

創(chuàng)建/etc/fstab文件并寫(xiě)入

創(chuàng)建/etc/profile,用于開(kāi)機(jī)后設(shè)置環(huán)境變量,寫(xiě)入

此時(shí),已經(jīng)搭建出一個(gè)可以支持系統(tǒng)使用的文件系統(tǒng)了。

將目錄卸載,并卸載磁盤(pán)鏡像。

5 使用QEMU模擬系統(tǒng)運(yùn)行

在Shell中輸入

并執(zhí)行。即可啟動(dòng)QEMU,如果成功,將會(huì)看到如下結(jié)果

啟動(dòng)后等待按下Enter進(jìn)入Shell

按下Enter,進(jìn)入Shell。

測(cè)試

說(shuō)明運(yùn)行成功,可以在此虛擬機(jī)上測(cè)試ARM Linux應(yīng)用程序,其實(shí)更主要的作用是可以進(jìn)行Linux系統(tǒng)的學(xué)習(xí)。學(xué)習(xí)用。

需要注意的是,加了-nographic選項(xiàng)的命令行是無(wú)法按Ctrl+C退出的,想要退出QEMU返回Shell,可以先按Ctrl+A再按X,即可退出,就和minicom一樣。

構(gòu)建QEMU使用的嵌入式Linux系統(tǒng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
留坝县| 永新县| 宁都县| 清原| 含山县| 沐川县| 彭水| 黔西县| 兰州市| 陆河县| 勐海县| 盐池县| 河间市| 麻江县| 专栏| 报价| 呼伦贝尔市| 东乌珠穆沁旗| 南投县| 桓台县| 淄博市| 集贤县| 当涂县| 普定县| 娱乐| 汉源县| 嘉定区| 和硕县| 鄂尔多斯市| 井冈山市| 普陀区| 娱乐| 翼城县| 修水县| 深圳市| 甘德县| 博乐市| 松潘县| 苏尼特左旗| 栖霞市| 浠水县|