1. 程式人生 > >一步步教你如何在Ubuntu虛擬機器中安裝QEMU並模擬模擬arm 開發環境(一)uImage u-boot

一步步教你如何在Ubuntu虛擬機器中安裝QEMU並模擬模擬arm 開發環境(一)uImage u-boot

初次接觸qemu是因為工作的需要,有時候下了班,可能需要在家研究一些東西,因為博主用到arm環境,這時候博主比較小氣,不願花錢買開發板,當然博主在這裡給大家的建議是,如果要真正學懂arm構架的相關知識,還是單獨買一塊arm的開發板,慢慢摸索吧,畢竟這才是最好的學習方法,如果你不願花錢那麼你可以跟著博主一起來操作,今天的這篇文章,博主主要講的是,在Ubuntu虛擬機器環境下,採用qemu 來模擬出arm的開發環境,在操作開始之前,首先科普一下:

1.什麼是QEMU:QEMU可以簡單的理解為虛擬作業系統模擬器,顧名思義這是一種虛擬的存在(更多介紹請參考百度百科)

2.為什麼要採用QEMU 模擬操作環境:(1)為攻城獅們節約時間,在家也可以隨時學習,可以脫離開發板實物,(2)方便除錯等等

特此宣告:本文章主要爭對初入職場的小白,如果您不是為了更高階更復雜的嵌入式環境搭建,請跟著博主一步步操作!!!

第一部分:Ubuntu虛擬機器的安裝,博主環境,宿主機為 wind64位,所以我們這裡下載Ubuntu映象為桌面版的64位映象

1.Ubuntu17.04下載地址及其版本:


下載到宿主機,無需做解壓,

請分清您自己的宿主機版本,當然也可以安裝32位,但為了後面保證不出錯,建議和我一樣

接下來就是開啟虛擬機器進行一步步的安裝了,博主在這裡就不做展示了,下面我安裝好的畫面,


2.Ubuntu安裝好以後,我們做如下操作,sudo apt-get  update 更新我們的軟體,保證後面安裝其他軟體都是最新版本的


3,軟體更新完畢,我們先安裝 vim  工具,為了後面更方便的操作sudo apt-get vim


4,vim安裝完畢後,我們接下來要安裝一個重要的工具了,vmware-tools,這是Ubuntu和我們宿主機之間進行互交的工具,


點選之後,系統會自動掛載虛擬磁碟,裡面存放我們需要的vmware-tools工具安裝目錄和可執行檔案,我們把它拷貝到home下,新建一個資料夾放在裡面


接下就是進行解壓和安裝了,一路  enter  鍵 和 yes  no  的輸入,等待安裝完畢



安裝完畢後,我們可以試試安裝是否正確,我們從宿主機複製一個檔案到我們的Ubuntu看看,是個可以複製成功,如果不能複製,可以輸入命令 reboot  重啟我們的虛擬機器

問題就解決,當然你可以為主機和虛擬機器差建立一個共享資料夾(相關方法這裡就不羅嗦了,自己百度吧),博主這裡試了試,安裝時正確的

至此我們的Ubuntu開發環境初步就搭建完成了,這裡只是介紹了,最初不得開發環境搭建和配置,更多的自己慢慢摸索吧

第二部分:安裝QEMU ,我們的主角終於要登場了

1.博主在這裡就選擇聯網自己安裝了,這樣比較方便,手動安裝要先安裝依賴庫,想提高自身的博友們,可以借鑑別人的帖子

這裡博主也給大家提供QEMU 的下載地址:

下面安裝  qemu  採用聯網方式安裝:


靜等安裝完畢吧,安裝完畢,我們輸如  qemu  敲擊tab鍵,就可以匹配出如下的 可以模擬環境,本次我們模擬的就是

qemu-system-arm  的開發環境


下面來看看我們安裝的版本,2.8版本已經很高了


第三部分:下載核心原始碼並編譯

