【RaspberryPI】茄子じゃなくてNASの話
たまには鷹富士茄子担当ぽいやつ載せないとなと回してみたら出てきたの図。
はじめに
せっかく鷹富士茄子メインぽい新年ライブ(HNY)が開催されていたのに両日見てなかったので、なんかそれっぽい事をしたいと思った(FES楓さん引く前)。
そこで年末に大掃除というものをした際、Raspiと使っていないHDDを見つけたことを思い出し、使っていないものを有効に活用しようと考えついてしまった。
流石に9年くらい続いているコンテンツだし、NASと(鷹富士)茄子を引っ掛けたなにかしらを書いている人いるんだろうなぁと、てきとーに調べてみた所、こんなものしか見つからなかった。やる気出してよ茄子P(by 茄子P)。
これなら私が唯一の茄子(NAS)Pになれるなぁとか、一般的なアイマスおじさんはNASとか使ってるんだろうか?とか思いつつ、RaspiでNAS組んでみた話。
新年にするようなことなのかは不明だし、そもそもこのブログのテーマに沿わない記事(not ミリオンライブ)になってる。
そもそも2021年になってあけおめ〜とした後、不良漫画とかこれとか、普通の記事を書いてない気もする。
多分需要はないので細かくは書かないつもり。
やりたいこと
- TimemachineをいちいちHDD接続しなくとも開始できるようにしたいよね
- せっかくだからバックアップ用のファイルサーバほしいよね
- 鷹富士茄子とNASを結びつけたペンギンさんになりたい。
- 「鷹富士茄子 NAS」とか「鷹富士NAS」で検索上位に来たら勝ち。
仮に見つけられなかっただけで既にNASPいたら、「茄子じゃなくてNASですよ」と最初に言い出した田中琴葉P(でもあり萩原雪歩P)であると主張すれば第一人者になれる気がする。
この理屈で行くとみんなオンリーワン。
使ったもの
- Raspberry PI 2 Model B (一家に一台置いてあるやつ)
- HDD 2台 (家庭で収穫できるBuffaloの2TBと1TBのHDD)
- LANケーブル (家庭で収穫できるCAT5ケーブル)
- RasPI用電源 (使わなくなったmicroUSBのやつ)
- MacBookPro (RasPI操作用。最近BigSurにした)
でも、今回は自宅にあるものだけで簡単に組むことができるのでコスト0!すごい!(手間とか速度は考えないものとする)
参考にした所
Raspi2て2015年に発売したらしい。私の電子工作全盛期がそのあたりなんでものすごく久しぶりに扱うことになる。懐かしい。
そんなわけで色んな所を見ながら思い出していったので載せておく。こういうやつって最新のやつが正しいからすぐ情報古くなるよね。2020年度版。
qiita.com
qiita.com
qiita.com
101010.fun
qiita.com
independence-sys.net
ytmk.hatenablog.jp
turtlechan.hatenablog.com
qiita.com
qiita.com
qiita.com
ikkyu.hateblo.jp
misoji-engineer.com
ideal-reality.com
dpcblog.hatenablog.com
やったこと
ただのメモ書き。
自分が確認するためにしか書いてない。
RasPIのOS
今回はここからOS持ってきた。
Raspberry Pi OS Lite
Release date: January 11th 2021
Kernel version: 5.4
とかいうやつ。
事前準備(on Mac)
$ sudo vim /Users/<ユーザ名>/.ssh/known_hosts
known_hostsに書かれた古い情報を一応消しとく。昔こいつに文句言われたことがあるから。
回避する方法もあるらしいけどまっさらな状態から開始する。
$ diskutil list
disukutilでMacに挿しているSDのマウント先を確認。
$ diskutil unMountDisk /dev/disk2*
今回はdisk2なんちゃらとかいっぱい見つかったので正規表現使ってまとめてアンマウント。
$ diskutil eraseDisk exfat raspi /dev/disk2
microSDに何焼いているかわからないのでフォーマット。
私の記憶がただしければROS動かしていたのでそれ関係のライブラリとかが入っていたはず。
$ cd <書き込むOSがある所> $ diskutil unMountDisk /dev/disk2*
そういや一旦アンマウントしとかなきゃOS焼けなかったねという懐かしい記憶。
$ sudo dd if=OS名.img of=/dev/rdisk2 bs=1m
OS書き込み。進捗出てこないけど出すやり方がなんかあったはず。
bitware-blog.com
調べたらこんなんあった。
$ cd /Volumes/boot/ $ touch ssh $ cd
私の家には外付けのキーボードもマウスもないので、MacからRasPI操作する必要があった。
なので書き込んだSDに早速アクセスし、boot直下にsshファイル作ってやってSSH接続できるようにする。
なんか前はVNCで動かしてた気もするけど今回はサーバだし、そういうのはいいかな。
最後にSD取り外すためにホームディレクトリに移動してアンマウント。
RasPI編へ。
事前準備(on RasPI)
とは言っても操作するのはMacなのである。
$ arp -a | grep b8:27
RasPIにSD電源入れた後、起動するまでひたすらarpを叩く。
不要な情報はいらないのとRasPIのMACアドレスがわかっている(基本B8:27始まりらしい)のでgrepで指定している。
この辺のやり方について、ifconfigやらarpでRaspiのIPを調べてSSH接続しよう!みたいな記事は見かけるけど、そこから先はRaspiつないでない状態と見比べて頑張って見つけよう!みたいなゴリ押し記事が多かった気がする。
ああいうのってどういう人が対象どういう人が読んでいるんだろ(記事読んだやつの感想)。
ていうかしばらく触ってない間にapt-getとかifconfigって非推奨になってんのね。初めて知った。
今はaptとかipなんですね。aptitudeとかいうやつ前いなかったっけ?
$ ssh pi@<IPアドレス>
そんなわけでIPアドレスもわかったことだし、デフォルトユーザのpiくんにssh接続してようやくRaspPI操作ができるようになる。
初期パスは「raspberry」で全世界に公開されている。大変ガバなやつなので一番最初にすることはユーザ変更。
$ sudo useradd --group sudo -m -u <任意のポート名> <任意のユーザ名> $ sudo passwd <任意のユーザ名>
オプションとか付けなくても大丈夫だろうけど一応付けた。ポート名は後で設定してもいい気がする。
設定できる数字が65535(16bit)までというのは今回知った。昔は1000以上の適当な4桁で設定していた記憶がある。
新規ユーザとそのパスワード作成をする。
$ sudo apt purge wolfram-engine -y && sudo apt purge sonic-pi -y && sudo apt purge scratch* -y && sudo apt purge libreoffice* -y && sudo apt clean -y && sudo apt autoremove -y && sudo apt update -y && sudo apt -s dist-upgrade -y && sudo apt upgrade -y && sudo rpi-update -y
いちいち進捗完了確認がめんどくさいので、まとめてaptの更新、ファームウェアの更新を行ったの図。
こういうのが行儀悪いのかどうかはさておいて、ここが一番時間がかかるところ。
これが茄子Pのやり方(デカい主語)。
$ sudo reboot $ ssh <ユーザ名>@<ipアドレス>
一旦再起動して、追加したユーザで入り直す。
$ sudo apt -y install vim
VimおじさんだからVim入れる。
nanoとかvi使っているサイトが多いですね。
$ groups pi $ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio <ユーザ名>
piくんを乗っ取るために属しているグループを確認して入り込む。
今回はこんな感じだった。
$ sudo passwd root $ sudo userdel -r pi $ sudo rm /etc/sudoers.d/010_pi-nopasswd
rootの設定をした後にデフォルトのやつを消す。さよなら。
$ sudo vim /etc/hostname $ sudo vim /etc/hosts
ホスト名を新しい名前に書き換えていく。
ちなみにこの後、ルートでオートログインする設定を無効化するだとかセキュリティ設定だとか色々やったけど長くなるので割愛。
そのために参考リンク先を貼った。まぁユーザ変更も必要なかったと言われればそう。
$ sudo raspi-config
コンフィグから
- >Localisation Options
- >Change Timezone
- >Asia
- >tokyo
ファイルサーバだし一応タイムゾーンだけ変更しとく。
$ sudo apt -y install exfat-fuse exfat-utils ntfs-3g hfsplus hfsutils hfsprogs
HDD取り扱う上で必要なドライバ(でいいんかな)を入れる。
hsfplus(Macのフォーマット)とかいうやつを知らなかったせいで時間取られた。exfatは使うかわからないけどとりあえず入れてる。
$ sudo fdisk -l
HDD読み込めているよね確認。
$ sudo mkdir -p /mnt/hdd/backup $ sudo mkdir -p /mnt/hdd/timemachine
HDDのマウント先を作る。今回はTimemachine用とファイル用に2台使いたいから2つ作った。
$ sudo mount /dev/sda2 /mnt/hdd/backup
$ sudo mount /dev/sdb2 /mnt/hdd/timemachine
$ df -h
実際にマウントしてみる。
今回HDDはsda2とsdb2で認識してたのでこんな感じ。
読めないときは「-t hfsplus」みたいにフォーマット指定することもできるらしいけど、今回は不要だった。
hfsplus使う時、OSX ジャーナリングを無効にする必要あるというのも見かけたけど、今回は不要だった。
dfコマンドで指定先にマウントできているか確認。
$ sudo blkid
HDDのID確認。
$ sudo vim /etc/fstab
自動で指定先にマウントできるようにfstabとかいうのをイジる必要があるらしい。
ちなみにここの設定を間違えると起動しなくなる。正確にはemergency modeとかいうやつで起動してるけど、SSHで繋げなくなるので、キーボード持ってない私は起動できなくなった(敗因:手抜き)。
そんなわけで記録を残しとく。
# fstabに追記するやつ UUID="HDDのID" /mnt/hdd/timemachine hfsplus force,defaults,nofail 0 2 UUID="HDDのID" /mnt/hdd/backup hfsplus force,defaults,nofail 0 2
Mac民なのでhfsplus指定。普通はexfatとかになるんかな。
$ sudo umount /dev/sda2
$ sudo umount /dev/sdb2
$ df -h
fstab確認のためアンマウントする。
$ sudo mount -a $ df -h
再度マウントできていたらfstabに問題なし。普通は再起動するらしい。それはそう。
samba導入
ものすごく長い前置きが終わりようやくファイルサーバの話。
OMVとかnetatalkとか他にも候補あるけど、sambaで実施。
更新止まっているやつとかブラウザから動かせるよみたいなやつは別にいいかなって。詳しく調べるのを放棄したともいう。
$ sudo apt -y install avahi-daemon samba $ sudo smbpasswd -a <ユーザ名>
パッケージ導入。
サーバ用にユーザとパスワード設定
$ sudo chmod 777 /mnt/hdd/timemachine -R $ sudo chmod 777 /mnt/hdd/backup -R
権限変更。コレしないとHDDがネットワーク上で読み書きできなかったので書いとく。
今回は雑に777しているけど、多分正しい方法があるはず。
$ sudo vim /etc/samba/smb.conf
sambaの設定。一番ややこしい所。
#smb.confに追記するやつ [global] min protocol = SMB2 vfs objects = catia fruit streams_xattr fruit:metadata = stream fruit:model = MacSamba fruit:posix_rename = yes fruit:veto_appledouble = no fruit:wipe_intentionally_left_blank_rfork = yes fruit:delete_empty_adfiles = yes
デフォルトで[global]はあるので、そこに追記。
ここの書き方は人によって異なるようで、この設定に書き換えてようやくtimemachineが出来るようになった。
#smb.confに追記するやつ [timemachine] comment = Time Machine path = /mnt/hdd/timemachine writable = yes browsable = yes fruit:time machine = yes fruit:time machine max size = 1.8T [backup] comment = backup path = /mnt/hdd/backup public = yes read only = no browsable = yes force user = <ユーザ名>
timemachine用と通常ファイル用を指定した。[]で指定した名前がネットワーク上で見つかるらしい。
timemachineを動作させるために[global]含めて何度も書き直したけど、今思えばnetatalk用のライブラリとか入れてたら上手くいったのだろうか?
$ sudo systemctl restart smbd
サーバを再起動してみる。
これで設定終わり。
timemachine関係であーだこーだしなかったら1日(5hくらい)で終わってた。
以下、コメント
SMBサーバが立ち上がったので、Macから[移動]→[サーバに接続]→[smb://IPアドレス]でマウントできるようになった。
流石に色々載っているからスクショは載せないけど(編集めんどい)。
- Timemachineドハマリ時は「書き込み権限がありません」「必要な機能がサポートされていません」そもそもネットワーク上に見つからないとか色々あった。
- ネットワーク上で見つからない場合、どうもHDD上に余計なファイルが有るだとか、EXFAT形式のHDD(RasPI上でフォーマットしていた)ではTimemachineできないとか、いろいろ制約があるっぽかったのでHDDフォーマットしてやると解決するなどした。
- 「必要な機能がサポートされていませんについては"smb.conf"の設定に問題があるらしいので試行錯誤([global]に入れる外すとかやってた)しなければならなかった。
- 書き込み権限についてはコマンド一発で終了(全部こうなれ)。
せっかく作ったのでMac以外からもファイル飛ばせるようにした。
apps.apple.com
別端末からはFEなるソフトを入れてサーバにアクセスするようにした。
設定は特に必要なく、アドレス指定したらファイル飛ばせるようになった。
自動でアップロードできればいいけど出来ないみたいなので、別に対策考える。