Linux에서 initramfs를 로드하는 중 예외가 발생했습니다.

Linux에서 initramfs를 로드하는 중 예외가 발생했습니다.

uboot에서 linux initramfs를 시작할 때 예외가 발생했습니다.

내 bootargs는 다음과 같습니다: setenv bootargs 'console=ttySC0,115200 root=/dev/ram rw ramdisk_size=51200' booti 0x60E00000 0x70000000 0x62000000

추적점 호출무료 초기화 메모리. initramfs 파일 시스템을 해제하는 동안 예외가 발생했습니다.

누군가 제안했는데 근본 원인은 무엇입니까? bootargs를 변경해야 합니까?

감사해요.

시작 로그:

[0.175106] initramfs 압축을 푸는 중...

[ 0.653408] 버그: 프로세스 전환기/0 pfn:70400의 페이지 상태가 잘못되었습니다.

[ 0.653424] 페이지: ffffffbdc1c10000 개수: 0 지도 개수: -127 지도: (null) 색인: 0x0

[0.653428] 플래그: 0x0()

[ 0.653433] 페이지가 덤프된 이유: 0이 아닌 mapcount

[0.653437] 연결된 모듈:

[ 0.653447] CPU: 3 PID: 1 통신: 스위치/0 오염되지 않음 4.4.0-yocto-standard #16

[ 0.653451] 하드웨어 이름: Renesas r8a7795(DT) 기반 Visteon Monarch 보드

[0.653456] 통화 추적:

[0.653473][]dump_backtrace+0x0/0x180

[0.653479][]show_stack+0x14/0x20

[0.653488][]덤프 스택 +0x90/0xc8

[0.653497][]bad_page+0xc8/0x118

[0.653502][]free_pages_prepare+0x1dc/0x248

[0.653506][]free_hot_cold_page+0x28/0x1b8

[0.653510][]__free_pages+0x40/0x50

[0.653514][]free_reserved_area+0x8c/0x110

[0.653524][]free_initrd_mem+0x20/0x2c

[0.653529][]populate_rootfs+0x9c/0xbc

[0.653534][]do_one_initcall+0x8c/0x190

[0.653539][]kernel_init_freeable+0x148/0x1ec

[0.653549][]kernel_init+0x10/0xe0

[ 0.653554] [] _fork에서 +0x10/0x40을 다시 얻습니다.

[0.653557] 커널 오염으로 인해 잠금 디버깅이 비활성화되었습니다.

답변1

initrd이미지 크기는 RAM에 비해 매우 작습니다. 그래서 initrd아래 방법을 이용하여 이미지를 커널에 공개하지 않고 그대로 유지했습니다 bootargs.

set bootargs 'retain_initrd'

관련 정보