1.下載地址:http://www.kernel.org

我們下載一個比較穩定的版本 4.9.98


因為我們此次使用模擬arm  開發環境,所有我們需將核心編譯成  arm  版本的核心

2.安裝arm-linuc-gcc  交叉編譯工具,可以到網上去下載,版本如下


我們將安裝包拷貝到 /opt/ 在,進行解壓工作,將最終得到的  4.4.3  目錄在移動到 /opt/下,這樣路徑變的簡短,方便我們解下來配置環境變數

2. shell視窗輸入 sudo vi ~/.bashrc  在左後加入一行,儲存退出,再輸入  source ~/.bashrc  是我們的配置立即生效


3,我們在shll視窗輸入 arm-none-   敲擊tab 鍵,看能否匹配出如下:能配置出就說明我們的配置和安裝都正確

4,您還可以自己編寫一個最簡單的程式,用 arm-none-linux-gnueabi-gcc  來編譯看看,是不是 arm  版本的可執行檔案,博主在這裡不做演示


4.交叉工具安裝好以後我們的核心原始碼也下在好了,我們將它拷貝到Ubuntu裡面,放在你喜歡的目錄下,進行解壓 

tar -xvf  要解壓的檔案,解壓完畢後我們進入  最 頂層的 Makefile  檔案裡面,做如下修改:


5.修改完畢後,儲存退出

6.我們再檢視   aech/arm/configs  目錄裡的各個廠商的核心配置檔案,這個檔案非常重要,並做如下操作:


7.至此我們就將我們需要的核心編譯時需要的配置檔案寫入核心了

8,下面還需要對核心進行詳細的配置,輸入make  menuconfig ,這時,可能會出錯,我們還需要安裝 庫檔案

9,輸入: sudo apt-get install   libncurses5-dev  就可以解決,我們在輸入 make menuconfig 會進入如下畫面:

10.我們將如圖 標示  的部分 選上,讓核心支援nfs功能。


11.因為我們需要用nfs 來掛載根檔案系統,所有我們將 nfs  功能 編譯進核心之中,使其支援nfs 功能

12.接下來我們就可以進行編譯了,輸入  make LOADADDR=0X60003000 uImage -j4 ,這裡可能會報錯,

找不到mkimage  ,起初博主也感動模糊,但經過 某某度  之後,原來是 因為我們需要 u-boot 來通過自動引導核心啟動

的工具將核心在編譯成uImage 的格式

13.出錯解決: 這裡單獨參看我的部落格,更詳細的解決方式, 這裡我們 輸入  sudo  apt-get install u-boot-tools 進行安裝,成功後關閉 shell視窗,再次開啟, 就可以解決

14,再次進行編譯核心,成功了,看到這裡,博主心裡送了一口氣,終於可以喝口茶了


也許看到這裡你已經迷糊了,但是作為一名coder,如果你想在你的不惑之年你還想成為一名大師級的coder,那麼我可以告訴你,這些都是小兒科,

等著你的大山還很多呢,打起精神來,騷年!接下來才是本文章的重中之重,沒有一下的操作做鋪墊,前面和後面的我們做的再好在漂亮,都是白搭的

第四部分:配置我們的ubuntu 和 qemu 的網路環境,因為我們要通過網路來從主機下載核心並有u-boot引導啟動,還要載入跟檔案系統,所以如下的操作非常必要:

1.ubuntu安裝 tftp 伺服器,如圖,輸入  sudo apt-get install tftp-hpa tftpd-hpa  來自動安裝 tftp伺服器


2.安裝完成後,我們需要做相應的配置 vi /etc/default/tftpd-hpa  做如下的更改


這裡的路徑可以根據自己的喜好來自己定義,博主在這裡就定義在家目錄下了,在哪裡定義我們就要在哪裡建立 tftpboot  目錄

配置好後,儲存退出,wq退出,

