簡體   English   中英

使用buildroot和uboot配置initramfs

[英]Configuring initramfs with buildroot and uboot

我試圖讓initramfs使用buildroot和uboot在嵌入式Linux設備上工作。 我一直在遵循指南,在buildroot和內核配置中設置了initramfs。 但是據我所知,盡管輸出中包含了CPIO或根FS,但它並未內置在內核中。

我的問題是雙重的。 首先,從較高的角度來看,我對引導過程的理解正確嗎?

  1. 第1階段引導程序(特定於Atmel / ARM)啟動並移交
  2. 第2階段自舉程序(uboot)初始化一些東西,將內核加載到內存中並運行它
  3. 內核將CPIO歸檔文件放入內存,創建該根目錄並在該環境中運行init

這意味着我刷新到芯片上的映像是具有引導和系統分區的IMG,系統分區是ext4,並且其中包含CPIO存檔。 我不確定如何使第3項實際上從這里發生。

其次,在實際配置方面,Buildroot菜單配置具有許多文件系統選項

  • ext2 / 3/4根文件系統(默認情況下處於啟用狀態)
  • cpio根文件系統(用作初始RAM文件系統)
  • 鏈接到linux內核的初始RAM文件系統

然后在內核配置中

  • 常規->初始RAM文件系統和RAM磁盤(initramfs / initrd)支持
  • 常規-> Initramfs源文件(設置為生成的cpio文件)

這里的buildroot是什么? 從我的角度來看,好像我正在獲得重復的圖像(CPIO和ext4),並且CPIO被忽略了。

對於可能有相同問題的人,最好的解決方法是更加熟悉uboot及其選項。 特別是uboot-env.txt在此過程中扮演的角色。

我對buildroot的理解是錯誤的。 這個過程是

  1. 構建內核
  2. 創建所有根文件系統(ext和CPIO)
  3. 使用內部的CPIO重建內核
  4. 按照我的genimage.cfg文件的指示打包ext文件

可能會感興趣如果這個過程是混亂給你。

這是系統正在做的

  1. 第1階段引導程序(特定於Atmel / ARM)啟動並移交
  2. 第2階段引導程序(uboot)初始化一些事情,然后按照config的指示運行,方法是將內核從ext4分區寫入內存並運行它
  3. 該內核沒有cpio,因此它沒有運行。

更好地了解過程和組件之后,我能夠重組img文件並使用引導加載程序來加載使用cpio構建的內核。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM