anatsuk1のウェブログ

ブログを書いてみたい!

macOSでSSH接続を記憶する

SSHで簡単にログイン

LANにたくさんデバイスを接続したい。サーバーでファイルサービスを提供している。ラズパイとサーバーをコマンド実行しているときにふと、ユーザー名を入力するのが、ちと手間かな。

~/.ssh/configを使ってみる。

2回目以降のパスワード入力を省略して便利に。

controlmaster auto
controlpersist 30
controlpath  ~/.ssh/ControlMaster-%r-%h.%p

ファイルサーバとラズパイの設定。

Host <FileServer>
    HostName <FileServer>.local
    User <UserId>
    Port 22
    TCPKeepAlive yes
    IdentitiesOnly no

Host raspberrypi
    HostName raspberrypi.local
    User pi
    Port 22 
    TCPKeepAlive yes
    IdentitiesOnly no 

これで、ssh <FileServer>とか、ssh raspberrypiでユーザ名の入力なしにログインできる。うーん便利。

ふたつターミナル起動して、ふたつめはパスワード入力は省略されるよ。

自宅サーバを起動する

自宅サーバ

サーバー。欲しいサービスを考えてみる。

ファイルサーバー、DHCP/DNSサーバー、ネットワークハブ、開発サーバー、バックアップサーバー、いろいろある。ゆっくり俺のガジェットに合わせて構築して行こう、と思う。

ハードウェア

NUCは待機電力が魅力的だが、PC自作は、CPU、ストレージ、構成を考えると楽しい。そこで、Mini PCベアボーンで、俺にあったCPUとSSDを考える。AMDが好きで、いま話題のRyzenで組んでみる。

TSUKUMO eX.は、パーツをまとめて購入できて便利。昔から使っている。抜け目のない店員にWindows10の購入を勧められた、Linuxですよと説明して、納得させた。OSは Ubuntu Serverで、サービスを追加していこう。

構成

簡単に組み立ては完了。CPUクーラーの向きに注意。 メモリスロットが硬くて、入りにくい人もいるので注意。

セットアップ

Ubuntu 20.10 groovyをDVDドライブでインストール。 インストールウィザードを使って、デフォルト値を使用するが良い。

タイムゾーン

ユニバーサルタイムと日本は時差がある。日本のゾーンを設定する。

sudo timedatectl set-timezone Asia/Tokyo

固定IP

マシンネームでアクセスするが、サーバーは固定IPが良い。 Ubuntuのドキュメントを見た。

Network - Configuration | Server documentation | Ubuntu

  • Dynamic IP Address Assignment (DHCP Client)
  • Static IP Address Assignment

インストールウィザードでのネットワーク設定を見る。

$ cat /etc/netplan/00-installer-config.yaml 

DHCPを使用してる。

# This is the network config written by 'subiquity'
network:
  ethernets:
    enp2s0:
      dhcp4: true
  version: 2

サーバーにIPを固定で付ける。

新しく/etc/netplan/99_config.yamlを次の記述で作る。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp2s0:
      dhcp4: false ← 00-installer-config.yamlでの設定を上書き
      addresses:
        - 192.168.10.2/24
      gateway4: 192.168.10.1
      nameservers:
          addresses: [192.168.10.1]

名前解決

マシン名でサービスを使いたい!

Avahiインストール。

$ sudo apt install avahi-daemon

最初の設定は完了。 次はファイルサーバーかな?

Raspberry PiでTime Machine

Time Machineの音に気が付く

Time Machineを、ネットワークHDDにバックアップしている。 HDDはウェスタンデジタル製で信頼がおけ、容量がおおきい。

ネットワークHDDが、カリカリとうるさく、Time Machineしている瞬間が悪くわかる。できればSSDにしたいと静かな時間に思っていた。深夜に布団の中で目を閉じていると気になる。

SSDとラズパイで、Time Machineを思いついた。

システム構成

Raspberry Pi 4Bソフトウェア構成

セットアップ

USBメモリSSDMacでフォーマットするよ!