!!!注意:博主在這裡在給大家一個建議,我在退出某個檔案的時候,你確定好的檔案可以 wq  或 w  ,x  ,對於你在檢視別人的程式碼的時候,建議在退出的時候選擇 q 退出,這樣及時你不小心碰到 鍵盤對檔案經行了無意間的修改也沒關係,因為 q 是不儲存退出,這是一個好習慣,對應一個上萬行程式碼的檔案來說你這樣做是必要的

3.   cd /home     我們回到家目錄下  ,輸入  sudo mkdir tftpboot   建立 tftpboot 目錄,加上最高許可權  sudo chmod 777 tftpboot 

4儲存退出後,我們需要重啟tftp 伺服器來讓其生效 ,輸入  sudo /etc/init.d/tftpd-hpa restart  ,顯示如下表示重啟成功


在此,我們還可以輸入   ps -e | grep "tftp"   來檢視 tftp  的程序號

5,我們將第三部分中編譯核心生產的uImage  核心映象拷貝到tftpboot目錄下


6.tftp伺服器安裝好以後,我們還需要安裝nfs  服務,輸入  sudo apt-get install  nfs-kernel-server 


7.安裝完成  我們在   /dev   目錄需要建立nfs 裝置的掛載點

mkdir  /dev/nfs 


8.做如下的配置 vi /etc/export  在檔案的最後一行新增如下內容

/home/rootfs *(rw,sync,no_root_aquash,no_suntree_check)

前面的內容代表後面我們製作好的根檔案的存放的路徑

9,重啟 nfs  服務,suod /etc/inint.d/nfs-kernel-server restart  

10,這一步也很關鍵,配置qemu和  ubuntu 網路橋接

先安裝一個小工具:  sudo apt-get 

install uml-utilities bridge-utils

11 ,開啟相應的檔案進行配置網路   sudo  vi /etc/network/interfaces

做如下內容的新增,我們再為qemu新增一塊網絡卡   br0


12,同樣儲存退出,這裡我們需要重啟ubuntu 來是我們配置的網路生效  輸入   reboot   來重啟ubuntu

13,ubuntu  重啟之後  ,我們輸入   ifconfig   指令來檢視我們新新增的網路是否成功 ,如果看到  br0  存在且和  ip 地址,說明配置成功

這裡博主在製作的過程中忘記儲存圖片啦,就不貼出來了

做到這裡我們可以暫時歇一歇,因為我們後面還有很多的事請要做,u-boot  的編譯  和  根檔案的製作都非常重要!

第五部分:我們需要為我們的核心啟動來編譯生成u-boot,u-boot的下載地址和下載的版本


1.我們將下載來大u--boot檔案進行解壓  tar -xvf u-boot-2017.07.tar.bz2   得到  u-boot-2017.07  資料夾

2.  cd u-boot-2017.07  進入資料夾,在執行 cd configs  ,在這裡我可以看到很多廠商開發板的配置檔案

我們選擇   vexpress-ca9x4_defconfig  這個配置檔案,並做如下的操作


3.這樣我們就生成了 .config檔案了,接著 我們在 頂層目錄下  vi Makefile  開啟檔案做如下的更改:

  249 行新增     CROSS_COMPILE ?=arm-none-kinux-gnueabi-   這樣的內容,完畢  儲存退出

4,還是在定層目錄  執行   vi  config.mk  打來檔案   條件如下的內容:更改25行的內容


5. 接這再輸入  vi include/configs/vexpress_comm.h開啟檔案,別問為什麼  跟著操作,加入一下的內容:


6.新增完以上內容,儲存退出,這樣我們就配置好, 接下來就是見證奇蹟的時刻了

7,輸入   make -j4   開啟4個執行緒來進行編譯

8,得到我們的勞動成果了


9.  cp  u-boot  /tftpboot   目錄下,我將從這裡啟動u-boot並加裝核心zai

