㈠ 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架構的內核開發,或者與架構無關的內核開發,也可以做單板相關的驅動開發。
㈡ 使用buildroot編譯arm架構的linux內核,使其支持usb攝像頭,並使用qemu虛擬運行
#沒有吧ext* 和 VFS編進去吧
cd/usr/src/linux
makemenuconfig
#選擇ext4和VFS,在FileSystem里,很好找
make;makemole_install;makeinstall
㈢ 關於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 來執行。
㈣ 有沒什麼工具可以調試Linux內核的
qemu模擬器,內帶gdbserver,可以很方便的源碼調試。
kdb,kgdb之類的也是調試器,最簡單的就是printk看看
㈤ Android對Linux內核有怎樣的改動
我們知道Android是一個開源系統,但是並不徹底,而且Android從多個方面對Linux內核進行了改動與增強,盡管一度和Linux基金會在內核方面鬧得不愉快,但是最終也達成了和解。下面將對此進行詳細介紹和分析。
1 、Goldfish
Android模擬器通過運行一個Goldfish的虛擬CPU.Goldfish來運行arm926t指令集(arm926t屬於armv5構架),並且模擬了輸入/輸出,比如鍵盤輸入和LCD 輸出。這個模擬器其實是在qemu之上開發的,輸入/輸出是基於libSDL的。既然Goldfish是被模擬器運行的虛擬CPU,那麼當Android在真實的硬體設備上運行時,我們就需要去掉它,因此,只有知道Google對Goldfish做了哪些具體改動之後才能正確地去掉。據統計,Android 內核對Goldfish的改動主要涉及44個文件,具體匯總如下。
說明 本書中在被改動的文件前面加了Chg標記,在新增的文件前面加了New標記。
1Chgarch/arm/Makefile添加CONFIG_ARCH_GOLDFISH
2Newarch/arm/configs/goldfish_defconfig默認配置文件
3Newarch/arm/mach-goldfish/Kconfig為Goldfish CPU添加Kernel配置文件
4Newarch/arm/mach-goldfish/Makefile添加board-goldfish.o
5Newarch/arm/mach-goldfish/Makefile.boot為Goldfish CPU進行啟動配置
6Newarch/arm/mach-goldfish/audio.c Audio的輸入/輸出
7Newarch/arm/mach-goldfish/board-goldfish.c中斷請求、輸入/輸出等
8Newarch/arm/mach-goldfish/pdev_bus.c設備匯流排
9Newarch/arm/mach-goldfish/pm.c電源管理
10Newarch/arm/mach-goldfish/switch.cSwitch控制
11Newarch/arm/mach-goldfish/timer.c獲取和設置時間
12Chgarch/arm/mm/Kconfig添加ARCH_GOLDFISH到支持列表
13Chgdrivers/char/Makefile添加goldfish_tty
14Newdrivers/char/goldfish_tty.cTTY驅動
15Chgdrivers/input/keyboard/Kconfig為Goldfish的鍵盤事件添加配置文件
16Chgdrivers/input/keyboard/Makefile添加goldfish_events事件
17Newdrivers/input/keyboard/goldfish_events.cGoldfish鍵盤驅動
18Chgdrivers/mmc/host/Kconfig添加Kernel配置選項Goldfish MMC卡
19Chgdrivers/mmc/host/Makefile添加Goldfish MMC卡驅動
20Newdrivers/mmc/host/goldfish.c多媒體驅動
21Chgdrivers/mtd/devices/Kconfig為Goldfish的NAND flash device添加Kernel配置選項
22Chgdrivers/mtd/devices/Makefile添加goldfish_nand
23Newdrivers/mtd/devices/goldfish_nand.cNAND flash驅動
24Newdrivers/mtd/devices/goldfish_nand_reg.hNAND flash驅動
25Chgdrivers/power/Kconfig為Goldfish的battery(電池)驅動添加kernel配置選項
26Chgdrivers/power/Makefile添加Goldfish電池
27Newdrivers/power/goldfish_battery.c能源和電池狀態驅動
28Chgdrivers/rtc/Kconfig為Goldfish的rtc(時鍾)驅動添加Kernel配置選項
29Chgdrivers/rtc/Makefile添加rtc-goldfish
30Newdrivers/rtc/rtc-goldfish.c實時時鍾驅動
31Chgdrivers/video/Kconfig添加Goldfish的framebuffer
32Chgdrivers/video/Makefile添加Goldfish的framebuffer
33Newdrivers/video/goldfishfb.cframebuffer驅動
34Newinclude/asm-arm/arch-goldfish/dma.h
35Newinclude/asm-arm/arch-goldfish/entry-macro.S
36Newinclude/asm-arm/arch-goldfish/hardware.h
37Newinclude/asm-arm/arch-goldfish/io.h
38Newinclude/asm-arm/arch-goldfish/irqs.h
39Newinclude/asm-arm/arch-goldfish/memory.h
40Newinclude/asm-arm/arch-goldfish/system.h
41Newinclude/asm-arm/arch-goldfish/timer.h
42Newinclude/asm-arm/arch-goldfish/timex.h
43Newinclude/asm-arm/arch-goldfish/uncompress.h
44Newinclude/asm-arm/arch-goldfish/vmalloc.h
2 、YAFFS2
不同於PC機(文件是存儲在硬碟上的),手機使用FLASH作為存儲介質。HTC的G1使用的是NANDFLASH這種存儲目前已經相當普及了,而且種類也頗多(如SLC、MLC等),存儲密度也越來越高(已經出現幾十GB大小的NANDFLASH),價格也越來越低。
YAFFS2是專門用在FLASH上的文件系統,YAFFS2是「Yet Another Flash File System,2nd edition」的縮寫。YAFFS2為Linux內核提供了一個高效訪問NANDFLASH的介面。但是NANDFLASH的支持並不包含在標準的2.6.25內核中,所以Google在其中添加了對NANDFLASH的支持。據統計,為了支持YAFFS2,Google一共改動和增加了以下35個文件:
1Chgfs/Kconfig添加YAFFS配置
2Chg fs/Makefile添加YAFFS
以下為新增的YAFFS2:
1Newfs/yaffs2/Kconfig18Newfs/yaffs2/yaffs_mtddif2.h
2Newfs/yaffs2/Makefile19Newfs/yaffs2/yaffs_nand.c
3Newfs/yaffs2/devextras.h20Newfs/yaffs2/yaffs_nand.h
4Newfs/yaffs2/moleconfig.h21Newfs/yaffs2/yaffs_nandemul2k.h
5Newfs/yaffs2/yaffs_checkptrw.c22Newfs/yaffs2/yaffs_packed1.c
6Newfs/yaffs2/yaffs_checkprtw.h23Newfs/yaffs2/yaffs_packed1.h
7Newfs/yaffs2/yaffs_ecc.c24Newfs/yaffs2/yaffs_packed2.c
8Newfs/yaffs2/yaffs_ecc.h25Newfs/yaffs2/yaffs_packed2.h
9Newfs/yaffs2/yaffs_fs.c26Newfs/yaffs2/yaffs_qsort.c
10Newfs/yaffs2/yaffs_getblockinfo.h27Newfs/yaffs2/yaffs_qsort.h
11Newfs/yaffs2/yaffs_guts.c28Newfs/yaffs2/yaffs_compat.c
12Newfs/yaffs2/yaffs_guts.h29Newfs/yaffs2/yaffs_compat.h
13Newfs/yaffs2/yaffs_mtdif.c30Newfs/yaffs2/yaffs_validitiy.c
14Newfs/yaffs2/yaffs_mtdif.h31Newfs/yaffs2/yaffs_validity.h
15Newfs/yaffs2/yaffs_mtddif1.c32Newfs/yaffs2/yaffsinterface.h
16Newfs/yaffs2/yaffs_mtddif1.h33Newfs/yaffs2/yportenv.h
17Newfs/yaffs2/yaffs_mtddif2.c
3、 藍牙
在藍牙通信協議棧里Google修改了10個文件。這些改動修復了一些與藍牙耳機相關的明顯的Bug,以及一些與藍牙調試和訪問控制相關的函數,具體如下所示。
1Chgdrivers/bluetooth/Kconfig添加HCI UART Debug
2Chgdrivers/bluetooth/hci_II.c如果HCI UART Debug定義在Kernel配置中,則添加BT_DBG()宏
3Chgnet/bluetooth/Kconfig添加配置選項L2CAP, HCI_CORE, HCI_SOCK,以及通用介面和語音
4Chgnet/bluetooth/af_bluetooth.c如果CONFIG_ANDROID_PARANOID_NETWORK被定義,則添加藍牙功能的安全檢查
5Chgnet/bluetooth/hci_event.c修正藍牙的加密Bug和增加語音的支持
6Chgnet/bluetooth/rfcomm/core.c修正Bug
7Chgnet/bluetooth/rfcomm/sock.c修復Bug
8Chgnet/bluetooth/sco.c禁用SCO鏈接
9Chginclude/net/bluetooth/hci_core.h禁用LMP_ESCO
10Chginclude/net/bluetooth/rfcomm.h在rfcomm_dlc中添加「out」參數
4 、調度器(Scheler)
Android內核還修改了與進程調度和時鍾相關的策略。只改動了5個文件,如下:
1Chgkernel/sched.c添加NORMALIZED_SLEEPER
2Chgkernel/sched_fair.c修改內核的調度方式
3Chgkernel/softirq.c修改為CPU調度
4Chgkernel/time/tick-sched.c修改為CPU調度
5Chginclude/linux/tick.h如果CONFIG_NO_HZ被定義,則添加tick_nohz_ update_ stopped_ sched_tick()
5、 Android新增的驅動
Android在Linux的基礎上新增了許多特有的驅動,如下所示。
1)IPC Binder 一種IPC(進程間通信)機制。它的進程能夠為其他進程提供服務通過標準的Linux系統調用API。IPC Binder的概念起源於一家名為Be.Inc的公司,在Google之前就已經被Palm軟體採用了。
2)Low Memory Killer 其實內核里已經有一個類似的功能,名稱為oom killer(out of memory killer)。當內存不夠的時候,該策略會試圖結束一個進程。
3)Ashmem 匿名共享內存。該功能使得進程間能夠共享大塊的內存。比如說,系統可以使用Ashmem保存一些圖標,多個應用程序可以訪問這個共享內存來獲取這些圖標。Ashmem為內核提供了一種回收這些使用完的共享內存塊的方法,如果某個進程試圖訪問這些已經被回收的內存塊,它將會得到錯誤的返回值,以便它重新進行內存塊分配和數據初始化。
4)RAM Console and Log Device 為了調試方便,Android添加了一個功能,使調試信息可以輸入到一個內存塊中。此外,Android還添加了一個獨立的日誌模塊,這樣用戶空間的進程就能夠讀寫日誌消息,以及調試列印信息等。
5)Android Debug Bridge 嵌入式設備的調試的確比較麻煩,為了便於調試,Google設計了這個調試工具,可以簡稱為ADB,使用USB作為連接方式,ADB可以看做是連接Android設備和PC機的一套協議。
除了這些主要的功能之外,Android還增加了諸如 real-time clock、switch、timed GPIO等功能,所有這些改動和增加包含在以下28個文件之中。
1Chgdrivers/Kconfig進入配置文件
2Chgdrivers/Makefile添加switch,驅動等
3Newdrivers/android/Kconfig添加BINDER_IPC、POWER、POWER_STAT、POWER_ ALARM、LOGGER、RAM_CONSOLE、TIMED_GPIO、PARANOID_NETWORK到配置中
4Newdrivers/android/Makefile添加binder.o、power.o、alarm.o、logger.o、ram_console.o、timed_gpio
5Newdrivers/android/alarm.c系統硬體時鍾和實時時鍾管理
6Newdrivers/android/binder.cIPC機制(Binder)
7Newdrivers/android/logger.cGoogle的日誌API
8Newdrivers/android/ram_console.cRAM控制台和日誌設備方便調試 [1]
9Newdrivers/android/timed_gpio.cGoogle的GPIO定時驅動
10Newdrivers/switch/Kconfig為GPIO添加配置選項
11Newdrivers/switch/Makefile引入GPIO驅動
12Newdrivers/switch/switch_class.c
13Newdrivers/switch/switch_gpio.c
14Chgdrivers/usb/gadget/Kconfig添加ADB配置選項
15Chgdrivers/usb/gadget/Makefile編譯ADB所需的配置選項
16Newdrivers/usb/gadget/android_adb.cADB驅動
17Newinclude/linux/android_aid.h添加AIDs、INET、networking
18Newinclude/linux/android_alarm.h時鍾功能設置
19Newinclude/linux/android_timed_gpio.hGPIO結構體
20Newinclude/linux/ashmem.hAndroid共享內存
21Newinclude/linux/binder.hBinder IPC API定義
22Newinclude/linux/logger.hLogger定義
23Newinclude/linux/switch.hGPIO switch介面
24Chgmm/Makefile添加ashmem.o
25Newmm/ashmem.c內存共享實現
26Chgdrivers/misc/Kconfig添加LOW_MEMORY_KILLER配置選項
27Chgdrivers/misc/Makefile添加lowmemorykiller.c
28Newdrivers/misc/lowmemorykiller.c當內存過低時,選擇並結束進程
6 、電源管理
電源管理(Power Management)對於移動設備來說相當重要,也是最為復雜和開發難度最高的一個功能。Google添加了一個新的電源管理系統,不包含原有的apm和dpm等。這項改動主要涉及以下5個文件:
1Newinclude/linux/android_power.h定義電源管理API
2Newdrivers/android/power.c電源管理API實現
3Chgdrivers/input/evdev.c修改Android電源處理方式
4Chgfs/inotify_user.c修改Android電源處理方式
5Chgkernel/power/process.c修改Android電源處理方式
7、 雜項
除了上述改動之外,還有一些小改動,如新增的額外調試功能、鍵盤背光控制、TCP 網路管理等,共涉及36個文件,詳見參考資料。
為了調試方便,Android 添加了一個功能,使得調試信息可以輸入到一個內存塊中。此外, Android 添加了一個獨立的日誌模塊,這樣用戶空間的進程能夠讀寫日誌消息,調試列印信息等。
㈥ qemu manager 7.0 怎麼安裝linux
將OpenvSwitch安裝在Ubuntu或Debian上雖然OVS以程序包的方式出現在Ubuntu或Debian上,但我在此還是通過源代碼來構建OVS,這將擁有最新的功能特性和修正版。首先,安裝用於構建OVS的依賴項。$sudoapt-getinstallbuild-essentiallibssl-devlinux-headers-$(uname-r)通過源代碼來構建OVS,如下所示。下列步驟將構建OVS內核模塊以及OVS用戶空間工具。$wgethttp//openvswitchorg/releases/openvswitch-1.9.3.tar.gz$tarxvfvzopenvswitch-1.9.3.tar.gz$cdopenvswitch-1.9.3$./configure--with-linux=/lib/moles/`uname-r`/build$make接下來,繼續在/usr/local/share/下安裝OVS用戶空間組件:$sudomakeinstall下一步是,測試OVS內核模塊(安裝該模塊之前)。為此,先在內核中裝入內核模塊。$sudoinsmod./datapath/linux/openvswitch.ko證實OVS內核模塊已成功裝入。$一旦你證實openvswitch.ko已成功裝入到內核中,繼續安裝內核模塊,如下所示。$sudomakemoles_install配置和啟動OpenvSwitch創建一個框架式OVS配置資料庫。$sudomkdir/etc/openvswitch$sudoovsdb-toolcreate/etc/openvswitch/conf.db./vswitchd/vswitch.ovsschema啟動OVS資料庫伺服器。$sudoovsdb-server--remote=punix:/usr/local/var/run/openvswitch/db.sock-remote=db:Open_vSwitch,manager_options--pidfile--detachOVS配置資料庫初始化。$sudoovs-vsctl--no-waitinit最後,啟動OVS守護程序。$sudoovs-vswitchd--pidfile--detach將KVM安裝在Ubuntu或Debian上使用apt-get命令,安裝KVM和必要的用戶空間工具。$sudoapt-getinstallqemu-kvmlibvirt-binbridge-utilsvirt-manager將一個普通的非根用戶(如alice)添加到libvirtd群組,那樣該用戶不需要根用戶許可權,就能啟動虛擬機。$sudoadseralicelibvirtd退出,重新以該用戶身份登錄,讓群組成員的變更生效。運行下面這個命令。如果你看到空空如也的虛擬機列表,這意味著KVM已成功設置完畢。$virsh-cqemu:///systemlistIdNameState為KVM配置OpenvSwitch現在是時候創建OVS網橋啟動腳本了,那樣啟動或終止虛擬機時,OVS就能自動配置。安裝依賴項(用戶模式Linux實用工具),這些依賴項將用於處理Linux網橋模式。$sudoapt-getinstalluml-utilities創建網橋啟動腳本,如下所示。$sudovi/etc/openvswitch/ovs-ifup#!/bin/shswitch='br0'/sbin/ifconfig$10.0.0.0upovs-vsctladd-port${switch}$1$sudovi/etc/openvswitch/ovs-ifdown#!/bin/shswitch='br0'/sbin/ifconfig$10.0.0.0downovs-vsctldel-port${switch}$1$sudochmod+x/etc/openvswitch/ovs-if*然後,創建一個默認的網橋br0,並添加一個物理網路介面,虛擬機將通過這個介面與外部網路進行聯系。在該教程中,我假設這類網路介面是eth5。$sudoovs-vsctladd-brbr0$sudoovs-vsctladd-portbr0eth5藉助KVM啟動虛擬機現在你可以准備啟動訪客虛擬機了。我假設,你已經准備好了一個訪客虛擬機映像(比如ubuntu-client.img)。使用下面這個命令,啟動訪客虛擬機。$sudokvm-m1024-netnic,macaddr=11:11:11:EE:EE:EE-nettap,script=/etc/openvswitch/ovs-ifup,downscript=/etc/openvswitch/ovs-ifdown-vnc:1-drivefile=/home/dev/images/ubuntu-client.img,boot=on這會創建並啟動一個訪客虛擬機;一旦訪客虛擬機啟動,其虛擬介面就自動添加到OVS網橋br0。你可以使用ovs-vsctl這個命令,核實OVS的狀態這是已啟動的虛擬機的遠程桌面會話。
㈦ qemu能模擬全部x86指令嗎
qemu能模擬全部x86指令。也可以模擬各種ARM板子還可以模擬各種外設,百問網對QEMU做了很多改進支持更多硬體支持更多GUI現實,讓用戶可以更有真實感地使用QEMU來模擬IMX6ULL板子。
qemu模擬全部x86指令的原理
首先Qemu本身並不是KVM的一部分,而是一整套完整的虛擬化解決方案,它是純軟體實現的,包括處理器虛擬化內存虛擬化以及各種虛擬設備的模擬,但因為是純軟體模擬,所以性能相對比較低,而廣義的KVM實際上包含兩部分。
一部分是基於LINUX內核支持的KVM內核模塊,另一部分就是經過簡化和修改Qemu,KVM內核模塊模擬處理器和內存以支持虛擬機的運行,Qemu主要處理I或O以及為用戶提供一個用戶空間工具來進行虛擬機的管理,兩者相互結合相輔相成,構成了一個完整的虛擬化平台。
㈧ KVM、QEMU和KQemu有什麼區別
1、KVM是一套虛擬機管理系統,包括內核虛擬構架和處理器相關模塊,其借用了 QEMU其它一些組件,KVM的非內核部分是由QEMU實現的;載入了模塊後,才能進一步通過其他工具創建虛擬機。
2、QEMU是另外的一套虛擬機管理系統,Kqemu是QEMU的加速器,可以認為是QEMU的一個插件;QEMU可以虛擬出不同架構的虛擬機,如在x86平台上可以虛擬出power機器。
3、KVM負責cpu虛擬化+內存虛擬化,實現了cpu和內存的虛擬化,但KVM不能模擬其他設備。QEMU是模擬IO設備(網卡,磁碟),KVM加上QEMU之後就能實現真正意義上伺服器虛擬化。因為用到了上面兩個東西,所以一般都稱之為QEMU-KVM。
(8)qemulinux內核擴展閱讀:
1、KVM 技術已經從最初的基礎SOHO辦公型,發展成為企業 IT 基礎機房設施管理系統。可以從kvm 客戶端管理軟體輕松的直接訪問位於多個遠程位置的伺服器和設備。
2、QEMU在GNU/Linux平台上使用廣泛。具有高速度及跨平台的特性,通過KQEMU這個閉源的加速器,QEMU能模擬至接近真實電腦的速度。
3、KQEMU現可運行在基於x86或x86_64的Linux2.4或Linux 2.6主機上。
㈨ 手機Linux內核是什麼意思
1 怎麼說呢....linux內核就像人的心臟,靈魂,指揮中心。
內核是一個操作系統的核心,它負責管理系統的進程,內存,設備驅動程序,文件和網路系統,決定著系統的性能和穩定性。內核以獨占的方式執行最底層任務,保證系統正常運行。協調多個並發進程,管理進程使用的內存,使它們相互之間不產生沖突,滿足進程訪問磁碟的請求等等.
2不會的,因為cpu的工作頻率所限,
3說通俗一點就是一個簡單的「1+1=」的公式,「掌上電腦+手機=智能手機」。從廣義上說,智能手機除了具備手機的通話功能外,還具備了PDA的大部分功能,特別是個人信息管理以及基於無線數據通信的瀏覽器和電子郵件功能。智能手機為用戶提供了足夠的屏幕尺寸和帶寬,既方便隨身攜帶,又為軟體運行和內容服務提供了廣闊的舞台,很多增值業務可以就此展開,如:股票、新聞、天氣、交通、商品、應用程序下載、音樂圖片下載等等。融合3C(Computer、Communication、Comsumer)的智能手機必將成為未來手機發展的新方向。
比如nokias60的手機系統。可以通過軟體進行擴展。
㈩ linux 內核 qemu 相關
缺少了設備樹文件(.dtb)和文件系統。
另外,「--append」選項用了兩個短橫杠。