日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

ramdisk根文件系统+initramfs

發(fā)布時(shí)間:2025/3/15 windows 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ramdisk根文件系统+initramfs 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這幾天做了下ramdisk根文件啟動(dòng)實(shí)驗(yàn),小結(jié)下。

測(cè)試環(huán)境:Ubuntu 12.04

首先我認(rèn)為先制作根文件系統(tǒng)好,因?yàn)榕渲脙?nèi)核中有一項(xiàng)跟你制作的ramdisk大小有關(guān)。
這里我是直接使用原先制作好的根文件系統(tǒng)。

?

1.?? 制作ramdisk根文件系統(tǒng)鏡像
??? 首先安裝ext2文件系統(tǒng)的制作工具:
??? #sudo apt-get install genext2fs
??? 跳轉(zhuǎn)到你的rootfs文件系統(tǒng)所在目錄,執(zhí)行如下命令
??? #genext2fs -b 4096 -d rootfs ramdisk
? ? ?? -b是指制作的ramdisk大小為4096K字節(jié)
?????? -d是指要制作成ramdisk的根文件系統(tǒng)目錄
??? 最后的ramdisk是制作出來(lái)的ramdisk的名字,當(dāng)然可以改名的。
? ? 注: 若出現(xiàn)genext2fs: couldn't allocate a block (no free space)這樣的錯(cuò)誤,則修改4096為8192
??? #gzip -9 -f ramdisk
??? 該ramdisk以最優(yōu)方式壓縮為ramdisk.gz

2.? 配置內(nèi)核?  
  
首先解壓內(nèi)核到工作目錄,然后進(jìn)入內(nèi)核目錄,執(zhí)行如下語(yǔ)句。
  #sudo su
  #make menuconfig       (如ubuntu下的用戶不能執(zhí)行該命令則先執(zhí)行如下命令 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的,則寫(xiě)成8192
??? File system --> <*> Second extended fs support? //提供內(nèi)核對(duì)ext2文件系統(tǒng)的支持
?? ??? ?退出保存配置。

??? 3.編譯內(nèi)核
?? ?執(zhí)行如下命令:
?? ??? ?#make clean
?? ??? ?#make uImage
?? ?編譯后生成的內(nèi)核映像uImage位于當(dāng)前目錄下。將其拷貝到/nfs目錄下
?? ??? ?#cp uImage /nfs

??? 4.用網(wǎng)線和串口線連接好開(kāi)發(fā)板和電腦(暫不開(kāi)啟開(kāi)發(fā)板),打開(kāi)minicom:
?? ??? ??? ?#sudo minicom
?? ?接通開(kāi)發(fā)板的電源,當(dāng)出現(xiàn)如下字符后Hit any key to stop autoboot ,敲擊鍵盤(pán)空格鍵進(jìn)入uboot。
?? ?
?? ?6.使用uboot命令配置環(huán)境變量
??????????? #setenv serverip 10.0.0.1???????????? //對(duì)應(yīng)主機(jī)IP地址
??????????? #setenv ethaddr 00:26:6c:5a:a7:51 ?
?????? 說(shuō)明:該硬件地址是自己主機(jī)的硬件地址,在另一個(gè)終端下執(zhí)行ifconfig eth0 查看
??????????? #setenv ipaddr 10.0.0.2?????????????? //開(kāi)發(fā)板IP地址
? ??? ??? ? #setenv bootargs initrd=0x81000000,0x200000 root=/dev/ram? rw? console=ttyS2,115200n8 mem=64M init=/linuxrc
?????? 說(shuō)明:意思為從ramdisk啟動(dòng),ramdisk壓縮文件起始地址在內(nèi)存地址0x81000000處,文件大小為0x200000。 ?
?????? 這里真的是相當(dāng)?shù)挠魫?....?? 我一開(kāi)始下載完之后,總是在Uncompressing Linux....................................那里就停住了,搞了幾天也不明所以....? 主要是看的幾篇文章在console=ttySx后面都沒(méi)有寫(xiě)波特率,我也就沒(méi)寫(xiě)。最后在后面加了個(gè)波特率就好了..? 坑爹...? 雖然還是不懂,為什么沒(méi)寫(xiě)明波特率就不行了..? 知道的跟我講解下~~