總結我們得到的成果:   核心映象  uImage   u-boot  ,接下來我們還需要製作 根檔案系統!!!!

好了,經過以上n多步的操作,我們離目標又更近一步了,但是我們還有工作沒做完了,晚已深,人已困,今晚就到這。

後面博主會抽出時間來把  rootfs  的製作方法也展示給大家,讓大家儘快把 qemu模擬arm  環境製作出來,給自己增加信心,在IT 的路上越來越好!!!

宣告::由於博主學識淺薄,文章中的有些地方難免會有紕漏,大家採納的過程中,希望萬分體諒,並給出意見,博主會虛心接受!!

未完待續....................................................................................

敬請期待下一節   rootfs  的製作過程!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

相關推薦

步步如何在Ubuntu虛擬機器安裝QEMU模擬模擬arm 開發環境uImage u-boot

初次接觸qemu是因為工作的需要,有時候下了班,可能需要在家研究一些東西,因為博主用到arm環境,這時候博主比較小氣,不願花錢買開發板,當然博主在這裡給大家的建議是,如果要真正學懂arm構架的相關知識,還是單獨買一塊arm的開發板,慢慢摸索吧,畢竟這才是最好的學習方法,如果

步步讀懂NETIL(圖文詳解)

接觸NET也有1年左右的時間了,NET的內部實現對我產生了很大的吸引力。個人覺得:能對這些底部的實現進行了解和熟練的話,對以後自己寫程式碼是有很大幫助的,好了,廢話不多說,請看下邊: .NET CLR 和 Java VM 都是堆疊式虛擬機器器(Stack-Based VM),

步步讀懂NETIL附帶圖

    一步步教你讀懂NET中IL(附詳細圖)   接觸NET也有1年左右的時間了,NET的內部如何實現對我產生了很大的吸引力,在msdn上找到一篇關於NET的IL程式碼的圖解說明,寫的挺不錯的,在此基礎上加上個人的理解,每一個步驟都附帶圖解說明,如果你以前對NET中IL感覺晦澀難懂,頭昏腦漲的時候,沒關

步步Hadoop多節點叢集安裝配置

1、叢集部署介紹 1.1 Hadoop簡介 Hadoop是Apache軟體基金會旗下的一個開源分散式計算平臺。以Hadoop分散式檔案系統HDFS(Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的開源實現)為核心的Hadoop為使用者提

Ubuntu虛擬機器安裝VMware tools異常中斷 Unable to start services for VMware Tools

前言:我用的是VMware 10.0.3和Ubuntu 14.04.1 LTS,host是Windows 7系統。 在VMware中裝完Ubuntu後,為了與host之間互傳檔案,需要安裝VMware tools。 在安裝過程中出現報錯,試了好幾次都沒有成功,報錯資訊

虛擬機器安裝docker,並且ssh與的連線centos6--docker筆記

當前環境:win10->vmware->centos6.5(86_64) 不用管太多,先安裝docker。後面會有注意點。 1. yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-

機器學習:步步理解反向傳播方法

神經網絡 方法 數學 https 以及 看到了 兩個 簡單的 down http://www.360doc.com/content/17/0209/17/10724725_627833018.shtml 數學完全看不懂 看到了這篇通過示例給出反向傳播的博文A Step by

步步Ubuntu 16.04安裝Cadence IC617

本部落格記錄了我用Ubuntu 16.04搭建積體電路設計環境的過程,以往像Cadence or Synopsys等EDA軟體只支援在Redhat或Centos等Linux發行版下,這些系統軟體庫都相對較老,由於Cadence開放了對Ubuntu等發行版的支援,

手把手在VMware虛擬機器安裝Ubuntu14.04系統

在VMware中建立完虛擬機器之後,一般需要給虛擬機器安裝系統,比較受青睞的系統有Ubuntu和Centos,關於Centos系統的安裝之前已經寫過了,感興趣的小夥伴可以戳這篇文章:靠譜的centos7.4系統安裝教程,在虛擬機器上安裝Centos6.7作業系統。前幾天給大家

