導航:首頁 > 操作系統 > linuxqemu調試內核

linuxqemu調試內核

發布時間:2023-09-05 22:38:45

⑴ 如何在linux上使用qemu執行鏡像文件

1. 編譯kernel
mkdir -p ~/misc/qemu
cd ~/misc/qemu
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.3.7.tar.bz2
tar xvfj linux-3.3.7.tar.bz2
cd linux-3.3.7
make defconfig
make
cp arch/x86/boot/bzImage ..
2. 製作根文件系統
cd ~/misc/qemu
dd if=/dev/zero of=rootfs.img bs=1M count=10
mkfs.ext3 rootfs.img
mkdir rootfs
sudo mount -t ext3 -o loop rootfs.img rootfs
cd rootfs
mkdir dev proc sys
3. 編譯busybox
cd ~/misc/qemu
wget http://busybox.net/downloads/busybox-1.20.1.tar.bz2
tar xvfj busybox-1.20.1.tar.bz2
cd busybox-1.20.1
make defconfig
make menuconfig
(將busybox編譯為靜態連接方式)
- Busybox Settings
- Build options
- Build Busybox as a static binary
make
make install CONFIG_PREFIX=~/misc/qemu/rootfs
cd ~/misc/qemu
sudo umount rootfs
4. 運行
圖形界面下:
qemu -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/bin/ash"
命令行界面:
qemu -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/bin/ash" -curses
通過vnc運行:
qemu -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/linuxrc" -curses -vnc 192.168.1.237:1
上面192.168.1.237為本機的一個IP地址。在另外一台機器上運行vnc client,填入192.168.1.237:1,即可通過vnc連接到linux系統
改進1:mount /proc和/sys,以及創建/dev/下的設備節點

啟動後,/dev下無設備文件,而且/proc, /sys都沒有mount上,導致有些命令無法運行(如top)。為了解決這個問題,可以修改啟動腳本/linuxrc為:
#!/bin/ash

/bin/mount -t proc proc /proc
/bin/mount -t sysfs sysfs /sys
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

/bin/ash

然後chmod a+x /linuxrc,umount後再執行
qemu -kernel bzImage -hda rootfs.img -append "root=/dev/sda init=/linuxrc"

有關mdev的介紹和使用可以參考:
http://hi..com/kebey2004/blog/item/3692f6079b8e9dda7a894721.html

改進2:編一個最小kernel
make allnoconfig
make menuconfig
選擇:
- Executable file formats / Emulations
- 選擇Kernel support for ELF binaries
- Device Drivers
- 選擇ATA/ATAPI/MFM/RLL support
- 選擇generic/default IDE chipset support
- File systems
- 選擇Ext3 journalling file system support
make
qemu -kernel linux-3.3.7/arch/x86/boot/bzImage -hda rootfs.img -append "root=/dev/hda init=/linuxrc" -curses

⑵ 關於android和x86的幾點疑問。 android基因linux內核,系統除了內核還有其他什麼

android 除了基於 Linux 內核,他的上層運行環境和相關函數庫,命令程序都是自己的。
其實 android 就是一個基於 Linux 內核的 JAVA 虛擬機環境。
實際 Android 程序都是基於 JAVA 虛擬機跑的解釋型語言程序。

但解釋型語言程序性能肯定不如本地二進製程序。所以 Android 還有一種 NDK 程序。
也就是 Android 裡面有部分本地二進製程序的內容。這樣本地程序方式運行,效率可以最高而且可以根據 CPU 功能做優化(比如 neon )。

指令集不同,但他的 JAVA 虛擬機是解釋型語言,基於 JAVA 語言的程序是可以無差別運行的。只要能保證 Android 上面的 JAVA 虛擬機可以在 x86 上面成功運行就行了。

但 Android 有個另外的問題,就是 JAVA 虛擬機是針對 ARM 做性能優化的,在 X86 上面,這種性能優化都沒了,需要另外在 x86 上面重新優化。但聽說 Android 的 JAVA 虛擬機的語言裡面,也有針對 ARM 硬體進行的修改設計,所以這種針對 ARM 性能優化的 JAVA 程序,在 X86 的系統上面性能也有損失。

所以 Android 出來很久後,在 x86 上面的運行效率都一直不怎麼樣。

而且現在還有 NDK 程序的出現, ARM 的二進製程序在 x86 上面是不能運行的。這些程序都不能運行。
不過 x86 有個優勢就是自己的性能很強,而且模擬器技術現在也很強了。在 x86 上面,可以藉助虛擬機(qemu 的 user mode 就值得看看)來運行 ARM 的二進製程序。
不過虛擬機其實還是有性能損失的。