??????????? #saveenv
?? ??? ??? ?然后復(fù)位下開(kāi)發(fā)板,再次進(jìn)入uboot。
???????????
?? ?7.在另一個(gè)終端下執(zhí)行如下命令配置主機(jī)ip地址
?? ??? ??? ?#sudo ifconfig eth0 10.0.0.1

?? ?8.繼續(xù)回到minicom下測(cè)試網(wǎng)絡(luò)是否可用
?? ??? ??? ?#ping 10.0.0.1
?? ?若打印輸出語(yǔ)句host 10.0.0.1 is alive 表明網(wǎng)絡(luò)可用 ?

?? ?9.使用uboot下載內(nèi)核和ramdisk并燒寫(xiě)。
?? ??? ??? ?#nfs 0x82000000 10.0.0.1:/nfs/uImage??
?? ??? ??? ?#nfs 0x81000000 10.0.0.1:/nfs/ramdisk.gz
?????? 說(shuō)明:ramdisk.gz的下載地址必須是你參數(shù)里設(shè)置的initrd對(duì)應(yīng)的地址。

?? ?10.啟動(dòng)內(nèi)核
?? ??? ??? ?#bootm 0x82000000

?PS:如果啟動(dòng)的時(shí)候出現(xiàn)如下問(wèn)題:
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大小設(shè)置問(wèn)題,將0x200000改成0x400000。

?

如果想將uImage和ramdisk進(jìn)行燒寫(xiě),可執(zhí)行如下命令:

燒寫(xiě)uImage(燒寫(xiě)地址根據(jù)自己的開(kāi)發(fā)板):

?????? #nand erase 00280000 400000????????? //擦除從0x00280000起大小為400000的空間
?????? #nand write 82000000 00280000 400000?? //從0x82000000讀取400000大小內(nèi)容到0x00280000

燒寫(xiě)ramdisk:

?????? #nand erase 00780000 400000
?????? #nand write 81000000 00780000 400000

并設(shè)置啟動(dòng)命令:

????? #setenv bootcmd nand read 82000000 00280000 400000 \; nand read 81000000 00780000 400000 \; bootm 82000000

?

?

initramfs根文件系統(tǒng)啟動(dòng)

現(xiàn)在基于Linux的發(fā)行版通常采用initramfs代替initrd,架構(gòu)更簡(jiǎn)單,應(yīng)用也更靈活一些。

首先需要做好rootfs這個(gè)簡(jiǎn)單的根文件系統(tǒng)目錄。唯一需要修改的是initramfs根文件系統(tǒng)啟動(dòng)時(shí)執(zhí)行的第一個(gè)程序是init,而不是linuxrc,所以在制作的根文件系統(tǒng)中需要添加一個(gè)init文件,相應(yīng)的linuxrc文件就不再需要了。
按照如下方式修改根文件系統(tǒng)
??????????? #cd /nfs/rootfs
??????????? #ln -s bin/busybox init
這樣就為busybox創(chuàng)建了一個(gè)軟鏈接init,這個(gè)文件就是我們要?jiǎng)?chuàng)建的init文件。

然后配置內(nèi)核只需配置如下選項(xiàng)即可:
?[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support??????????????????????????????
???????? (/nfs/rootfs) Initramfs source file(s)???? //括號(hào)中寫(xiě)明你的rootfs路徑
編譯生成uImage即可。

在設(shè)置uboot環(huán)境變量時(shí),只需要改變bootargs變量
???????? #setenv bootargs console=ttys2,115200n8 mem=64M
其他步驟與ramdisk無(wú)差別。

參考:http://www.arm9home.net/read.php?tid-5610.html
?????? http://www.arm9home.net/read.php?tid-5645.html

轉(zhuǎn)載于:https://www.cnblogs.com/zjfdbz/archive/2013/01/26/2877675.html

總結(jié)

以上是生活随笔為你收集整理的ramdisk根文件系统+initramfs的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。