Jim741305 / osfall2020

Undergraduate Operating Systems course (2020 fall)
8 stars 6 forks source link

[Project 1] boot.img, module.img 를 만드는 과정에 대한 질문 #20

Open yhytoto12 opened 3 years ago

yhytoto12 commented 3 years ago

project0.md 에 나와있는 방법으로 tizen-rpi3 booting을 진행하던 중 기기와 qemu 에뮬레이터 모두 잘 안되어서 코드를 뜯어보게 되었습니다. boot.imgmodule.img를 만들는 ./scripts/mkbootimg_rpi3.sh 코드를 보면 아래와 같은데요.

#!/bin/bash

BOOT_PATH="rpi3/boot"
USER_ID=`id -u`
GROUP_ID=`id -g`

rm -f boot.img
rm -rf tmp
mkdir tmp

# Create boot.img
mkfs.vfat -F 16 -C -n BOOT boot.img 65536
sudo mount -o loop,uid=$USER_ID,gid=$GROUP_ID,showexec boot.img $(pwd)/tmp
cp -a $BOOT_PATH/config_64bit.txt ./tmp/config.txt
cp -a $BOOT_PATH/LICENCE.broadcom ./tmp
cp -a $BOOT_PATH/bootcode.bin ./tmp
cp -a $BOOT_PATH/start*.elf ./tmp
cp -a $BOOT_PATH/fixup*.dat ./tmp
cp -a arch/arm64/boot/Image ./tmp
cp -a arch/arm64/boot/dts/broadcom/bcm*.dtb ./tmp

# install u-boot files extracted from u-boot-rpi3 rpm package in download.tizen.org.
TMP_UBOOT_PATH=tmp_uboot
mkdir -p ${TMP_UBOOT_PATH}
pushd ${TMP_UBOOT_PATH}
REPO_URL=http://download.tizen.org/snapshots/tizen/unified/latest/repos/standard/packages/aarch64/
rm -f index.html*
wget ${REPO_URL}
UBOOT=`awk -F\" '{ print $2 }' index.html | grep u-boot-rpi3`
wget ${REPO_URL}${UBOOT}
unrpm ${UBOOT}

# install u-boot.img having optee.bin extracted from atf-rpi3 rpm package in download.tizen.org.
ATF=`awk -F\" '{ print $2 }' index.html | grep atf-rpi3`
wget ${REPO_URL}${ATF}
unrpm ${ATF}

popd
cp -a ${TMP_UBOOT_PATH}/boot/* ./tmp
rm -rf ${TMP_UBOOT_PATH}

sync
sudo umount tmp

rm -f modules.img
mkdir -p tmp/lib/modules

# Create modules.img
dd if=/dev/zero of=modules.img bs=1024 count=20480
mkfs.ext4 -q -F -t ext4 -b 1024 -L modules modules.img
sudo mount -o loop modules.img $(pwd)/tmp/lib/modules
make modules_install ARCH=arm64 INSTALL_MOD_PATH=./tmp INSTALL_MOD_STRIP=1 CROSS_COMPILE=aarch64-linux-gnu-
sudo -n chown root:root ./tmp/lib/modules -R

sync
sudo umount tmp/lib/modules

rm -rf tmp

중간에 u-boot.img 를 설치하는 과정이 의도적으로 동작하지 않는게 맞는 건가요? 해당 url에서 파일을 다운 받는 것 같은데 atf-rpi3 와 관련된 파일은 해당 url에 없고, 따라서 wget 및 unrpm 역시 비정상적으로 끝나는 것 같습니다. 해당 스크립트를 통해 만들어진 boot.img 와 module.img 대신 http://download.tizen.org/snapshots/tizen/unified/latest/images/standard/iot-boot-arm64-rpi3/ 에서 다운받은 boot.img, module.img 로는 정상적으로 동작하는 걸로 보아 기기문제는 아닌 것 같습니다...

혹시 다른 수강생들 중에서 저 스크립트로 진행해서 부팅에 성공하신 분들 계신가요??

zxcvvxcz commented 3 years ago

저는 원래 스크립트대로 해서 문제없이 작동했습니다

dongjaelee1 commented 3 years ago

저는 원래 스크립트에 qemu만 직접 빌드하는 식으로 해서 작동합니다.

yhytoto12 commented 3 years ago

다들 답변 감사합니다. 처음에 VM 환경에서 하다가 잘 안되는 것 같아서 리눅스 깔아서 다시 해보니까 잘 되네요.