답변1
U-boot의 세 번째 단계를 따라야 한다고 생각합니다.
세 번째 단계는 Linux 커널을 로딩하는 단계입니다. 그러나 Linux 커널이 제어권을 갖기 전에 u-boot는 기본 매개변수가 포함된 명령줄을 커널에 전달합니다. 운영 체제가 부팅된 후 터미널 창에 다음을 입력하여 이러한 매개변수를 볼 수 있습니다.
$ cat /proc/cmdline
root=/dev/mmcblk0p2 rootwait rw console=ttyS0,115200n8 console=tty0 no_console_suspend vdaccfg=0xa000 logo=osd1,loaded,0x7900000,720p,full dmfc=3 cvbsmode=576cvbs hdmimode=1080p m_bpp=32 vout=hdmi disablehpd=true
커널은 하드웨어를 초기화하고 루트 파일 시스템을 마운트하고(root=... 커널 매개변수에 따라) 제어 흐름을 /sbin/init에 전달합니다. Uboot에 대한 자세한 내용이 필요하면 다음을 따르세요.협회
답변2
파일 시스템 및 미디어에 따라 u-boot 셸 아래에서 직접 16진수로 데이터를 덤프할 수 있습니다. 리버스 엔지니어링을 수행하는 경우 help
출력을 보고 어떤 유형의 미디어 저장 장치 액세스 및 조작 명령을 U-boot로 컴파일했는지 확인하고 거기서부터 진행하세요. 메모리에 로드되면, 또는 때로는 메모리 없이도 "md"를 사용하여 덤프할 수 있습니다. 메모리의 u-boot 섹션 뒤에 로드 주소를 사용하십시오. 그렇지 않으면 재부팅됩니다. 대부분의 경우 파일 시스템은 압축되어 있으며 영구적으로 수정할 수 없다는 점을 명심하십시오(squashfs가 일반적임). 때때로 u-boot에는 압축되지 않은 데이터를 로드하고 읽을 수 있는 명령이 함께 제공됩니다. 메모리 덤프에서 파일 시스템을 보는 것은 지루할 수 있으므로 일반적으로 전체 파티션 덤프를 로컬에서 기록하고 이진 파일로 변환한 후 로컬에서 처리하는 것이 가장 좋습니다.
init=
쉘 프로그램을 가리키도록 커널 매개변수를 수정하여 쉘을 성공적으로 로드할 수 있습니다. 일반적으로 임베디드 장치의 경우 busybox이므로 /bin/ash
.