首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >挂载-a工作,但在引导时失败,“找不到UUID”

挂载-a工作,但在引导时失败,“找不到UUID”
EN

Unix & Linux用户
提问于 2019-07-10 08:15:40
回答 2查看 3.4K关注 0票数 1

我刚刚将我的服务器升级到Debian (Raspbian)。然而,当我现在启动,我的USB硬盘驱动器没有安装。我在我的飞溅屏幕上看到了这样的东西:

代码语言:javascript
复制
mount: /media/PiHDD: can't find UUID=

如果我手动安装sudo mount -a,那么所有的硬盘驱动器都会被挂载。

以下是/etc/fstab

代码语言:javascript
复制
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之前很好。

我还根据PARTUUIDLABEL的输出,尝试使用blkidD5识别硬盘驱动器,但这些硬盘在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的内容。

代码语言:javascript
复制
# /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
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-07-20 04:51:34

我看上去SysV现在维护得很差。我移到了systemd,并且没有任何配置更改,我的驱动器现在按预期在引导时挂载。

FWIW在Debian/Raspbian上,我刚刚做了sudo apt-get purge sysvinit-core,它还自动安装了libnss-systemdsystemd-sysv

票数 0
EN

Unix & Linux用户

发布于 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。以下是我的一些台词:

代码语言:javascript
复制
...
# 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“脚本):

代码语言:javascript
复制
#! /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,但是有了一个简单的脚本,您就可以完成基本任务。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/529342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档