mount -a는 작동하지만 부팅 시 "UUID를 찾을 수 없음"으로 인해 실패합니다.

mount -a는 작동하지만 부팅 시 "UUID를 찾을 수 없음"으로 인해 실패합니다.

방금 서버를 Debian Buster(Raspbian)로 업그레이드했습니다. 그런데 지금 부팅하면 USB 하드 드라이브가 마운트되지 않습니다. 시작 화면에 다음과 유사한 내용이 표시됩니다.

mount: /media/PiHDD: can't find UUID=<string>

수동으로 설치하면 sudo mount -a모든 하드 드라이브가 마운트됩니다.

다음은 다음과 /etc/fstab같습니다

proc            /proc           proc    defaults          0       0
/dev/mmcblk0p1  /boot           vfat    defaults          0       0
/dev/mmcblk0p2  /               ext4    defaults,noatime  0       0
UUID=<string> /media/PiHDD ext4 defaults,noatime 0 0
UUID=<string2> /media/PiHDD2 ext4 defaults,noatime 0 0
...

Buster로 업데이트하기 전까지는 잘 작동했습니다.

PARTUUID또한 의 출력을 기반으로 또는 를 사용하여 하드 드라이브를 식별하려고 시도했지만 등을 사용하여 부팅할 때도 실패했습니다.LABELblkidcan't find LABEL

저는 systemd를 사용하지 않습니다(PID 1은 초기화되어 file /sbin/init실행 파일을 제공합니다). /sbin/init --version. SysV init version: 2.93최신 (테스트) 커널로 업데이트했습니다 4.19.57-v7+.

부팅할 때 USB 장치를 마운트하기 전에 시스템이 이를 볼 것이라고 생각했습니다. New USB device found설치가 실패하기 전에 볼 수 있습니다 . Attached SCSI disk장치를 찾은 후에도 이 메시지가 표시 되지만 설치 실패 이전인지 이후인지 확실하지 않습니다. 모든 것이 있지만 /var/log/syslog어떤 이유로 mount… can't find UUID시작 시 표시되는 오류는 그렇지 않습니다 /var/log.

시스템 시작 시 자동으로 USB 하드 드라이브를 마운트하도록 하려면 어떻게 해야 합니까?

다음은 내용입니다 /etc/inittab.

# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  <id>:<runlevels>:<action>:<process>
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty --noclear 38400 tty1 
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3


#Spawn a getty on Raspberry Pi serial line
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

답변1

sysvinit에는 "sysinit", "bootwait" 및 "boot"(/etc/inittab을 통해)라는 세 가지 초기 부팅 스크립트가 있습니다. 런레벨을 시작하기 전에 장치를 설치하고 모듈을 로드하는 등의 작업을 수행합니다.

루트가 이미 설치되어 있으면 /proc가 필요한 첫 번째 루트입니다. /sys도 가능합니다.

나중에 UUID 장치를 설치해 보세요.mount -a이는 비트를 분리하고 /etc/fstab에서 (no) 자동 옵션을 다르게 배포 해야 함을 의미합니다 . /proc 및 외부 저장소는 실제로 동일한 설치 단계의 일부가 아닙니다.

systemd와 모든 "종속성"을 생각해 보십시오.

UUID-USB 장치를 장착하려면 특정 모듈(드라이버)이 필요합니다.

(initrd를 사용하면 좀 더 복잡해집니다. "press tagged" 장치를 기다리는 동안 어떻게 멈추는지 알고 있습니다.)


변화하려면 살펴보아야 합니다 /etc/inittab. 내 대사 중 일부는 다음과 같습니다.

...
# Simple "old Linux" inittab from manpage:
# one (default) runlevel, 4 gettys, one bootwait rc-script
id:2:initdefault:

# sysinit/boot-scripts, they run first
#si::sysinit:/etc/sysinit.init 

bw::bootwait:/etc/boot.init

# b::boot:/etc/rc
...

이것은 /etc/boot.init("bootwait" 스크립트)입니다:

#! /bin/bash
# Boot script, as defined in sysv inittab

echo  "$0: starting...."

mountpoint /proc || mount -v -t proc  Proc /proc   
mountpoint /sys || mount -v -t sysfs Sys  /sys 

# root ro -> rw ?
# fed is ro, arch rw...
mount -o remount /

# Modules: for keyboard
modprobe -a xhci-pci usbhid hid-generic         # i2c-hid 

echo 0 > /sys/devices/virtual/graphics/fbcon/cursor_blink

echo "...$0 done"

sysvinit으로 부팅할 때 이것이 필요합니다. 중요한 부분은 바로 키보드 모듈입니다! 키보드의 전원이 꺼지면 아무것도 작동하지 않습니다! proc과 sys를 마운트하는 것은 약간 사치스러운 일입니다. 이 두 가상 장치를 수동으로 마운트하는 방법을 참고하세요. /etc/fstab을 사용해 보았지만 별 의미가 없습니다. 최소한의 명령은mount -t proc none /proc

mountpoint ... || mountsystemd initrd가 이미 proc, sys 및 run(tmpfs)을 설치했기 때문에 이 명령이 필요합니다 . "설치된" 오류가 아니라 올바른 출력을 보고 싶습니다. 이것은 시스템화되어 있지 않지만 간단한 스크립트를 사용하여 기본 사항을 완료할 수 있습니다.

답변2

지금은 SysV가 제대로 유지 관리되지 않는 것 같습니다. systemd로 옮겼고 구성을 변경하지 않고도 드라이브가 예상대로 부팅 시 마운트됩니다.

Debian/Raspbian의 FWIW에서는 방금 그렇게 했고 sudo apt-get purge sysvinit-core자동으로 libnss-systemdsystemd-sysv.

관련 정보