我刚刚将我的服务器升级到Debian (Raspbian)。然而,当我现在启动,我的USB硬盘驱动器没有安装。我在我的飞溅屏幕上看到了这样的东西:
mount: /media/PiHDD: can't find UUID=如果我手动安装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= /media/PiHDD ext4 defaults,noatime 0 0
UUID= /media/PiHDD2 ext4 defaults,noatime 0 0
...在升级到Buster之前很好。
我还根据PARTUUID或LABEL的输出,尝试使用blkid或D5识别硬盘驱动器,但这些硬盘在can't find LABEL引导时也失败,等等。
我没有使用systemd (PID 1是init,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的任何文件中。
How我能让我的系统在引导时自动挂载我的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:
# :::
#
# 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发布于 2019-07-20 04:51:34
我看上去SysV现在维护得很差。我移到了systemd,并且没有任何配置更改,我的驱动器现在按预期在引导时挂载。
FWIW在Debian/Raspbian上,我刚刚做了sudo apt-get purge sysvinit-core,它还自动安装了libnss-systemd和systemd-sysv。
发布于 2019-07-10 10:49:13
对于sysvinit,您有三个早期启动脚本:"sysinit“、”boot three“和"boot”(via /etc/inittab)。它们在启动运行级之前安装设备和加载模块等。
根已经挂载,/proc是第一个需要的。/sys可能也是。
Try稍后挂载UUID设备。这意味着您必须稍微拆分一下mount -a,并以不同的方式分配/etc/fstab中的(No)自动选项。/proc和外部存储实际上不属于相同的挂载步骤。
想想systemd和所有这些“依赖关系”。
它必须是一些模块(驱动),这是需要的,才能安装UUID-USB设备。
(如果使用initrd,它会变得有点复杂。我知道它怎么会挂着等待一个“标签”设备)
要进行更改,您必须查看/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 ... || mount命令,因为系统initrd已经安装了proc、sys和run (tmpfs)。我不想看到“已经挂载”错误,而是一个正确的输出。这不是systemd,但是有了一个简单的脚本,您就可以完成基本任务。
https://unix.stackexchange.com/questions/529342
复制相似问题