Linux 시작 중에 busybox를 사용하여 파일 시스템을 마운트할 때 오류가 발생했습니다.

Linux 시작 중에 busybox를 사용하여 파일 시스템을 마운트할 때 오류가 발생했습니다.

저는 busybox를 init로 사용하는 임베디드 Linux 시스템을 개발 중입니다.
시스템이 시작되면 다음과 같은 두 가지 오류 로그가 나타납니다.

[    3.901185] Run /linuxrc as init process
[    3.909861] process '/bin/busybox' started with executable stack
mount: mounting devpts on /dev/pts failed: No such file or directory
mount: mounting tmpfs on /dev/shm failed: No such file or directory

Linux에 로그인하고 "mount" 명령을 실행했을 때 다음 메시지를 받았습니다.

# mount
......
devtmpfs on /dev type devtmpfs (rw,relatime,size=41768k,nr_inodes=10442,mode=755)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,relatime,mode=755)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600,ptmxmode=000)  <<<<
tmpfs on /dev/shm type tmpfs (rw,relatime)   <<<<

놀랍게도 그 곳에는 이미 설치되어 있었습니다!
busybox가 사용하는 /etc/fstab은 다음과 같습니다:

# cat /etc/fstab
# <file system> <mount pt>      <type>  <options>       <dump>  <pass>
/dev/root       /               ext2    rw,noauto       0       1
proc            /proc           proc    defaults        0       0
devpts          /dev/pts        devpts  defaults,gid=5,mode=620,ptmxmode=0666   0       0
tmpfs           /dev/shm        tmpfs   mode=0777       0       0
tmpfs           /tmp            tmpfs   mode=1777       0       0
tmpfs           /run            tmpfs   mode=0755,nosuid,nodev  0       0
sysfs           /sys            sysfs   defaults        0       0

시스템에 나타나는 /dev/pts 및 /dev/shm에 약간의 지연이 있을 수 있다고 생각하여 busybox의 mount.c에 지연을 추가했지만 동일한 결과를 얻었습니다.실수!

또한 이 두 줄을 파일 끝으로 이동하여 /etc/fstab 편집을 시도했지만 동일한 결과를 얻었습니다.실수!

그런 다음 부팅 시 bash로 이동하도록 커널 명령줄을 "init=/bin/bash"로 변경했습니다.
Bash에서 /dev/pts 및 /dev/shm을 확인했는데 거기에 없습니다!

수동으로 설치하려고 했지만 여전히 "해당 파일이나 디렉터리가 없습니다"라는 오류가 발생했습니다.

왜 이런 일이 발생하는지 전혀 모르겠습니다. 무해해 보이지만 시스템에서 "오류 메시지"를 보는 것이 짜증스럽기 때문에 이를 파악하고 수정하고 싶습니다.

답변1

Artem에서 제안한 테스트를 통해 오류의 근본 원인과 해결 방법을 찾았습니다.

busybox는 시스템에서 init 프로세스로 시작되면 먼저 /etc/fstab해당 파일을 기반으로 파일 시스템을 확인하고 마운트를 시도합니다. Busybox를 통해 설치할 수 있는 방법이 실제로 없었 /dev/shm거나 있었기 때문에 Busybox는 이에 대해 불평했습니다./dev/pts

그런 다음 및 를 /etc/init.d/rcS포함한 여러 파일 시스템도 마운트합니다 . 먼저 파일 시스템을 마운트하기 전에 . 그렇기 때문에 오류가 보고되지 않고 주석 처리되기도 합니다 ./dev/shm/dev/ptsrcSmkdir /dev/pts/dev/shm/etc/fstab

rcS이제 마운트를 사용하고 /etc/fstab.

관련 정보