运行 init 脚本时未列出外部存储设备

运行 init 脚本时未列出外部存储设备

我有一个 /etc/init.d 脚本,该脚本应该检测安装在 /dev/sda1 的外部驱动器,如果它在那里,它就会安装它。这在我的 odroid 设备上运行良好,具有以下规格:

pi@odroid64:~$ uname -a
Linux odroid64 3.14.65-73 #1 SMP PREEMPT Tue Aug 2 08:21:02 BRT 2016 aarch64 aarch64 aarch64 GNU/Linux

但是当我在具有这些规格的树莓派上运行相同的脚本时:

pi@box:~ $ uname -a
Linux box 4.4.13-v7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 armv7l GNU/Linux

它无法完成。通过在检测到故障时在脚本中输出,我可以看到在脚本运行时lsblk设备尚未出现。这是运行脚本时/dev/sda的输出lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
 mmcblk0 179:0 0 7.4G 0 disk 
 ├─mmcblk0p1 179:1 0 63M 0 part /boot 
 └─mmcblk0p2 179:2 0 7.3G 0 part /

lsblk这是我登录时的输出

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 111.8G  0 disk
└─sda1        8:1    0 111.8G  0 part
mmcblk0     179:0    0   7.4G  0 disk
├─mmcblk0p1 179:1    0    63M  0 part /boot
└─mmcblk0p2 179:2    0   7.3G  0 part /

因此,如果我登录后运行

sudo /etc/init.d/usbstorage restart

它按预期安装驱动器,并lsblk输出

pi@camio-box:~ $ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 111.8G  0 disk
└─sda1        8:1    0 111.8G  0 part /mnt/usbstorage
mmcblk0     179:0    0   7.4G  0 disk
├─mmcblk0p1 179:1    0    63M  0 part /boot
└─mmcblk0p2 179:2    0   7.3G  0 part /

并按预期安装驱动器。

所以我认为我的初始化脚本上有错误的标头,就像我没有等待系统在运行脚本之前检测到外部驱动器一样。这是我的脚本的标题。

#! /bin/bash
### BEGIN INIT INFO
# Provides:          usbstorage
# Required-Start:    $local_fs $remote_fs $network $named $portmap
# Required-Stop:
# Default-Start:     S
# Default-Stop:      0 6
# Short-Description: Mounts an external drive to /mnt/usbstorage for the cam process
### END INIT INFO

我究竟做错了什么?

答案1

我并没有确切地弄清楚出了什么问题,但我发现了一种更简单的方法来完成同样的事情。只需将此行添加到/etc/fstab

/dev/sda1 /mnt/usbstorage auto defaults,user,rw,uid=pi,gid=pi 0 0

关键字auto将自动检测设备格式,这就是我的上一个脚本所做的。显式设置 uid 和 gid 使其也适用于 FAT 格式的驱动器。

相关内容