嵌入式Linux內核,文件系統的製作

2022-01-01 嵌入式Linux中文站

嵌入式linux QQ交流群:175159209,歡迎愛好者加入交流技術問題!

嵌入式Linux系統由 Linux內核 + 根文件系統 兩部分組成

一個完整的嵌入式Linux系統組成:bootloader + boot parameters + kernel + root filesystem

嵌入式Linux系統使用的是Linux內核,製作方法基本和X86平臺的Linux內核一致,下面介紹製作運行於micro2440開發板的內核和根文件系統。

 

嵌入式Linux內核的製作:

1,到www.kernel.org下載原始碼,解壓,進入內核原始碼目錄。

 

2,清除原有的配置與中間文件

x86: make distclean

arm: make distclean

 

3,配置內核:

x86: make menuconfig ARCH=i386

arm: make menuconfig ARCH=arm //配置完畢在內核原始碼目錄生成.config文件,建議參考arch/arm/configs/s3c2410_defconfig .config、

 

4,編譯內核:

x86: make bzImage

arm: make uImage ARCH=arm CROSS_COMPILE=arm-linux- //編譯成功在arch/arm/boot/目錄下產生zImage內核映像

 

5,使用tftp下載到開發板運行即可

 

 

 

根文件系統的製作:

 

根文件系統是Linux啟動時使用的第一個文件系統,就像PC機上的文件目錄

 

6,創建根文件系統的目錄(目錄名隨便取)

mkdir rootfs

cd rootfs

mkdir bin dev etc lib proc sbin sys usr mnt tmp var

mkdir usr/bin usr/lib usr/sbin lib/modules

 

7,創建設備文件

cd dev/

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

 

8,安裝/etc(隨便拷貝點/etc/目錄下的文件到該etc目錄下)

 

9,編譯內核模塊

cd Linux 2.6.29 //進入Linux內核目錄

make modules ARCH=arm CORSS_COMPILE=arm-linux-

 

10,安裝內核模塊(把編譯好的內核模塊拷貝到創建的這個文件系統)

make modules_install ARCH=arm INSTALL_MOD_PATH=/***/rootfs //生成rootfs/lib/modules/2.6.29.4-FriendlyARM

 

 

busybox的配置-編譯-安裝:

 

11,配置busybox(Linux下面是用的一整套的命令和工具的集合)

解壓busybox,進入busybox根目錄

make menuconfig

 

選擇需要使用的工具

 

進入 busybox settings->build option->

選中 「build busybox as a static binary」,靜態連結

更改Cross Compiler prefix 為(arm-linux-)

 

進入installation option->

選中「do not use /usr」,可以避免busybox被安裝到宿主系統的/usr目錄下,破壞宿主系統

更改busybox installation prefix位置為(/xxx/rootfs)

 

12,編譯,安裝busybox(把相關的命令/文件拷貝到這個正在創建的文件系統)

在busybox根目錄下

make ARCH=arm CROSS_COMPILE=arm-linux- /*等.等*/

make install //執行的是busybox這個可執行文件/*rootfs/bin/目錄下多了好多文件*/

 

13,至此根文件系統製作完成

 

 

 

由根文件系統製作ramdisk

 

 

14,需要一個軟體genext2fs,為製作ramdisk的工具,

下載地址http://download.chinaunix.net/download.php?id=6874&ResourceID=3625

安裝方法:

解壓genext2fs

#cd genext2fs

#./configure

#make

#make install

 

15,利用genext2fs製作ramdisk

#genext2fs -b 8192 -d /***/rootfs ramdisk  //根文件系統的所有內容變成了ramdisk=8192=8MB

gzip -9 -f ramdisk //對ramdisk進行壓縮,將此壓縮文件放到開發板即 可作為根文件系統啟動起來

開發板可運行的文件系統:

NFS文件系統:文件系統在PC機上,開放給開發板運行

ramdisk文件系統:下載到開發板的內存中運行

 

Linux支持的文件系統:

ext2,ext3,vfat,jffs,romfs,nfs,這些不同的文件系統由虛擬文件系統VFS統一管理

 

嵌入式Linux支持的文件系統:

jffs2,yaffs,cramfs,ramdisk,ramfs

jffs2:用於NorFlash上,可讀寫,支持數據壓縮

yaffs2:用於NandFlash上,不支持數據壓縮,可讀寫

