和菜鳥一起學linux之initramfs方式啟動
關於initramfs
initramfs在編譯核心的同時被編譯並與核心連線成一個檔案,它被連結到地址__initramfs_start處,與核心同時被載入到ram中。initramfs被解析處理後原始的cpio包(壓縮或非壓縮)所佔的空間(&__initramfs_start- &__initramfs_end)是作為系統的一部分直接保留在系統中,不會被釋放掉。
由於initramfs使用cpio包格式,所以很容易將一個單一的檔案、目錄、node編譯連結到系統中去,這樣很簡單的系統中使用起來很方便,不需要另外掛接檔案系統。
但是因為cpio包實際是檔案、目錄、節點的描述語言包,為了描述一個檔案、目錄、節點,要增加很多額外的描述文字開銷,特別是對於目錄和節點,本身很小額外新增的描述文字卻很多,這樣使得cpio包比相應的image檔案大很多。
關於核心配置和編譯
核心配置:make menuconfig進入配置
進入General setup --->
選擇核心壓縮為LZMA壓縮
Kernelcompression mode (LZMA) --->
然後選擇
[*]Initial RAM filesystem and RAM disk (initramfs/initrd) support
(/rootfs_dir) Initramfs source file(s)
其中rootfs_dir就是我們需要壓縮的rootfs的路徑。
1、 修改壓縮包在記憶體中的存放位置:(mips晶片)
arch/mips/boot/compressed/calc_vmlinuz_load_addr.c中的
vmlinuz_load_addr =0x81a00000;(此地址可根據需要,自己調節)
2、修改rootfs的busybox連結, 在rootfs的目錄下執行:
ln –sbin/busybox init
3、修改CMDLINE:
“console=ttySAC0,115200 init/init rw kgdbttySAC0,115200kgdboc=ttySAC0 mem=32M”
4、最後make編譯
make vmlinuz.bin
之後在當前目錄下就會生成vmlinuz.bin的壓縮包。
5、可能編譯會有問題,此時一般是由於rootfs是root許可權,使用者組也是root,需要修改使用者組,之後便可以編譯通過。
相關文章
- 菜鳥學習計劃淺談之Linux系統Linux
- 菜鳥學Python之 _, __ 和 __xx__的區別Python
- 菜鳥學Python之雜湊表Python
- 菜鳥自學之——SRA Toolkit 的下載和使用
- Linux“菜鳥”到“菜鳥的一些建議Linux
- Linux 發行版不使用 initramfs,直接啟動Linux
- 菜鳥學網路之 —— 長連線和短連線
- Linux菜鳥到老鳥的那些建議Linux
- linux-鳥哥私房菜學習筆記Linux筆記
- 菜鳥也裝Linux(轉)Linux
- 跟著菜鳥學pythonPython
- React菜鳥入門之setStateReact
- 一個菜鳥管理的學習和思考(二)
- 一個菜鳥管理的學習和思考(一)
- 鳥哥的Linux私房菜--CPU種類Linux
- 菜鳥求助!!!
- 菜鳥也想學習JSON解析JSON
- 菜鳥教程python 學習進度Python
- 菜鳥如何學習自動化測試?新夢想
- 菜鳥做 bomb lab 之第一關
- 鳥哥的Linux私房菜 -- 電子書(pdf)Linux
- 菜鳥市場
- 菜鳥的資訊保安學習之路
- python菜鳥教程學習9:函式Python函式
- Android菜鳥學習js筆記一AndroidJS筆記
- 菜鳥筆記之PWN入門(1.0.0)前言筆記
- 菜鳥筆記之資料結構(24)筆記資料結構
- PJzhang:鳥哥的linux私房菜-shell指令碼-上Linux指令碼
- python菜鳥教程學習1:背景性學習Python
- 鳥哥的LINUX私房菜_基礎學習篇(第三版)Linux
- 獎勵豐厚|菜鳥眾測活動
- 菜鳥看前端(Git)前端Git
- java菜鳥入門Java
- hashmap == 菜鳥驛站?HashMap
- python菜鳥教程學習13:檔案操作Python
- 菜鳥學python之用python找指定檔案Python
- python菜鳥教程學習5: python運算子Python
- JavaScript 非同步及Promise 菜鳥學習心得JavaScript非同步Promise
- C#、GIT詳細教程--菜鳥學院C#Git