- 以前から稼働しているサーバーと同じユーザー名 =UID で操作を統一したい
- Raspbian を microSD から元々の USBハードディスクに移行する
- できるだけ過去の蓄積データを継続で利用したい
モニタの 3.5インチLCDディスプレイがセットアップできているので、最低限のパッケージの導入から進めようと考えています。
なんてったって最大の問題は、勝手にアップデートされてしまい、壊れてしまうことです。一般的な Linux ってインタフェースが変更になるような大きなパッケージ更新については、意識してアップグレードしない限り実行されないと思ってました。色々なディストリビューションとの長い歴史の中での経験則ですが、Raspberry pi の Raspbian に関しては経験が活きない異端児なのかもしれませんね。
デスクトップとしてセットアップして、サーバーとして使うことが想定外の使い方なのでしょうね。うぅ〜ん困ったものです。何を行えば勝手な更新が止められるのか不明です。
壊れても短時間で復旧させられるように、情報を整理してまとめておいて、機械的な流れで復旧作業できる環境を作っておく必要がありそうです。
Raspbian は、操作を全て pi ユーザーの UID : 1000 に統一して、構成されています。色々なディストリビューションが一般的に最初のユーザー登録で、UID : 1000 から登録されますので、例えば既に稼働しているサーバーは sunao ユーザーを UID : 1000 に登録して運用しています。
何が問題かというと、大量に管理しているデータを、各サーバー間で自動転送して、バックアップしながら管理している事を考えたとき、 rsync で単純にコピーすると各ファイルのオーナーは UID の番号で管理されているので、同じ UID なのにサーバーが変わるとファイルの所有者名が異なって扱われてしまう事になります。
ネット共有ディスク samba の扱いでも同様に、ファイル所有者 UID の扱いが問題として発生します。そこで、再セットアップ中のラズパイ3 で、ユーザーファイルを vipwコマンドで編集を行い pi ユーザー名の箇所を sunao ユーザー名に変更してみました。ただし、グループファイルは、pi グループが色々な箇所で定義されているようなので、不具合が出る可能性が高く、そのままの状態です。
sunao – uid:1000 / pi – gid:1000
pi – uid:1001 / pi – gid:1000
と変更してみました。
次に microSD から USBディスクに移行する作業は、実機のラズパイ3 上では出来ないので、Linux が稼働しているノートパソコンで作業しています。 microSD をラズパイ3 から取り出して、USBディスクと一緒にノートパソコンに装着し、一応コピー元とコピー先のファイルに関しては、fsckコマンドでエラーがない、あるいはエラーの修復を行った後に、両方のファイルをマウントして作業しています。
microSD (8GB) に作られている Raspbianシステムを、外付けの USBディスクに移しますが、移行先は、既に利用していた USBディスクなので、パーティション構成や今まで使っていたデータ自体も入ったままになっています。移行するのは新しく再セットアップした microSD のパーティション2 から 外付け USBディスクのパーティション2 へコピーが終われば完了です。
オプションに –delete を追加した rsyncコマンドでコピーします。既に作業に使用するマウントポイントは作成されていたものとしています。
ノートパソコンに装着すると自動マウントされてしまうので、適切にアンマウントして、次のように作業します。
# mount /dev/mmcblk0p2 /mnt/work ……microSDのパーティション2 # mount /dev/sdc2 /mnt/bkup ……USBディスクのパーティション2 # rsync -av --delete /mnt/work/ /mnt/bkup/ ……システムのコピー # umount /mnt/work # umount /mnt/bkup # mount /dev/mmcblk0p1 /mnt/work ……USBディスクから読むための修正 # cd /mnt/work # ls ……bootディレクトリの確認 # vi cmdline.txt ……次で項目で説明しているのと同じ修正を行います # cd # umount /mnt/work
さらに修正が必要なのは、microSD からコピーされた USBハードディスク上に記述されているパーティションのマウント情報ですが、正常に立上げが行われた時には、 /etc/fstab に対応するファイルになります。
今回の場合は、USBディスクのパーティション2 の etc ディレクトリに置かれているので、自分自身のパーティションが、ルートファイルシステム( / )としてマウントできるように、指定の記述方法は、 /dev/sda2 でも blkid でリストされた UUID= でも PARTUUID= でも、ディスクのパーティションが識別できればマウントされるので、そのように修正します。
# mount /dev/sdc2 /mnt/work # vi /mnt/work/etc/fstab proc /proc proc defaults 0 0 PARTUUID=bcacf1da-01 /boot vfat defaults 0 2 UUID=86782691-13d8-429a-a015-3e010d6e7248 / ext4 defaults 0 1 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that # umount /mnt/work
作業していた microSD と USB外付けディスクをノートパソコンから外して、ラズパイ3 に装着して電源を入れると、USBディスクからの立上げが行われます。
$ cd LCD-show/
$ vi cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 console=ttyAMA0,115200 root=/dev/sda2 rootfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo