2013-08-06 38 views
2
我有裝載我的根文件系統和檢查內核日誌後問題

根文件系統,它說像不能安裝在zedboard

一些東西「INITRD:0x1f8ca000 + 0x0028ac63不是內存區域 - 禁用的initrd」

這是什麼意思?

背景

我上了ARM Cortex A9的一個核心運行Linux和試圖運行在另一個內核另一baremetal應用。我已經更改了設備樹來反映這一點,並且我保留了Linux的SDRAM的一部分,並且是裸機應用程序的一部分。我正在使用Uboot。這與uboot有關嗎?

乾杯, 小號

+0

你可以發佈你的Uboot配置和Linux內核版本嗎?該消息來自arch/arm/mm/init.c。 memblock_is_region_memory()失敗。 –

+0

嗨,感謝您指向我的文件。這的確是因爲我的內核試圖在我爲設備樹中的linux分配的地址範圍之外加載Ramdisk(這是由uboot完成的),通過設置變量initrd_high來修復它 – Nuetrino

回答

1

你不是專整個RAM對主要核心的Linux內核,你將需要確保在bootargs指定的intrd加載地址是從主核心入店。

接下來,這個信息通常是傳遞給Linux內核從u-boot的通過bootargs爲

initrd=<initrd-start-addr>,<initrd-size> 

根據您的自定義內存映射

最後,在u-boot的,負載其修改initrd放在剛剛指定的新適當地址處,然後引導Linux內核。

+0

嗨,我解決了它沒有做這個。但你提到的原因是正確的。問題是我的Ramdisk被加載到linux可以看到的RAM內存之外。所以我只是設置env變量initrd_high來指定linux可以使用的最大地址。 – Nuetrino

+0

限制在u-boot(或者DTS,在你的情況下)bootargs中定義的完整RAM的內存映射是針對Linux內核的。在使用u-boot將'initrd'映像加載到RAM中時,您還需要通知u-boot有關RAM的限制。正如你所提到的,你在u-bbot中使用'initrd_high'實現了這一點,u-boot確實使用它來決定在哪裏加載圖像。 :-) – TheCodeArtist

+0

哦,是的,我打出了一個更大的評論問一個問題,但後來意識到你剛纔提到的:D。謝謝。 – Nuetrino