我正在开发两个基于飞思卡尔PowerPC设备的Linux系统,一个是MPC8349,另一个是P1020。我能够在两张卡上构建,安装和启动内核。工具链和RAMdisk映像来自飞思卡尔的LTIBs软件包。两张卡都有一个32 MB的闪存映射在同一地址。
我遇到以下问题:P1020主板使用RAM磁盘和设备树中的闪存进行正常启动,显示闪存设备分区(JFFS2)和DOESN" T尝试以root用户身份安装闪存分区。 MPC8349可以从RAM磁盘启动,但是在识别出闪存分区之后,内核会发生混乱,因为它正在寻找一个以root分区方式挂载的flash分区,并且它们都不可用(未格式化)。如果我从设备树中删除闪存,则使用RAM磁盘启动卡。
我对Linux启动脚本不太熟悉,我也没弄清楚我可以在哪里暂停安装MTD分区。我希望电路板能够启动并安装RAM磁盘,就像P1020电路板一样。 Flash分区将在以后初始化并安装,但不能作为root分区安装。
TIA
多兰基尔托
答案 0 :(得分:0)
由于您没有向我们展示任何配置信息,因此给出答案有点困难。
但是,一般来说,Linux内核需要一个根文件系统,因此必须以某种方式提供,否则它将在引导期间出现混乱。 rootfs信息通常通过loader中的bootstring传递给内核。您可以在日志的开头使用命令dmesg
查看引导参数。
例如,在您使用MTD分区的情况下,它可能如下所示:
console=ttyAMA0,115200 root=/dev/mtdblock3 ro rootfs=squashfs rootwait
console
参数指定串行控制台,但它仅与串行控制台输出相关,因此与此无关。
mtd设备上的第三个(/dev/mtdblock3
)分区现在被指定为rootfs。它将以只读方式挂载(ro
标志),文件系统类型指定为squashfs(rootfs=squashfs
)。
关键字rootwait
告诉内核无限期地等待直到挂载发生,主要用于异步设备(usb,mmc)。
您可以在https://www.kernel.org/doc/Documentation/kernel-parameters.txt
现在,这个字符串由加载器传递给你的内核,我对你的电路板不熟悉,但是一个快速的谷歌告诉我Freescales BSP包含u-boot
加载器。你应该能够在u-boot的板配置文件下找到你的引导参数,所以也许grep
:使用dmesg
找到的引导参数ping你的u-boot源你可以找到它。通过比较这两块板之间的引导字符串,你可能会得到很好的暗示。