저는 전체 업그레이드가 가능한 임베디드 프로젝트를 진행 중입니다. 때로는 업그레이드하려면 모든 것을 다시 설치해야 할 수도 있습니다. 이는 매우 위험한 일이므로 업그레이드를 다시 시도할 수 있는 일종의 비상 안전 폴백 모드를 갖고 싶습니다.
또 다른 업그레이드를 시도해 볼 만큼 좋은 매우 기본적인 코어를 추가할 생각입니다. 항상 이 기본 커널로 부팅하고 GPIO를 확인한 다음 다른 커널로 부팅하거나 GPIO 상태에 따라 부팅을 계속하고 싶습니다. 해당 GPIO에 신호를 보내기 위해 케이스에 버튼을 설치하겠습니다.
부트로더가 어떻게 작동하는지 모르고 grub/syslinux를 AFAIK에서 사용할 수 없습니다.
그런 일이 가능합니까? 문제를 너무 복잡하게 만들고 있나요?
답변1
Linux 부트로더는 최소한 커널을 로드하고 이를 커널에 로드할 위치를 알려주는 몇 가지 매개변수를 전달해야 합니다. 많은 설정에는 명령줄과 초기 RAM 드라이브를 전달하는 기능도 필요하지만 알려진 하드웨어 설정이 있는 임베디드 시스템에서는 이것이 중복될 수 있습니다.
안정적인 부트로더를 얻는 가장 좋은 방법은 사용 가능한 부트로더를 사용하는 것입니다. Linux 부트로더(U-Boot 또는 임베디드 시스템에 있는 모든 것)를 체인로드하고 폴백 메커니즘을 가질 수 있는 고정된 구성의 간단한 1단계 부트로더를 갖습니다. U-Boot 자체는 대체 메커니즘을 구현할 수 있습니다. - 참조U-Boot 사용자 메일링 목록의 "U-Boot에서 부팅 이미지 폴백 구현", 그리고중복 이미지xpedite5370을 예로 들어 보겠습니다.