Linux Live USB에서 부팅 프로세스 수정

Linux Live USB에서 부팅 프로세스 수정

기존 Microsoft Surface 2(Nvidia Tegra 4 SoC가 탑재된 태블릿)에서 Linux Live USB를 부팅하려고 합니다. 분명히 GPU를 실행하려면 SoC 드라이버가 필요합니다. 부팅을 시도할 수 있는 몇 가지 라이브 USB 배포판이 있습니다. 내가 시도한 첫 번째 것은 Debian 10 ARM HF였습니다. 이제 다음 패키지가 필요한 부트로더가 걱정됩니다.

https://packages.debian.org/buster/armhf/u-boot-tegra/

물론, 이 패키지를 사용하려면 먼저 배포판을 설치해야 하므로 닭고기와 달걀의 문제입니다. 그렇다면 해당 패키지 내의 이러한 바이너리를 활용하기 위해 Live USB의 부트로더를 어떻게 수정합니까?

/usr/lib/u-boot/jetson-tk1/u-boot-tegra.bin

/usr/lib/u-boot/jetson-tk1/uboot.elf

가능하다면 Live USB의 루트에 있는 파일을 교환하시겠습니까?

어서, 모두가 내 주의를 분산시키려고 해요. 이것이 당신의 기회입니다.

답변1

Surface 2는 ARM 아키텍처를 갖춘 32비트 UEFI 시스템이라는 것을 알고 있으므로 이동식 미디어에서 부팅하라는 명령을 받으면 펌웨어는 이해하는 모든 파일 시스템 유형을 찾습니다 \EFI\boot\bootarm.efi(적어도 FAT32이지만 Microsoft 펌웨어도 그럴 수 있다고 생각합니다). NTFS를 읽을 수 있습니까? 라이브 미디어에서 파일을 찾으면 부팅 가능한 미디어로 간주하고 파일을 로드한 후 실행해야 합니다.

rEFIndUEFI 부트로더라면 좋겠지만 x86 플랫폼에서는 32비트 하드웨어만 지원하므로 32비트 ARM 버전은 존재하지 않습니다. 그러나 GRUB systemd-boot에는 32비트 ARM 버전이 있는 것으로 보입니다.

UEFI의 경우 Live USB 루트에 적절한 디렉터리를 생성하고 지정된 파일 이름(32비트 ARM의 경우)을 사용하여 지정된 디렉터리에 부트로더 복사본을 배치하는 것만큼 간단할 수 있습니다 \EFI\boot\bootarm.efi. 나머지는 실제로 부트로더가 무엇인지에 따라 다릅니다. ARM 버전의 GRUB을 사용하는 경우 라이브 미디어에서 커널 및 initramfs 파일을 찾을 수 있는 위치를 GRUB에 알려주는 최소한의 GRUB 구성 파일을 작성해야 합니다. 나는 그것에 대해 별로 익숙하지 않지만 systemd-boot일반적으로 라이브 미디어의 예상 위치에 찾을 것으로 예상되는 것을 넣어야 합니다.

반면, 임베디드 시스템을 개발하는 경우 U-boot가 중요합니다.베어메탈에서, 사용자 정의 펌웨어의 일부로 U-Boot를 사용하십시오. 그런데 당신은 그렇게 하지 않은 것 같습니다.

관련 정보