所以未來,Android 的跨 CPU 架構依然還是問題。純 JAVA 程序好說,用了 NDK 的程序就是問題了。

不過 llvm 這個編譯器又給了另外一條路,既可以虛擬機方式運行,又可以編譯成本地程序而成為二進製程序來優化性能運行。或許 Android 會考慮使用這種方法或者類似的讓 NDK 程序可以跨 CPU 實現。代價是 Android 要自帶一個編譯器,體積也不小的。

MAC OS X 還有一種方法。在 MAC 放棄 IBM 的 Power CPU 而改用 Intel 的 CPU 後,他的程序都是裡面附帶兩套二進製程序,老的 G4 CPU 的機器,就用程序裡面的 power 指令集的程序代碼。新的 Intel CPU 的機器,就自動用裡面的 x86 指令來運行程序。從而實現完美的雙指令集運行。不過代價是這樣的程序都是兩套指令集的內容,體積翻倍。

目前來說,似乎用了 NDK 的程序還都不能用的。不排除現在某些 x86 的手機,使用了虛擬機技術來實現運行 NDK 程序。現在 Linux 下面的 qemu 的 usermode 配合內核的 binfmt_misc 功能,可以讓系統自動識別某個架構的程序,去調用 qemu 來執行。

⑶ qemu怎樣為選擇arm linux內核鏡像選擇運行arm平台

下載Linux內核

下載內核有兩種方法,一種是用git直接下載內核代碼樹,方便後面的內核開發。另一種是直接到內核社區下載對應版本的源碼包。我採用第一種方法,但後面發現主線上3.18版本和後面版本的代碼,使用這種搭建方法運行不起來。目前未查明問題的根因。如果讀者想快速搭建成功,建議選用3.16版本的內核進行搭建。

安裝arm的交叉編譯工具鏈

想必做嵌入式開發的朋友,對交叉編譯工具鏈不陌生。如果你訂制一個交叉編譯工具鏈,建議你使用crosstool-ng開源軟體來構建。但在這里建議直接安裝arm的交叉編譯工具鏈:

sudoapt-getinstallgcc-arm-linux-gnueabi

編譯Linux內核

生成vexpress開發板子的config文件:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=armvexpress_defconfig

編譯:

makeCROSS_COMPILE=arm-linux-gnueabi-ARCH=arm

生成的內核鐿像位於arch/arm/boot/zImage,後續qemu啟動時需要使用該鏡像。

下載和安裝qemu模擬器

其實Ubuntu12.04有qemu的安裝包,但由於版本較低,對vexpress開發板支持不友好,建議下載高版本的qemu:

wget

配置qemu前,需要安裝幾個軟體包:

sudoapt-getinstallzlib1g-dev

sudoapt-getinstalllibglib2.0-0

sudoapt-getinstalllibglib2.0-dev

配置qemu,支持模擬arm架構下的所有單板:

./configure--target-list=arm-softmmu--audio-drv-list=

編譯和安裝:

make

makeinstall

測試qemu和內核能否運行成功

qemu已經安裝好了,內核也編譯成功了,到這里最好是測試一下,編譯出來的內核是否OK,或者qemu對vexpress單板支持是否夠友好。

運行命令很簡單:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage-nographic-append"console=ttyAMA0"

如果看到內核啟動過程中的列印,說明前的搭建是成功的。

這里簡單介紹下qemu命令的參數:

-Mvexpress-a9模擬vexpress-a9單板,你可以使用-M?參數來獲取該qemu版本支持的所有單板

-m512M單板運行物理內存512M

-kernel/home/ivan/kernel_git/linux/arch/arm/boot/zImage告訴qemu單板運行內核鏡像路徑

-nographic不使用圖形化界面,只使用串口

-append"console=ttyAMA0"內核啟動參數,這里告訴內核vexpress單板運行,串口設備是哪個tty。

注意:

我每次搭建,都忘了內核啟動參數中的console=參數應該填上哪個tty,因為不同單板串口驅動類型不盡相同,創建的tty設備名當然也是不相同的。那vexpress單板的tty設備名是哪個呢?其實這個值可以從生成的.config文件CONFIG_CONSOLE宏找到。

如果搭建其它單板,需要注意內核啟動參數的console=參數值,同樣地,可從生成的.config文件中找到。

製作根文件系統

到這里是否大功告成了呢?其實在上面的測試中,你會發現內核報panic,因為內核找不到根文件系統,無法啟init進程。

根文件系統要考慮兩個方面:

1.根文件系統的內容