Linux學習筆記 -- 在虛擬機器安裝Ubuntu 18.04

為虛擬機器安裝Ubuntu系統 1.在VMware視窗中點選“編輯虛擬機器設定”按鈕,開啟“虛擬機器設定”對話方塊; 2.首先點選”CD\DVD(SATA)”項,然後在右側視窗中選中“使用映像檔案”並選中下載好的映像檔案,最後點選“確定”按鈕; 3.回到VMware主視窗,點選“開啟此虛擬機器”

步步創建自己的數字貨幣代幣進行ICO

允許 總量 ted exe init allow transfer ner 定義 本文從技術角度詳細介紹如何基於以太坊ERC20創建代幣的流程. 寫在前面 本文所講的代幣是使用以太坊智能合約創建,閱讀本文前,你應該對以太坊、智能合約有所了解,如果你還不了解,建議你先看以太坊

步步開發、部署第一個去中心化應用(Dapp) - 寵物商店

區塊鏈今天我們來編寫一個完整的去中心化(區塊鏈)應用(Dapps), 本文可以和編寫智能合約結合起來看。 寫在前面 閱讀本文前,你應該對以太坊、智能合約有所了解,如果你還不了解,建議你先看以太坊是什麽除此之外,你最好還了解一些HTML及JavaScript知識。 本文通過實例教大家來開發去中心化應用,應用效果

科普貼 | 以太坊代幣錢包MyEtherWallet使用教程,步步玩轉MEW

按鈕 wid isp 查詢 到你 pan fail VC oam MyEtherWallet 是一個以太坊的網頁錢包,使用非常簡單,打開網頁就可以使用,源代碼開源,不會在服務器上存儲用戶的錢包信息如私鑰和密碼。支持 Ledger Wallet、TREZOR 等硬件錢包

步步如何打造一個網站克隆工具仿站

obj cell ins 地址 line load mail als () 前兩天朋友叫我模仿一個網站,剛剛開始,我一個頁面一個頁面查看源碼並復制和保存,花了我很多時間,一個字“累”,為了減輕工作量,我寫了個網站“克隆工具”,一鍵克隆,比起人工操作, 效率提高了200%以上

【Android】從無到有:手把手步步使用最簡單的Fragment

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80585416 【本文適用讀者】         用程式碼建立並使用了 Fragment,新增 Fragment 之

【Android】從無到有:手把手步步使用最簡單的Fragment

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80579389 【本文適用讀者】         targetSdkVersion 版本大於等於 21,即 app 即將有可能

【Android】從無到有:手把手步步使用最簡單的 Fragment

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80515227 【本文適用讀者】         知道 Fragment 是什麼,不知

【Android】從無到有:手把手步步構建使用RecyclerView

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80480906 【AS版本】 【新增依賴】 1、開啟 Project Structural。(可點選圖示 ,也可以在File選單中開啟,也可以按 Ct

在VMware虛擬機器安裝ubuntu

1.首先準備好Ubuntu作業系統的映象-----.ios檔案 ISO檔案其實就是光碟的映象檔案,燒錄軟體可以直接把ISO檔案刻錄成可安裝的系統光碟,ISO檔案一般以iso為副檔名 2.建立一個新的虛擬機器,並設定它的硬碟空間和記憶體大小等,在虛擬機器中連線上對應的操作映象 3.開啟虛擬機器

Vagrant 搭建跨平臺的 PHP 開發環境 安裝 ubuntu 虛擬機器

Vagrant是一個軟體,可以自動化虛擬機器的安裝和配置流程,支援 VirtualBox 、VMware 、AWS 作為虛擬機器以 VirtualBox 為例,步驟如下: Windows 10 系統中 需要關閉 Hyper-v , 小米筆記本中 biso 中找不到 虛擬化配置,關閉 Hyper-v 就可以了