initスクリプトを実行すると外部ストレージデバイスが一覧表示されない

initスクリプトを実行すると外部ストレージデバイスが一覧表示されない

/dev/sda1にマウントされた外部ドライブを検出し、そのドライブがある場合はマウントする/etc/init.dスクリプトがあります。これは、次の仕様の私の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

ただし、次の仕様でRaspberry Piで同じスクリプトを実行すると、次のようになります.

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形式のドライブでも機能します。

関連情報