如果你看過《LinuxFromScratch》,相信你會對這一步產生恐懼感,但如果一直從事嵌入式開發,就可以放下心來。根文件系統就是簡單得不能再簡單的幾個命令集和態動態而已。為什麼LinuxFromScratch會有那麼復雜,是因為它要製作出一個Linux發生版。但在嵌入式領域,幾乎所有的東西,都是mini版本,根文件系統也不例外。

本文制本的根文件系統=busybox(包含基礎的Linux命令)+運行庫+幾個字元設備

2.根文件系統放在哪裡

其實依賴於每個開發板支持的存儲設備,可以放到NorFlash上,也可以放到SD卡,甚至外部磁碟上。最關鍵的一點是你要清楚知道開發板有什麼存儲設備。

本文直接使用SD卡做為存儲空間,文件格式為ext3格式

下載、編譯和安裝busybox

wget

makedefconfig

makeCROSS_COMPILE=arm-linux-gnueabi-

makeinstallCROSS_COMPILE=arm-linux-gnueabi-

安裝完成後,會在busybox目錄下生成_install目錄,該目錄下的程序就是單板運行所需要的命令。

形成根目錄結構

先在Ubuntu主機環境下,形成目錄結構,裡面存放的文件和目錄與單板上運行所需要的目錄結構完全一樣,然後再打包成鏡像(在開發板看來就是SD卡),這個臨時的目錄結構稱為根目錄

1.創建rootfs目錄(根目錄),根文件系統內的文件全部放到這里

sudomkdirrootfs

2.拷貝busybox命令到根目錄下