cramfs:既可以用於NorFlash上,又可以用於NandFlash上,只讀,支持數據壓縮

ramdisk:用一部分固定大小的內存作為分區來使用,並非是一個實際的文件系統,方便內核啟動

NFS:文件系統在PC機上,通過網絡共享

相關焦點

  • 嵌入式軟體開發(三)——嵌入式linux系統
    本節主要介紹嵌入式linux系統的組成。一、嵌入式linux系統的啟動流程       通過前面章節我們了解到,CPU的運行過程就是獲取軟體指令並執行的過程,作業系統本質上也是一種軟體,所以作業系統的啟動過程也是CPU啟動、運行的過程。
  • Linux根文件製作
    導讀根文件系統首先是內核啟動時所mount的第一個文件系統,內核代碼映像文件保存在根文件系統中,而系統引導啟動程序會在根文件系統掛載之後從中把一些基本的初始化腳本和服務等加載到內存中去運行。* RAMDisk 將製作好的 rootfs 壓縮後寫入 Flash,啟動的時候由 Bootloader load 到RAM,解壓縮,然後掛載到 /。這種方法操作簡單,但是在 RAM 中的文件系統不是壓縮的,因此需要佔用許多嵌入式系統中稀有資源 RAM。
  • 嵌入式Linux內核啟動主要分為這三個階段
    根文件系統至少包括以下目錄: /etc/:存儲重要的配置文件。 /bin/:存儲常用且開機時必須用到的執行文件。 /sbin/:存儲著開機過程中所需的系統執行文件。 /lib/:存儲/bin/及/sbin/的執行文件所需的連結庫,以及Linux的內核模塊。 /dev/:存儲設備文件。
  • STM32五大嵌入式作業系統
    TOP1:μClinux    μClinux是一種優秀的嵌入式Linux版本,從字面意思看是指微控制Linux。同標準的Linux相比,μClinux的內核非常小,但是它仍然繼承了Linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的API,以及TCP/IP網絡協議等。
  • ARM與嵌入式linux入門建議
    這裡必須先說明,以下的步驟都是針對Linux系統的,並不面向WinCE。也許你會注意到,現在做嵌入式的人中,做linux研究的人遠比做WinCE的人多,很多產家提供的資料也是以linux為主。所謂完整的linux系統包括哪些部分呢?三部分:bootloader、linux kernel(linux內核)、rootfile(根文件系統)。那麼這3部分是怎麼相互協作來構成這個系統的呢?各自有什麼用呢?三者有什麼聯繫?怎麼聯繫?系統的執行流程又是怎麼樣的呢?
  • 嵌入式 Linux 的一切,看這一篇就夠了!
    我們常說的嵌入式linux系統,其實與電腦端運行的linux系統本質上是一樣的,都是使用的linux內核,相同的文件系統目錄結構。區別在於嵌入式linux系統多少經過裁剪的,可能在操作時你會發現,有些命令不支持,或者有些命令的個別參數不支持!還有就是內核的功能也有裁剪。
  • 適合STM32的三大嵌入式作業系統
    同標準的Linux相比,μClinux的內核非常小,但是它仍然繼承了Linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的API,以及TCP/IP網絡協議等。因為沒有MMU內存管理單元,所以其多任務的實現需要一定技巧。
  • STM32開發中的五大嵌入式系統
    同標準的Linux相比,μClinux的內核非常小,但是它仍然繼承了Linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的API,以及TCP/IP網絡協議等。    μClinux作業系統的中斷管理是將中斷處理分為兩部分:頂半處理和底半處理。
  • Linux 的 exFAT 文件系統驅動程序即將迎來更新
    嵌入式linux QQ交流群:175159209,歡迎愛好者加入交流技術問題
  • 【DIY】製作自己的嵌入式Linux電腦
    ROM啟動不能直接啟動linux內核,所以需要一個二級的啟動加載器。它會初始化RAM和時鐘,然後開始加載linux內核。AT91 Bootstrap 是一個現成的啟動加載器,可以完成這一系列操作。它被放在NAND flash開始的地方,或者如果我填充這些位置,它可能被放到Dataflash。
  • exFAT 文件系統最新驅動程序已進入 Linux 5.7 內核
    linux QQ交流群:175159209,歡迎愛好者加入交流技術問題!從郵件列表可以看到,Linus Torvalds 已將總計七千多行代碼的新版 exFAT 驅動合併進 Linux 5.7 內核。除此之外,新版驅動也是三星在其以百萬計的 Android 設備中提供的驅動,三星會繼續將其改進貢獻到上遊 Linux 內核。總而言之,新版驅動舊的更可靠,功能也更多,同時它將繼續接受三星和其他公司貢獻的改進。Linux 5.7 首個 RC 版本計劃將在本周末發布,穩定版則計劃在6月份發布。
  • 淺談Linux內核源碼中Makefile、Kconfig和.config文件
    Linux內核源碼文件繁多,搞不清Makefile、Kconfig、.config間的關係,不了解內核編譯體系,編譯修改內核有問題無從下手,自己寫的驅動不知道怎麼編進內核,不知道怎麼配置內核,這些問題都和Makefile、Kconfig、.config有關,下面簡單談談Makefile、Kconfig和.config。
  • 嵌入式項目中使用Linux的技巧
    因此,本文的主旨是為使用Linux的嵌入式作業系統版本——μClinux,開始一個新的設計項目,該指南共分為五個步驟。為了說明該指南,本文介紹了在意法半導體的STM32F429微控制器(ARM Cortex-M4內核,最高180MHz)上的一個μClinux項目實現,使用了Emcraft的STM32F429 Discovery Linux板支持包(BSP)。
  • 老司機帶你理解嵌入式Linux中的根文件系統
    根文件系統首先是一種文件系統,該文件系統不僅具有普通文件系統的存儲數據文件的功能,但是相對於普通的文件系統,它的特殊之處在於,它是內核啟動時所mount的第一個文件系統,內核代碼的映像文件保存在根文件系統中,系統引導啟動程序會在根文件系統掛載之後從中把一些初始化腳本(如rcS,inittab)和服務加載到內存中去運行。我們要明白文件系統和內核是完全獨立的兩個部分。
  • 五大適合STM32的嵌入式作業系統
    μClinux是一種優秀的嵌入式Linux版本,其全稱為micro-control Linux,從字面意思看是指微控制Linux。同標準的Linux相比,μClinux的內核非常小,但是它仍然繼承了Linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的API,以及TCP/IP網絡協議等。
  • 圖解嵌入式Linux應用程式、內核、驅動程序及硬體之間的關係
    在任何一個計算機系統中,大至伺服器、PC機、小至手機、mp3/mp4播放器,無論是複雜的大型伺服器系統還是一個簡單的流水燈單片機系統,都離不開驅動程序的身影,沒有硬體的軟體是空中樓閣,沒有軟體的硬體只是一堆廢鐵,硬體是底層的基礎,是所有軟體得以運行的平臺,代碼最終會落實到硬體上的邏輯組合。
  • 五分鐘淺析STM32的五大嵌入式作業系統
    同標準的Linux相比,μClinux的內核非常小,但是它仍然繼承了Linux作業系統的主要特性,包括良好的穩定性和移植性、強大的網絡功能、出色的文件系統支持、標準豐富的API,以及TCP/IP網絡協議等。因為沒有MMU內存管理單元,所以其多任務的實現需要一定技巧。
  • 手把手教你用 buildroot 構建根文件系統
    嵌入式系統三大部分:bootloader(uboot)、Linux內核、根文件系統。 製作根文件系統有三大神器:busybox、buildroot、yocto。 ubootbuildroot 不僅僅能構建根文件系統,也可以編譯 linux 內核和 uboot。
  • 波蘭極客用一張軟盤運行Linux系統,用的還是最新內核!
    保存配置並退出,編譯完成後_install目錄下會創建一個包含所有文件的文件系統,把它移到主目錄。5、下面就是把這一切放進軟盤了創建指向內核和文件系統的Syslinux引導文件(boot file):cat >> syslinux.cfg << EOFDEFAULT linuxLABEL linuxSAY [ BOOTING FLOPPINUX VERSION 0.1.0
  • linux嵌入式系統設置時間
    可以緩解頸椎疼痛有時程序對系統時間有要求,這時需要設置系統的時區以及時間了。 1. 時區文件存儲目錄/usr/share/zoneinfo/Asia/Shanghai ,該目錄下存放著中國標準時間。新聞聯播一般說北京時間,但是linux系統裡面時區信息存儲的是Shanghai,這裡面沒有北京地區。 3.