저는 임베디드 Linux 배포판을 만들고 있으며 마더보드는 Raspberry Pi입니다. 내 커널 버전은 3.2.27이고 initramfs가 없으며 내 루트 파일 시스템은 다음과 같습니다.
/lib /* contains kernel modules */
/bin /sbin /usr/bin /usr/sbin /* contains busybox utils binaries */
/usr/lib /* contains cross-compiler tool chain libs */
linuxrc /* generated by busybox, kept in / */
/dev /* I have created console and ttyAM0 manually but added mode devices by udev */
/etc/init.d/rcS /* required by busybox init */
커널이 부팅되면 콘솔이 나타납니다(비지박스 콘솔인지는 모르겠습니다). 나는 다음과 같은 질문이 있습니다
- 사용 가능한 프로세스 정보가 없습니다(아래에 파일/폴더가 생성되지 않았습니다
/proc
). - 제가 사용해도
ps -e
아무 것도 표시되지 않습니다 .
왜 이런 예상치 못한 동작이 발생합니까?
답변1
루트 파일 시스템을 초기화하고 마운트한 후 Linux는 /sbin/init
마운트를 포함하여 사용자 공간 초기화를 시작하고 수행합니다./proc
구성 rcS
이나 구성 init
읽기가 이 작업을 수행하지 않을 가능성이 높으므로 그렇게 하도록 지시해야 합니다.
쉘 프롬프트가 있는 경우 /proc
다음 명령을 사용하여 수동으로 설치할 수 있습니다.
mount -t proc p /proc
/proc
디렉토리에 무언가를 마운트하려면 먼저 디렉토리가 존재해야 합니다 . 이를 루트 이미지에 포함해야 합니다.
답변2
2) 1) - 실행 중인 프로세스에 대한 정보를 얻는 ps
데 사용되기 때문일 가능성이 높습니다./proc
1) 초기화가 이 작업을 수행할 것으로 예상되지 않았거나 초기화에 실패했기 때문입니다. 분포가 무엇인지 확인하십시오.~해야 한다부팅 시 수행할 작업 - 시스템이 시작되는 방법입니다.
시도해 볼 수 있는 것:
mount
/proc
, 예:mount -t proc proc /proc
- 두 번째 인수는 선택 사항입니다(마운트 소스로 나타남). 어떤 PID=1이 실행 중인지 확인하세요./proc/cmdline
시작 시 커널이 수신한 매개변수를 확인하십시오 . 포함되어 있는 경우 커널이 자체적으로 실행되도록 init를 구문 분석할 수 있도록init=...
이를 변경하거나 제거해야 할 수도 있습니다 ./sbin/init
이 작업은 부트로더 구성에서 수행해야 합니다(R-Pi의 경우 SD 카드 IIRC의 일부 텍스트 파일에 있음).필요한 init 실행 파일이 있는지 확인하십시오. Busybox에는 일반적으로 바이너리에 대한 많은 심볼릭 링크가 있으므로 이를 놓칠
command [args]
수도busybox command [args]
있습니다.
답변3
먼저 컴퓨터에 설치하세요./etc/inittab
즉, inittab
다음부터 시작해야 합니다.
::sysinit:/bin/mount -t proc proc /proc
이는 Buildroot 2017.02에서 수행됩니다.
답변4
나는 매우 조악한 Linux 컨테이너에서 이 문제에 직면했습니다. ps
무엇보다도 컨테이너를 처음 시작할 때 작동하지 않는다는 사실을 발견했지만 컨테이너를 다시 시작하면 모든 것이 정상입니다.
내 컨테이너 이미지에는 빈 /proc
디렉터리가 포함되어 있지 않으므로 busybox에는 proc 파일 시스템을 마운트할 장소가 없습니다. 그러나 나중에 생성됩니다(비지박스가 어느 시점에 생성한 것 같습니다). 이는 후속 재부팅 시에도 존재하며 성공적으로 마운트할 수 있음을 의미합니다.
포함할 이미지를 다시 만들었고 /proc
그 이후에는 모든 것이 잘 작동했습니다.
따라서 루트 파일 시스템에는 /proc
busybox를 마운트할 디렉터리가 있어야 하는 것으로 보입니다. 추가 작업(수동 설치, inittab 항목 등)은 필요하지 않은 것 같습니다(적어도 컨테이너에서는).
한 가지 불일치는 busybox가 마운트해야 하는 유사한 디렉터리를 만드는 데 만족해 보인다는 것입니다 /sys
.