메인라인 커널을 Beagle Bone Black으로 부팅해 보았습니다. 컴파일은 원활하게 진행되었으며 zImage가 있고 uboot 프런트엔드에 MLO 및 u-boot.img 파일이 있습니다.
나는 elinux 지침을 따르고 있습니다. http://elinux.org/Building_for_BeagleBone
이제 마더보드를 부팅할 때 S2를 잡고 microSD 카드에서 강제 부팅하면 uboot 프롬프트가 표시되고 커널도 선택되어 로드되지만 부팅 프로세스가 여기서 멈춥니다.
[ 1.645505] Waiting for root device ...
[ 1.654437] mmc1: new high speed MMC card at address 0001
[ 1.660920] mmcblk1: mmc1:0001 S10004 3.56 GiB
[ 1.666011] mmcblk1boot0: mmc1:0001 S10004 partition 1 4.00 MiB
[ 1.672479] mmcblk1boot1: mmc1:0001 S10004 partition 2 4.00 MiB
[ 1.679915] mmcblk1: p1 p2
mmcblk1은 온보드 mmc 메모리 모듈이어야 하며 mmcblko는 내가 부팅한 카드입니다.
1.542889] mmc0: 쓰기가 가능하다고 가정하면 호스트가 읽기 전용 스위치를 지원하지 않습니다.
[ 1.554351] mmc0: new high speed SDHC card at address aaaa
[ 1.561019] mmcblk0: mmc0:aaaa SS08G 7.40 GiB <-- Size match
[ 1.567951] mmcblk0: p1 p2
uEnv.txt 파일의 내용은 다음과 같습니다.
bootdir=
bootfile=zImage
fdtfile=am335x-boneblack.dtb
loadaddr=0x80007fc0
fdtaddr=0x80F80000
loadfdt=fatload mmc 0:1 ${fdtaddr} ${fdtfile}
loaduimage=fatload mmc 0:1 ${loadaddr} ${bootfile}
uenvcmd=mmc rescan; run loaduimage; run loadfdt; run fdtboot
fdtboot=run mmc_args; run mmcargs; bootz ${loadaddr} - ${fdtaddr}
mmc_args=setenv bootargs console=${console} ${optargs} root=${mmcroot}
rootfstype=${mmcrootfstype}
필요한 경우 추가 로그를 제공할 수 있습니다. 너무 많은 공간을 차지하므로 이 질문이 다른 사람을 돕기 위한 것이라면 Pastebin은 장기적인 솔루션이 아닙니다.
답변1
문제는 uEnv.txt 파일에 있었는데, 여기서 uboot 환경에서 선택한 변수 root 및 rootfstype을 유지했습니다. 사용자 정의 값을 제공하면 원하는 결과를 얻을 수 있습니다.
내가 게시한 uEnv.txt의 마지막 줄에서 다음을 변경합니다.
root=/dev/mmcblk0p2 <-microSD Card , Second Partition
rootfstype=ext4 <- The type of Rootfs you build, I used buildroot with ext4 settings