내가 읽은 문서바쁜 상자목적은 작은 파일 크기를 활용하여 부팅 가능한 CD를 만드는 것입니다.
문서에는 다음과 같은 내용이 나와 있습니다.
To create a working system, just add /dev, /etc, and a Linux kernel.
나는 Ubuntu 및 CentOS와 같은 일부 Linux 배포판을 사용했으며 cmd를 실행할 때 fdisk
일반적으로 /dev로 시작하는 추가 장치 목록을 반환하고 ls
/etc에서 실행할 때 일부 파일을 표시합니다.
부팅하기 전에 BusyBox에 /dev 및 /etc를 어떻게/무엇을 추가해야 하는지 혼란스럽습니다... 런타임 환경에 추가될 것이라고 생각했습니다.
이런 방식으로 이야기할 때 /dev 및 /etc가 다른 관점에서 인식됩니까? 아니면 기본 메커니즘을 많이 이해하지 못한 채 사전 구축된 배포판을 사용할 때 잘못된 관점을 만드는 것입니까?
답변1
문서에서 말하려는 요점은 이것이 상당히 완전한 사용자 공간이지만 (임베디드 장치용 펌웨어를 출시하려는 사람으로서) 여전히 수행해야 할 역할이 있다는 것입니다.
Busybox는 실행될 환경에 대해 몇 가지 가정을 하며 해당 설명은 여기에 문서화되어 있습니다.
- 어떤 방식으로든 초기 시작 프로세스를 처리하게 됩니다. 여기에는 부트로더를 커널로 전달하는 것이 포함됩니다. 커널은 하드웨어에 적합해야 하며 일반적으로 충분히 "소리"가 나야 합니다.
- Busybox 자체로는 추가 작업 없이 사용 가능한 장치를 실행하기에 충분하지 않습니다. 단순히 비지박스를 컴파일하여 파일 시스템에 덤프하고 추가 작업 없이 커널이 부팅되자마자 제어권을 넘겨줄 수는 없습니다.어딘가에첫 번째. 파일 시스템에 /dev가 존재하고 장치 inode가 하드웨어와 일치하도록 채워졌는지 확인해야 합니다. 이를 수행하는 정확한 메커니즘은 커널 버전과 대상으로 하는 하드웨어/플랫폼에 따라 다르며 Linux 커널 버전이 발전하면서 많이 변경되었으며 이를 수행하는 방법은 여러 가지가 있습니다.
- 마지막으로, busybox에서 제공하는 많은 부품(및 다른 곳에서 구해야 하는 부품)에는 일종의 구성이 필요합니다. 이를 관리하는 방법은 귀하에게 달려 있지만 요점은 busybox에서 실행하는 많은 명령이 /etc에서 구성 파일을 읽으며 이러한 구성 파일을 채우고 유지 관리하는 메커니즘을 제공하지 않는 경우 이러한 명령은 작동하지 않습니다.
아마도 임베디드 장치에는 squashfs와 같은 것을 사용하는 하나의 파일 시스템만 있을 것이며 그 안의 모든 것은 읽기 전용일 것입니다. 그러나 요점은 제어권을 넘겨줄 때 이미지/설치 프로그램이 이를 올바른 위치에 배치하기 위해 모든 작업을 수행해야 한다는 것입니다.