ramdisk根檔案系統+initramfs

來源:互聯網
上載者:User

ramdisk根檔案系統+initramfs 這幾天做了下ramdisk根檔案啟動實驗,小結下。 測試環境:Ubuntu 12.04 首先我認為先製作根檔案系統好,因為配置核心中有一項跟你製作的ramdisk大小有關。這裡我是直接使用原先製作好的根檔案系統。 1.   製作ramdisk根檔案系統鏡像    首先安裝ext2檔案系統的製作工具:    #sudo apt-get install genext2fs    跳轉到你的rootfs檔案系統所在目錄,執行如下命令    #genext2fs -b 4096 -d rootfs ramdisk       -b是指製作的ramdisk大小為4096K位元組       -d是指要製作成ramdisk的根檔案系統目錄    最後的ramdisk是製作出來的ramdisk的名字,當然可以改名的。    註: 若出現genext2fs: couldn't allocate a block (no free space)這樣的錯誤,則修改4096為8192    #gzip -9 -f ramdisk    該ramdisk以最優方式壓縮為ramdisk.gz  2.  配置核心     首先解壓核心到工作目錄,然後進入核心目錄,執行如下語句。  #sudo su  #make menuconfig       (如ubuntu下的使用者不能執行該命令則先執行如下命令 sudo apt-get install libncurses5-dev)    General setup-->[*] Initial RAM filesystem and RAM disk support                -->    [*]Optimize for size    Device Drivers-->Block devices--><*>RAM block device support    (4096)Default RAM disk size (kbytes)                   //如果你之前製作的ramdisk是8192kb的,則寫成8192    File system --> <*> Second extended fs support  //提供核心對ext2檔案系統的支援        退出儲存配置。     3.編譯核心    執行如下命令:        #make clean        #make uImage    編譯後產生的核心映像uImage位於目前的目錄下。將其拷貝到/nfs目錄下        #cp uImage /nfs     4.用網線和串口線串連好開發板和電腦(暫不開啟開發板),開啟minicom:            #sudo minicom    接通開發板的電源,當出現如下字元後Hit any key to stop autoboot ,敲擊鍵盤空格鍵進入uboot。        6.使用uboot命令配置環境變數            #setenv serverip 10.0.0.1             //對應主機IP地址            #setenv ethaddr 00:26:6c:5a:a7:51         說明:該硬體地址是自己主機的硬體地址,在另一個終端下執行ifconfig eth0 查看            #setenv ipaddr 10.0.0.2               //開發板IP地址            #setenv bootargs initrd=0x81000000,0x200000 root=/dev/ram  rw  console=ttyS2,115200n8 mem=64M init=/linuxrc       說明:意思為從ramdisk啟動,ramdisk壓縮檔起始地址在記憶體位址0x81000000處,檔案大小為0x200000。          這裡真的是相當的鬱悶.....   我一開始下載完之後,總是在Uncompressing Linux....................................那裡就停住了,搞了幾天也不明所以....  主要是看的幾篇文章在console=ttySx後面都沒有寫傳輸速率,我也就沒寫。最後在後面加了個傳輸速率就好了..  坑爹...  雖然還是不懂,為什麼沒寫明傳輸速率就不行了..  知道的跟我講解下~~            #saveenv            然後複位下開發板,再次進入uboot。                7.在另一個終端下執行如下命令配置主機ip地址            #sudo ifconfig eth0 10.0.0.1     8.繼續回到minicom下測試網路是否可用            #ping 10.0.0.1    若列印輸出語句host 10.0.0.1 is alive 表明網路可用       9.使用uboot下載核心和ramdisk並燒寫。            #nfs 0x82000000 10.0.0.1:/nfs/uImage               #nfs 0x81000000 10.0.0.1:/nfs/ramdisk.gz       說明:ramdisk.gz的必須是你參數裡設定的initrd對應的地址。     10.啟動核心            #bootm 0x82000000  PS:如果啟動的時候出現如下問題:Failed to execute /linuxrc.  Attempting defaults...Kernel panic - not syncing: No init found.  Try passing init= option to kernel. 原因可能是setenv bootargs initrd=0x81000000,0x200000 root=/dev/ram  rw  console=ttyS2,115200n8 mem=64M init=/linuxrc中的ramdisk大小設定問題,將0x200000改成0x400000。 如果想將uImage和ramdisk進行燒寫,可執行如下命令: 燒寫uImage(燒寫地址根據自己的開發板):        #nand erase 00280000 400000          //擦除從0x00280000起大小為400000的空間       #nand write 82000000 00280000 400000   //從0x82000000讀取400000大小內容到0x00280000 燒寫ramdisk:        #nand erase 00780000 400000       #nand write 81000000 00780000 400000 並設定啟動命令:       #setenv bootcmd nand read 82000000 00280000 400000 \; nand read 81000000 00780000 400000 \; bootm 82000000 initramfs根檔案系統啟動 現在基於Linux的發行版通常採用initramfs代替initrd,架構更簡單,應用也更靈活一些。 首先需要做好rootfs這個簡單的根檔案系統目錄。唯一需要修改的是initramfs根檔案系統啟動時執行的第一個程式是init,而不是linuxrc,所以在製作的根檔案系統中需要添加一個init檔案,相應的linuxrc檔案就不再需要了。按照如下方式修改根檔案系統            #cd /nfs/rootfs            #ln -s bin/busybox init這樣就為busybox建立了一個軟連結init,這個檔案就是我們要建立的init檔案。 然後配置核心只需配置如下選項即可: [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support                                        (/nfs/rootfs) Initramfs source file(s)     //括弧中寫明你的rootfs路徑編譯產生uImage即可。 在設定uboot環境變數時,只需要改變bootargs變數         #setenv bootargs console=ttys2,115200n8 mem=64M 其他步驟與ramdisk無差別。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.