sudocpbusybox-1.20.2/_install/*-rrootfs/

3.從工具鏈中拷貝運行庫到lib目錄下

sudocp-P/usr/arm-linux-gnueabi/lib/*rootfs/lib/

4.創建4個tty端終設備

sudomknodrootfs/dev/tty1c41

sudomknodrootfs/dev/tty2c42

sudomknodrootfs/dev/tty3c43

sudomknodrootfs/dev/tty4c44

製作根文件系統鏡像

1.生成32M大小的鏡像

ddif=/dev/zeroof=a9rootfs.ext3bs=1Mcount=32

2.格式化成ext3文件系統

mkfs.ext3a9rootfs.ext3

3.將文件拷貝到鏡像中

sudomkdirtmpfs

sudomount-text3a9rootfs.ext3tmpfs/-oloop

cp-rrootfs/*tmpfs/

sudoumounttmpfs

系統啟動運行

完成上述所有步驟之後,就可以啟動qemu來模擬vexpress開發板了,命令參數如下:

qemu-system-arm-Mvexpress-a9-m512M-kernel/home/ivan/qemu/linux/arch/arm/boot/zImage-nographic-append"root=/dev/mmcblk0console=ttyAMA0"-sda9rootfs.ext3

從內核啟動列印,到命令行提示符出現,激動人心的時刻出現了……

寫在後面的話

通過上面的步驟,搭建出來一個最小的qemu+arm開發環境,你可以上面的基礎上修改內核,或者增加一些測試程序在單板上運行,甚至使用單板的flash設備。

在此,你可以做純arm架構的內核開發,或者與架構無關的內核開發,也可以做單板相關的驅動開發。

⑷ linux 內核 qemu 相關

缺少了設備樹文件(.dtb)和文件系統。
另外,「--append」選項用了兩個短橫杠。

⑸ 如何修改linux內核源碼並調試

內核源碼調試的一款工具QEMU. 仔細研究一下,慢慢學吧。

⑹ linux打開虛擬網路編輯器

linux系統模擬器網路配置步驟
m0_73943160
碼齡88天
1、打開linux虛擬器,在虛擬機左上角找到虛擬機
2、點擊虛擬機,在下方找到設置後點開3、在點開的設置,在設備中找到網路適配器,適配網路選擇自定義,並在自定義里選擇VMnet0,選擇後點擊確定。
4、在編輯里打開虛擬網路編輯器。

5、打開後選擇右下角的 更改設置。
6、打開後選擇VMnet0,後選擇橋接模式,確定。
7、點擊關機鍵右邊的小箭頭,打開後選擇有線連接,選擇有線設置。
8、打開後點擊網路進入,點擊有線連接下的設置。
9、在window系統下按下win+r,打開運行框,輸入cmd,打開命令框
10、在命令框輸入ipconfig按下enter,,將子網掩碼和默認網關記下。
11、再進入虛擬機,在打開的有限連接下的設置內選擇IPV4,手動,並將win下的子網掩碼和網關寫在地址欄的相應位置,地址欄的地址寫上網關的前三個和一個隨機的不大於255的數。且隨機值不能和win下的地址一樣。
12、地址設置好後將自動關閉。
Linux連接終端模擬器,為Linux運維推薦9款實用的Linux終端模擬器
Linux終端模擬器是所有人(包括新手或高級用戶)的最佳實用工具之一。它允許您使用Linux系統shell並與之交互。終端模擬器使您能夠訪問內核,並釋放系統的真正力量。最好的Linux終端模擬器盡管大多數用戶對Linux發行版的默認終端模擬器感到滿意,...
linux模擬器 qemu,Qemu虛擬機模擬器_weixin_39777875的博客
QEMU是一個純軟體實現的通用模擬器和虛擬機,它有三種模式,幾乎可以模擬任何硬體設備,Full-system emulation:可在任何支持的硬體架構上運行任何操作系統,User-mode emulation:運行另一個Linux/BSD程序,Virtualization:接近本機性能運行 KVM和X...
最新發布 linux伺服器更改網路配置
linux伺服器更改網路配置,是為讓它的ip地址不進行變化,方面我們的後繼操作。我們這里使用的是vmware+centos7來進行演示。
繼續訪問

Linux系統 虛擬機 網路設置
不同的虛擬機之間 1、虛擬機菜單欄處,「編輯–>虛擬網路編輯器」 2、需要配置的是vmNET8,點「更改設置----->確定」 3、先選中vmNET8,然後將子網IP 修改成 192.168.2.0,打開DHCP設置 在DHCP設置中可以設置起始和結尾的IP地址,按照需求設置,每一個地址可以對應一台虛擬機。 打開NAT設置,設置網關192.168.2.1「」,通過同一個網關可以連...
繼續訪問
linux模擬器 qemu,Zynq Linux系統軟體模擬器Xilinx/QEMU_遺忘在角落的...
Xilinx基於QEMU系統模擬器Xilinx/QEMU可用於模擬運行Zynq Linux的運行與調試。其使用可以是: (1)利用GitHub上的Xilinx/QEMU源代碼進行編譯得到QEMU軟體模擬器 (2)利用Xilinx提供的PetaLinux工具包,PetaLinux工具包已經包括了QEMU emulator. ...
linux終端模擬器有哪些,Linux上有哪些好的終端模擬器_谷臻故事工場的博...
一個好的終端模擬器是一個選擇Linux而不是Windows或Mac的充分理由,任何Linux的資深用戶都會同意這點。通過使用shell,用戶可以完成在圖形環境下不可能或者太重復的任務。但是終端模擬器的選擇是非常重要的,因為它會成為你使用最多的程序。我...
Linux網路
在這里總結幾個有關網路配置的實用方法 1、查看虛擬網路編輯器 ①查看虛擬網路 ②修改IP地址 ③查看網關 ④查看windows中的網路配置 使用 ipconfig 指令 ⑤查看Linux中的網路配置 使用 ifconfig 指令 最後使用 ping + ip地址 查看主機之間的鏈接 2、Linux網路環境的配置 ①自動獲取 實現開機自動連接網路 缺點:每次自動獲取的IP地址可能不...
繼續訪問
Linux基礎入門到精通之虛擬機網路設置說明
這篇主要總結一下虛擬機網路配置中的區別。我們打開VMware,選中虛擬機,點擊網路適配器。在彈出的頁面當中,可以看到紅框中有三種網路鏈接方式。下面開始介紹這三種模式的區別。
繼續訪問

Linux 在線模擬器_jettle wang的博客_linux在線模擬器
最近在學習Linux的一些命令的使用,但是很久之前裝的Linux虛擬機被刪掉了,又不想為了練習幾個命令折騰一遍虛擬機。所以,就嘗試地搜了一下,看看有沒有在線的Linux模擬器可以使用,只要可以練習一下命令的使用即可。在google中用英文關鍵詞一...
linux模擬器使用教程,Ubuntu多機種游戲模擬器Mednafen教程_simmmm...
Linux強大的游戲模擬器,模擬的效果以及CPU的佔用都非常低,主要是用來玩GBA和FC的游戲,玩GBA游戲比Linux版VBA強的不是一點半點,Linux版VBA可以說就是一個半成品,不說功能方面,居然巨佔CPU,而且占資源不說了,還不是60幀的完美平滑模擬...
Linux中虛擬網路配置詳解(圖示說明)
目錄   1、知識引入   2、橋接模式(vmnet0給橋接模式提供網路支持)   3、NAT模式(vmnet8給NAT模式提供網路支持)   4、僅主機模式(vmnet1給僅主機模式模式提供網路支持的)   5、NAT模式的網路配置步驟 1、知識引入 虛擬機連接宿主機(物理機)、連接Internet,總共有以下3中配置方式: (a) 橋接模式; (b) NAT模式; (c) 僅主機模式 ...
繼續訪問

Linux(5)- 網路配置
Linux 學習-網路配置 一、Linux 網路配置原理圖(含虛擬機)二、查看網路 IP 和網關2.1 查看虛擬網路編輯器2.2 修改 ip 地址(修改虛擬網路的 ip)2.3 查看網關2.4 查看 windows 環境的中 VMnet8 網路配置 (ipconfig 指令)三、ping 測試主機之間網路連通3.1基本語法3.2 應用實例四、linux 網路環境配置4.1第一種方法(自動獲取)4.2第二種方法(指定固定的 ip) 一、Linux 網路配置原理圖(含虛擬機) 目前我們的網路配..
繼續訪問
Linux下最強安卓模擬器,流暢又絲滑(附詳細安裝教程)
第二個月,釘釘終於有能看直播的Linux安裝包了,但是QQ和微信都都沒有Linux版本(別跟我提反人類的QQLinux版!),就造成了很多麻煩,虛擬機安裝安卓還是費電,從那時起,我就在尋找一個Linux的安卓模擬器,今天終於找到了,寫個博客記錄一下...
Linux下最強安卓模擬器,流暢又絲滑(附詳細安裝教程)
Linux下最強安卓模擬器!各項體驗堪稱完美,安裝簡便,不會卡頓!
繼續訪問

虛擬機Linux伺服器網路設置
虛擬機Linux伺服器網路設置
繼續訪問
熱門推薦 設置 VMware 虛擬網路編輯器
1、點擊虛擬網路編輯器 VMware -> 編輯 -> 虛擬網路編輯器 2、設置 VMnet 8 網段 3、設置網關 4、點擊虛擬機設置 5、虛擬機網路設置為NAT模式
繼續訪問

Linux虛擬機網路配置
一、打開vmware點擊編輯,選擇虛擬網路編輯器 二、在電腦的設置中進入更改適配器選項選擇VMware Network Adapter VMnet8,點擊設置,網關必須和第一步的相同,ip地址前三位和網關相同,最後一位在1到255之間不能和網關相同 三、打開虛擬機,對虛擬機進行設置 進入此目錄 將框類的添加到文件中,最後重啟網路服務:service network restart 若能ping通網路即可 ...
繼續訪問
Linux虛擬機連接網路,CentOS的聯網技巧
Linux虛擬機連接網路 大前提:電腦聯網為WIFI 小提示:電腦有線網的虛擬機聯網方式 1.打開Linux虛擬機,在菜單欄虛擬機->虛擬機設置->網路適配器,設置網路連接,NAT 模式 2.打開宿主機的設置->狀態->更改適配器選項 3.按照以下要求更改 4.注意VMnet8的修改 5.在Linux虛擬機中,菜單欄編輯->虛擬網路編輯器 6.進入虛擬機修改(首先打開控制台) 7.改好ens32或ens33文件後,重啟用dhclient配置連
繼續訪問

⑺ 使用buildroot編譯arm架構的linux內核,使其支持usb攝像頭,並使用qemu虛擬運行

#沒有吧ext* 和 VFS編進去吧

cd/usr/src/linux
makemenuconfig
#選擇ext4和VFS,在FileSystem里,很好找
make;makemole_install;makeinstall
閱讀全文

與linuxqemu調試內核相關的資料

熱點內容
php取字元串中間 瀏覽:427
程序員經常用工具 瀏覽:835
降服主力指標源碼主圖 瀏覽:500
python實用庫 瀏覽:691
電腦默認7個文件夾 瀏覽:11
新唐單片機安裝c51後編譯錯誤 瀏覽:530
紅包源碼引流神器 瀏覽:235
學生初中畢業撕書解壓 瀏覽:747
命令方塊刷銅點教學 瀏覽:690
php郵件訂閱系統 瀏覽:996
柱樑底加密箍間距 瀏覽:30
pythonjavascript對比 瀏覽:740
什麼動漫app是大陸字幕 瀏覽:286
android查看activity棧 瀏覽:918
x86固件編譯 瀏覽:166
安卓下什麼可以看微博動圖 瀏覽:412
永輝生活app注冊有什麼優惠嗎 瀏覽:411
行偏移演算法 瀏覽:241
什麼app也能讓wifi增強 瀏覽:178
雙分錄核演算法反映什麼 瀏覽:211