春からずっと引きこもり(2)
2020/06/10
本題へ入る前に
  • 本レポートのタイトルは「コロナ禍でずっと在宅勤務」の意味ですが、在宅勤務以外にも生活スタイルへの影響がありました。例えば、運動不足を懸念してか、ランニングしやすい公園や河川敷の人手が増え、ランナーもマスクをすべきという風潮から昼間はランニングしにくくなりました。最近は人が少ない20:00以降に走っています。

  • あと、原則越境できないので、趣味のロングドライブも封印です。いつもだと連休中は往復2000kmレベルのドライブをするのですが、もちろん今年はNG。ガソリン代も安くなっていますがね。7月は越境OKでしょうから、そのときは人が少ないところを回るドライブがしたいですね。

Raspberry Pi に USB-HDD をマウントする
  • では本題に。前回レポートからの続きで、今回は Raspberry Pi に USB-HDD を接続して File Server にするまでを具体例を交えて説明します。File Server と言っても動画にアクセスするわけではないので USB 2.0 で問題ありません。Raspberry Pi 3 Model B で充分です。

  • OSをSDカードに焼いて(*1)シングルボードコンピューターとして起動するまでは他サイトを参照ください。またヘッドレス運用のため ssh は有効化して下さい。以下は Raspberry Pi が動作を開始し、ssh アクセスしてからの操作になります

  • まず USB-HDD を接続して デバイス名 を確認します。下記は 1TB のUSB-HDDを接続した場合です。/dev/sda1 として見えていることがわかります。
    $ sudo fdisk -l | grep /dev/sd
    Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
    /dev/sda1 2048 1953521663 1953519616 931.5G 7 HPFS/NTFS/exFAT

  • デバイス名がわかったら、次は UUID(*2) をチェックします。F218656318652835 であることがわかりました。
    $ sudo blkid /dev/sda1
    /dev/sda1: LABEL="Shared" UUID="F218656318652835" TYPE="ntfs" PARTUUID="fe7fd87b-01"

  • デバイスをマウントする前に予めマウントポイントを作成します。今回は /mnt/usb0 に USB-HDD をマウントします。
    $ cd /mnt
    $ sudo mkdir usb0
    $ sudo chmod -R 777 usb0 # これは重要。共有後アクセス拒否を起こさせないように。

  • UUIDとマウントポイントを /etc/fstab に記述し、起動時に USB-HDD をマウントできるようにします。(*3)
    $ cd /etc
    $ sudo cp -p fstab fstab.org
    $ sudo vi fstab

  • /etc/fstab 編集後です。ちょっと整形していますが、/mnt/usb0 のマウントの行を追加しただけです。もともとWindows PCに付けていた USB-HDD なので NTFSのディスクです。type に ntfs-3g を指定しています。Read/Write可能かつシンプルなオプション指定になるので、ntfs ではなく ntfs-3g がお勧めです。
    #<file_system_label>      <mount_point>  <file_system_type>  <options>         <dump> <fsck_check>
      proc                     /proc          proc                defaults          0      0
      PARTUUID=bdc805f9-01     /boot          vfat                defaults          0      2
      PARTUUID=bdc805f9-02     /              ext4                defaults,noatime  0      1
    
      UUID=F218656318652835    /mnt/usb0      ntfs-3g             defaults,nofail   0      0
    
    # a swapfile is not a swap partition, no line here
    #   use  dphys-swapfile swap[on|off]  for that
    

  • 設定は終了したので、起動時マウント確認のために再起動しましょう。
    $ sudo shutdown -r now
    ※再起動せずにマウントしたい場合は $ sudo mount -a

  • 再起動後、再度sshで接続します。マウントポイントから HDD内のデータが見えればOKです。
    $ ls -l /mnt/usb0
    合計 0
    drwxrwxrwx 1 root root 0 6月 3 08:40 MusicDb

Samba で USB-HDD を共有
  • マウントした USB-HDD を Samba で共有します。まずは Samba をインストールします。
    $ sudo apt-get install samba

  • 途中で「DHCP から WINS 設定を使うよう smb.conf を変更しますか?」と出てきますが、<いいえ> を選択します。もう名前解決にWINSは使いません

  • 次はマウントした USB-HDD を Samba で共有するための設定を /etc/samba/smb.conf に記述します。smb.conf は記述量が多いファイルのため、ミスに備えて編集前にオリジナルファイルをコピーしておきましょう。その後、編集です。
    $ cd /etc/samba
    $ sudo cp -p smb.conf smb.conf.org
    $ sudo vi smb.conf

  • /etc/samba/smb.confを編集については下記を末尾に追加します。注意点は path 指定です。素直にマウントポイント(/mnt/usb0)を記述して下さい。該当部にシンボリックリンク等を介するとアクセス拒否で悩むことになります。
    [share_data] <------------------ 共有ディレクトリ名。例では「\\ホスト名\share_data」と見える
      comment = Shared Data
      path = /mnt/usb0 <------------ 紐付けするディレクトリ名(今回はUSB-HDDのマウントポイント)
      public = yes
      read only = no
      browsable = yes
      force user = pi <------------- ラズパイのアカウントを変えていたら変更。身に覚えなければ pi
      allow hosts = xxx.xxx.xxx. <-- LANのネットワークアドレス(例: 192.168.1.)

  • 設定終了後、Samba をスタートさせます。
    $ sudo systemctl restart smbd

  • Samba スタート後、PCのエクスプローラから「\\ホスト名\共有ディレクトリ名」が見えればOKです。ホスト名の変更をしていなければ、ラズパイのホスト名は raspberrypi でしょうから、今回の設定例では「\\raspberrypi\share_data」になります。

Windows10 も Raspberry Pi もデフォルトで mDNS が動きます
  • つい先程、"エクスプローラから「\\ホスト名\共有ディレクトリ名」が見えればOK" と書きました。試すとわかりますが、ほとんどの方はアクセスできたと思います。でも不思議じゃありませんか? どうやってホスト名解決したのかと。

  • Windows10 は 1909 より mDNS機能が改善されトラブル無しで使えるようになっています。またRaspberry Piも最近のOSセットではデフォルトで mDNS を動かしているので、同一LAN内ではホスト名アクセスできるようになっています。IPアドレス割付が固定/DHCPのどちらでも関係ありません。Macは元から mDNS をサポートしているので問題無いでしょう。

  • もしアドレス指定ならOK(*4)でも、ホスト名アクセスがうまく行かない場合は、下記を確認して下さい。
    • Windows10 のバージョンが 1909 以上であること。1909 未満の場合トラブルによってアップデートがうまくいかなかった可能性が高いため、こちら等を参照して Windows10 をアップデートしてください。

    • Raspberry Pi 側で mDNS が動いていること。最近のラズパイOSでは最初から動いていますが、mDNSが動いていない場合は、下記インストール後に再起動して下さい。
      $ sudo apt-get install avahi-daemon libnss-mdns

次回はファイルのやり取りを
  • サーバの設置と設定は済みました。次回はサーバ運用がシビアでなくなるよう、PC/Server間でのファイルやり取りについて考えた点を説明します。
Notes
  • 公式サイトでOSとImage Writer 両方が扱われるようになっています。Windows10はSDカード系トラブル多いし...。
  • Universally Unique IDentifier。ソフト(OS)からオブジェクト(この場合はハードウェア)に与えられるユニークな番号。
  • 「$ sudo vi」 とエディタに vi を使っていますが、もちろん nano でも良いです。お好きなものを。
  • 固定アドレスでもアクセスできない場合は、Sambaの設定ミスが濃厚です。
Copyright(C) 2020 Altmo
本HPについて