MacUSBメモリSSDMac OS拡張(大文字/小文字を区別、ジャーナリングでフォーマットしてね。

Sambaのセットアップ

インストールは、Raspberry PiでホストPCとファイルを共有するを見てね。

avahiをインストールするよ。もしかしたらいらない?かも。

sudo apt install avahi

[global]セクションに追加するよ。

   vfs objects = catia fruit streams_xattr
   fruit:metadata = stream
   fruit:encoding = native

vfs_fruitの詳しいページ。 www.samba.gr.jp

[timemachine]セクションを追加するよ。

  • pathには、USBメモリSSDのマウントパスを書くよ。
  • valid usersには、MacからTime Machineのときに使うユーザー名を書くよ。Sambaに登録したユーザーだよ。
  • browsableはFinderで非表示にしたいのでnoだよ。
  • writableは Time Machineで書き込むのでyesだよ。
  • fruit:time machineはTime Machineなのでyesだよ。
[timemachine]
   path = /media/data
   valid users = pi
   browsable = no
   writable = yes
   fruit:time machine = yes

HFS+のファイルシステムをラズパイにインストールする。

sudo apt install hfsplus hfsutils hfsprogs

UUIDを調べる!

USBメモリSSDのUUIDをコマンドで調べるよ。

lsblk -o +UUID

UUIDが解った!

NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT UUID
sda           8:0    1   59G  0 disk            
└─sda1        8:1    1   59G  0 part /media/data  AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE ← UUIDだよ。実際はもっと複雑な数字とアルファベットよ。

自動でマウント!

マウントはmountコマンド。だけど再起動のたびにコマンド実行は面倒ですね。

そこで自動でマウントする方法を教えます。 /etc/fstabにマウント情報を追加するよ。 fstabを編集するので、スーパーユーザーでnanoコマンドを実行するよ。

sudo nano /etc/fstab

書き換え後はこうだよ。

proc            /proc           proc    defaults          0       0
PARTUUID=7a479fa0-01  /boot           vfat    defaults          0       2
PARTUUID=7a479fa0-02  /               ext4    defaults,noatime  0       1
UUID="AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"             /media/data    hfsplus force,defaults,nofail   0       2 ← この行を追加する。

書いてある内容を伝えたい!

  • UUID
    USBメモリSSDを特定する固有のIDだよ。UUIDで指定すると、USBメモリを挿入するポートを変えても、自動でマウントできるよ。お勧め。
  • /media/data
    マウントパスだよ。マウントパスにはあらかじめディレクトリを作成しておく必要があるよ。
  • hfsplus
    ファイルフォーマット。Mac OS拡張(大文字/小文字を区別、ジャーナリングはこの指定でいいよ。一般にはHFS+(読み方はエイチフフエスプラス)というよ。
  • force,defaults,nofail
    マウントオプションだよ。 HFS+を書き込み可能にマウントするには、force が必要だよ。 マウント失敗してもブートしたいのでnofailをつけたよ。
  • 0
    ここは0で良いよ。
  • 2
    これは重要だよ。ブート時にfsckをするよ。fsckをすると、HFS+は書き込み可能でマウントできるよ。

デバッグ

起動ログを確認したよ。HFS+が書き込み不可能でマウントされた場合は、コマンドを実行して、理由を起動ログで調査したの。

sudo dmesg

iPad miniでApple Pencil

Apple Pencilを購入

ブックオフで発見

だんだん晴れて、家の外が明るくなってきた、衣替えに良い日。 夏と冬の洋服をタンスの引き出しから入れ替える。お別れするのが寂しい洋服がたくさん、リサイクルするのが良い。

買取見積もりしている時間で、ガジェットを眺めていると、Apple Pencilがとてもお手頃な値段で展示されていた。 Apple Pencilの箱はとても綺麗にみえ、注意書きの「折れ、キズ」は、それほど気にならない。

店員に、おどろく。

ショーケースの中にあり、じっくり眺めていると手に取りたい。 優しそうなショップ店員に、中身を確認したいと告げる。 ケースを担当している、美人だが愛想の無い店員に、バックヤードで指示があり、引継ぎされた。 注意書きの「折れ、キズ」は、箱の凹みと思ったので、「折れ、キズ」の場所を質問をする。愛想の無い店員は、箱の中を確認するので一緒にどうぞと誘ってくる。

状態の確認で、さらにビックリする

愛想の無い店員は、行き先を告げずにキョロキョロと辺りを見渡しながら歩き出す。物が置いてあるレジの方へ進んだが、そこでは確認できないと思ったのか、クローズしていたレジに移動し、俺をオープンしたレジへ目配せする。

愛想の無い店員は、箱を乱暴を開いて、確認を俺にうながす。俺は、Apple Pencilを念入りに確認して金属の光沢が輝きが素晴らしいと思う。未使用品に見えたので、お買い得だと思う。

「折れ、キズ」はどこにあるのか質問すると、「無い」。

無愛想な返答にガッカリした。こいつは日常でもカスだろう。

もう一度、Apple Pencilを確認して、「折れ、キズ」を探してみた。

価格にニッコリ

購入することを無愛想店員に告げる。 愛想の良い店員がキャッシャーを操作し、展示の価格から、さらに40%ダウンの価格を告げた。

どうやら割引があるらしい。急いでお会計を済ませブックオフを後にする。

後日の話

ペアリング に問題があるApple Pencilで返品する。

Raspberry PiでMicroSDを使いたい

SDカードリーダーの購入

2枚のmSDを同時に書き換えたい。ビックカメラのカメラ売り場にある、mSDカードとカードリーダーを詳しく形状、仕様、を見ていたら、UHS-IIのカードリーダーが買いたくなった。機能を確かめると mSDを同時書き換え可能なリーダーで安心する。カラーは青が良い。残念なことに1つはSDのデュアルスロット。変換アダプターを使って対応する。

帰宅した後、風見鶏の楽天市場点で、有名なLexorが販売しているmSDとSDの同時読み書き可能な、形が三角形でカッコいいリーダーを購入する。こちらはUHS-I対応です。

カードのフォーマット

リムーバルディスクはexFATでフォーマットしたい。 fdiskとmkfsコマンドでする。

exFATモジュールをインストール

Raspberry Piは標準ではexFATファイルシステムを認識しない。モジュールをインターネットからインストールする。

コマンド実行

sudo apt install exfat-fuse exfat-utils

mSDのデバイスの名前を調べる

lsblkコマンドでmSDのデバイスの名前を調べる。パーティションのUUIDを知りたい、oオプションで指定する。初期表示に追加、+指示を使う。

コマンド実行

lsblk -o +UUID

コマンド出力(一部マスクする)

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT         UUID
sda           8:0    1 xxx.xG  0 disk 
mmcblk0     179:0    0  59.6G  0 disk 
├─mmcblk0p1 179:1    0   256M  0 part /boot              xxxx-xxxx
└─mmcblk0p2 179:2    0  59.4G  0 part /                  xxxxxxxx-yyyy-xxxx-yyyy-xxxxxxxxxxxx

パーティション新規作成

パーティションを作成して、フォーマットの準備をする。 fdiskコマンドは対話式で、指示を複数回、入力する。

コマンド実行

sudo fdisk /dev/sda

コマンド出力

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): 

fdiskコマンドでの対話

o を入力して、パーティションテーブルを作成
Command (m for help): o
Created a new DOS disklabel with disk identifier 0x8645c72b.

m を押して、helpを確認してみると、 o 指示はDOSパーティションテーブルの作成と分かる。

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table
n を入力して、パラメータを対話式に選択して、パーティションを新規作成
Command (m for help): n

プライマリパーティションに設定

デフォルトを選択するので、文字入力なしにリターンキーを押す。

Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.

パーティション番号を1、開始セクタ、終了セクタを最大する

デフォルトを選択するので、文字入力なしにリターンキーを押す。

Partition number (1-4, default 1): 
First sector (2048-60825599, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60825599, default 60825599): 
Created a new partition 1 of type 'Linux' and of size XX GiB.

パーティション番号1にファイルシステムシグネチャが含まれると、警告が表示される。入力は y でも n でもどちらでも良い。 後ほどパーティションをフォーマットするので。

Partition #1 contains a exfat signature.
Do you want to remove the signature? [Y]es/[N]o: y
The signature will be removed by a write command.
t を入力して、パーティションタイプをexFATにする
Command (m for help): t

7を入力して、HPFS/NTFS/exFAT(0x07)を選択する。

Hex code (type L to list all codes): 7
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.
w を入力して、変更をmSDに反映。
Command (m for help): w
The partition table has been altered.
Syncing disks.

パーティションをフォーマット

作成したパーティションexFATでフォーマット。LABELを付けて、PCでのmSDの名前にする。

コマンド実行

sudo mkfs.exfat /dev/sdb1 -n "SONY ALPHA7III"

コマンド出力

mkexfatfs 1.3.0
Creating... done.
Flushing... done.
File system created successfully.

フォーマット指定誤り

コマンドで誤ってデバイスを指定すると、デバイスがフォーマットされる。パーティションテーブルは上書き破壊される。

sudo mkfs.exfat /dev/sdb -n "SONY ALPHA7III"

回復したいので、ローレベルフォーマットをddコマンドで実施して、fdiskでパーティションテーブルを作成する。

sudo dd if=/dev/zero of=/dev/sda bs=16M
sudo fdisk /dev/sda 

Raspberry PiでホストPCとファイルを共有する

Sambaの設定

ホストPCとラズパイでファイル移動を頻繁にするので、"pi"ユーザーのHomeディレクトリへホストPCのFinderからアクセスする。

  • ログインしたユーザーのHomeディレクトリを共有
  • Guestユーザーのログインを禁止
  • Sambaに"pi"ユーザーを追加
  • Sambaサービスを再起動

設定を変更する

Sambaの次の設定ファイルを書き換える。

/etc/samba/smb.conf

設定ファイルは、セクション、属性値と設定値、を記述する。

フォーマットは次のとおり。

[セクション] ←  セクションの開始。
    属性値 =  設定値

設定ファイルには、ファイルサーバーへログイン時に使用するユーザー、公開ディレクトリのパス、ファイル書き換え可能、などをカスタマイズできる。俺はいつも、nanoコマンドで設定ファイルを開いている。

コマンド例

sudo nano /etc/samba/smb.conf

書き換え場所

[global]セクション

bad userをNeverへ変更。Sambaに登録されていないユーザーでのログイン試行を失敗させる。デフォルトの記述ではGuestユーザーでのログインに置き換えていた。

map to guest = bad user
↓
map to guest = Never

guest ok = 0を追加 ゲストログインを禁止する。記述がないデフォルトでは許可されていた。

guest ok = no
[homes]セクション

yesをnoへ変更。書き換えを許可する。デフォルトでは読み出しのみ許可されていた。

read only = yes
↓
read only = no
SambaのユーザーDBへ"pi"ユーザーを追加

ラズパイのデフォルトユーザーアカウント"pi"をSambaに加える。

pdbedit -a pi

Sambaが、新しいパスワードを問い合わせるので、ラズパイのLoginパスワードをタイプです。

Sambaサービスを再起動

コマンドを実行!

sudo systemctl restart smbd.service
ご参考に

SambaをUbuntu 12.04で構築した手順を丁寧に説明してる。 ただし、内容は古い。

sambaサーバによるファイル共有環境の構築手順メモ

Raspberry Piのマイ設定

i18n設定

raspi-configコマンドでTime Zoneの設定

時刻の記録を正確に、Time Zoneは日本在住ならばTokyoに設定が良い。

Localeは初期設定は、C.UTF-8とen_GB.UTF8でMade In UKを感じる。こちらは、問題が起きたら変更することにしそのままにしておいた。

4. Localisation Options

  • I1 Change Locale
  • I2 Change Time Zone


WiFi国選択

WLANの国を設定。日本固有の5GHz電波帯が一部ありWiFi使用では設定する必要あり。

4. Localisation Options

  • I4 Change WLAN Country

WiFi設定

Atermでの5GHzのSSIDと暗号化キーを入力した。コピペできたかな!?

2. Network Options

 

f:id:anatsuk1:20201023010011p:plain

WiFi設定

パスワードの変更

初期パスワード"raspberry"では心配。でも、パスワードは考えるのは難しい。そこで、pwgenコマンドで作った。便利なコマンドを開発したtytsoに感謝する。

sourceforge.net

 

WiFiモジュールOFF

WiFiは便利なのだけど、うちではリンク速度が24 Mb/sで遅い。有線LANでルーターと接続する。不要なWiFiを使わないOFFの設定にしたい。消費電力が気になるので、ドライバをロードを無効にする。

リンク速度確認コマンド

iwconfig

WiFiドライバロード無効

ファイルの名前: /boot/config.txt
追加する設定: dtoverlay=disable-wifi

一時的なOFF

一時的な無効なので、ラズパイを再起動するとONになる。

sudo ifconfig wlan0 down

BluetoothモジュールOFF

BletoothをOFFにすると、もっと消費電力を減らせる。

ファイルの名前: /boot/config.txt
追加する設定: dtoverlay=dtoverlay=disable-bt

Raspberry Pi OSのサービスがBTを使用している。このままではサービス起動に失敗するので、サービスを削除する。

sudo systemctl disable hciuart