我手头是一块BeagleBone,使用的SDK是TI SDK6.0,启动方式是SD卡。TI SDK6.0自带有个制作SD的脚本,最终将SD卡做成一个FAT分区和一个EXT3分区,这样做卡有点太麻烦了,不知道如何将MLO,u-boot,kernel和rootfs(压缩包形式)放在一个分区下启动?希望有做过类似工作的朋友可以指导一二,多谢了~~~
kooking:
如果要一个分区,就需要ubl可以从ext4格式的分区读取mlo,或者文件系统可以放在fat分区下面
建议还是使用多分区吧,这样相对安全,启动和数据分开存储
jiew:
你可以從uenv.tx下手
uenv.txt 透過fatload將ramdisk.gz 載入ram, 在bootarg參數指定initrd= 你剛載入ram的位址
這樣就可以把MLO,uboot,uImage,ramdisk.gz,uenv.txt 放在同一個FAT分區了
Steven Liu1:
回复 jiew:
楼上说的是个可以尝试的方案,但是个人觉得,这样你每次启动时候都需要花费这样解压的时间开销,而且一旦你在文件系统中有操作,你需要想一个办法把这些改动同步到你的fat32分区中,这个……真的会方便么?
我们目前SD卡典型的玩法是FAT32+ext3/4,ext3/4存放文件系统,这个是没有疑虑的;需要使用FAT32存储启动使用的MLO,我理解,是因为ROM code无法识别ext3/4,所以需要FAT32存放启动文件。参考:TRM的26.1.7.5 MMC / SD Cards章节:
File system mode (FAT12/16/32 supported with or without Master Boot Record), image data is read from a booting file
leo chen:
回复 jiew:
这是个可行的办法,不过ramdisk掉电不保存,还需加载一个非易失性存储设备,保留信息
kooking:
回复 leo chen:
还有一个用得比较多的方案是,和boot相关的img放在spi flash上,文件系统放在sd卡上
Yaoming Qin:
请问您麻烦的地方在哪里呢?是量产的考虑吗?
user4088306:
回复 Yaoming Qin:
是的,正是出于量产的考虑,一个分区还是方便很多。。。
user4088306:
回复 jiew:
现在ramdisk已经做好了,u-boot的启动参数也改了,但ramdisk是以压缩包的形式存在的,现在直接拷贝到RAM中的话Linux系统无法识别该文件系统啊,RAMDISK是在uboot还是kernel中解压缩的?我的uboot或是kernel还需要做哪些修改?
Steven Liu1:
回复 user4088306:
你确定你现在的bootcmd,bootargs都设置对了吗?
http://processors.wiki.ti.com/index.php/AM335x_U-Boot_User%27s_Guide#Environment_Settings_for_Ramdisk
Uboot只是把相关的参数传递给kernel,在kernel中会进行解压缩等工作,如果参数设置对了,最好查一下你当前的kernel的menuconfig配置,有没有使能相应的配置。