下載linuxkernel
① 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架構的內核開發,或者與架構無關的內核開發,也可以做單板相關的驅動開發。
② RockPI 4A Linux內核下載與編譯
本文介紹RockPI 4A單板Debian系統Linux內核的下載和編譯方法,為後續介紹RockPI 4A單板Linux內核調試進行拋磚引玉。
一笑神腔、代碼下載
Rockpi 4A Debian版本SDK代碼下載方法:
代碼下載完成後,顯示如下瞎冊:
kernel 目錄下保存Linux內核代碼。
build 目錄下保存配置和編譯腳本。
如果RockPI 4A代碼下載失敗,提示如下:
解決方法:將下載鏈接中 https 替換成 git 。
二、內核編譯
使用代碼里的編譯腳本,編譯腳本名稱: mk-kernel.sh ,位置如下:
註:在腳本 mk-kernel.sh 中有一段代碼: source $LOCALPATH/build/board_configs.sh $BOARD ,使用腳本編譯時,必須在 build 文件夾同一級目錄。
RockPI 4A Linux內核編譯方法碰衫如下(使用...省略部分編譯輸出):
其中: rockpi4a 對應RockPI 4A單板,如果使用其它單板,需要設置不同內容。單板類型可參考 build/board_configs.sh 腳本中 case ${BOARD} in 的選項。例:
編譯出來的映像路徑:
③ Linux系統下載(超全鏡像整理下載)
Linux系統鏡像下載的超全整理如下:
一、主流Linux發行版官方鏡像站
- Ubuntu:
- 官方鏡像站
- 另一官方鏡像站
- CentOS:
- 官方鏡像狀態查詢
- Debian:
- 全球鏡像站
- 鏡像存檔
- Fedora:
- 官方鏡像站
- BitTorrent下載
- Linux Mint:
- 官方鏡像站
- Kali Linux:
- 官方下載頁面
二、企業機構及國內開源鏡像站
- 網易開源鏡像站:
- 鏡像站鏈接
- 阿里雲開源鏡像:
- 鏡像站鏈接
- 搜狐開源鏡像站:
- 鏡像站鏈接
- 首都在線科技股份有限公司:
- 鏡像站鏈接
- 中國科學技術大學鏡像站:
- IPv4 + IPv6鏡像
- 清華大學鏡像站:
- 鏡像站鏈接
三、國內高校開源鏡像站
- 電子科技大學:
- Ubuntu鏡像
- 上海交通大學:
- IPv4鏡像
- IPv6鏡像
- 北京交通大學:
- IPv4鏡像
- 廈門大學:
- 鏡像站鏈接
- 中山大學:
- 鏡像站鏈接
- 浙江大學:
- 鏡像站鏈接
四、國外開源鏡像站
- 卡內基梅隆大學(CMU):
- 鏡像站鏈接
- 麻省理工學院(MIT):
- 鏡像站鏈接
- 哥倫比亞大學:
- 鏡像站鏈接
- 俄勒岡州立大學:
- 鏡像站鏈接
五、特定Linux發行版或組件鏡像站
- Kernel鏡像站:
- 鏡像站鏈接
- RedHat Enterprise Linux(RHEL)鏡像站:
- 鏡像站鏈接
請注意,以上鏈接可能會隨時間發生變化,建議訪問時核實鏈接的有效性。在下載Linux系統鏡像時,請確保從官方或可信的鏡像站下載,以避免安全風險。
④ centos7 離線升級/在線升級操作系統內核
CentOS作為一款Linux發行版,它基於開放源代碼,受到許多伺服器使用青睞。在某些情況下,系統內核版本的限制可能會成為問題,如某些軟體運行需求更高的內核版本。本文將詳細介紹如何實現CentOS7的離線升級和在線升級系統內核。
一、系統環境與內核下載網址
為了確保升級過程順利,首先需要確保你的CentOS系統環境完整。內核的下載可通過兩個主要渠道:阿里雲開源軟體鏡像站(mirrors.aliyun.com/elre...)和elrepo鏡像站(elrepo.org/linux/kernel...)。
二、離線升級系統內核
離線升級需要進行一系列步驟,確保過程的安全性和穩定性。首先,查看當前系統版本和內核版本,確保信息准確。接著,通過命令更新yum源倉庫。啟用ELRepo倉庫,為內核升級提供必要的支持。導入ELRepo倉庫的公共密鑰並安裝其yum源。下載指定版本的內核包,此步驟需要先確保導入公共密鑰和安裝yum源,否則無法下載。安裝內核包後,需通過修改GRUB_DEFAULT為0來設置默認啟動內核,並生成新的grub配置文件以完成升級。
三、在線升級系統內核
在線升級更為便捷,首先同樣啟用ELRepo倉庫並安裝yum源。查看可用的內核版本,根據需求選擇最新或長期支持版本進行安裝。安裝新內核後,同樣需要調整GRUB_DEFAULT為0,並生成新的grub配置文件。重啟系統後,通過查看當前內核版本確認升級成功。
本文旨在提供一個完整的升級流程,以確保CentOS7系統的內核可以滿足所需應用的需求。通過離線或在線升級系統內核,用戶可根據實際需求選擇最合適的升級方式,確保系統穩定運行。
(來源:cnblogs.com/renshengdez...)
⑤ 【general】linux kernel編譯與安裝
要編譯與安裝Linux內核,首先進行環境准備,確保已安裝適當的開發工具和環境。接著,下載Linux內核源代碼,推薦使用官方或可靠鏡像源。
准備內核代碼版本5.14,可從Linux Kernel Archives獲取。解壓並復制當前內核配置文件,利用menuconfig工具進行調整。
安裝編譯內核所需的依賴包,確保系統具備執行構建所需的軟體。解壓後,根據需要調整配置選項,如編譯目標、模塊支持等。
開始編譯內核,使用make命令。為了提高編譯效率,可添加「-j N」參數,其中N代表使用的並行進程數,評估系統在多處理器環境中的多任務並行執行性能。確保使用相同的內核代碼、配置和命令進行編譯,以便對比性能。
完成編譯後,安裝內核模塊和內核本身。通常,系統會自動執行此過程。
參考資源:如何編譯安裝Linux內核 - LightningStar - 博客園,如何編譯安裝Linux內核-騰訊雲開發者社區-騰訊雲。
