Raspberry Pi: Arch Linux の初期設定(SSH 接続まで)
Amazon で頼んでいたかわいい Raspberry Pi のケースが届いたので、早速装着。基板をはめ込んでネジで止めるだけなのでとっても楽。
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
箱に収まったので、セットアップを始めた。
今回の目標
Raspberry Pi で Arch Linux を動かし、
といった役割を持たせられたらいいな、と今のところ構想中。
SD カードの準備
家にあった 4 GB の SD カードを使うことにした。
Mac
Mac 上で SD カードの準備を行った。
まず、「Raspberry Pi | Arch Linux ARM」から SD カードのイメージファイルをダウンロードし、解凍した(ここでは ~/Documents/ArchLinuxARM-2014.04-rpi.img
)。
SD カードを挿し、アイコンが出たら df
で場所を調べた。その結果を使ってアンマウントした。
sudo diskutil unmount /dev/disk3s1
dd
でイメージを SD カードに書き込んだ。書き込み先が /dev/rdiskX
であることに注意。少し時間がかかるので、気長に待つ。
sudo dd bs=1m if=~/Documents/ArchLinuxARM-2014.04-rpi.img of=/dev/rdisk3
書き込みが終わるとデスクトップにアイコンが現れるので、Finder で開いてみる。ファイルがあるのを確認して、取り出した。
Windows
らぁさん(@raa0121)から 「Windows 向けのこともチラッとよろしく」とコメントをいただいたので追記。
- Mac と同様に「Raspberry Pi | Arch Linux ARM」から SD カードのイメージファイルをダウンロードし、適当な場所に解凍する。
- 「Win32DiskImager」をインストールする。
- Win32DiskImager を使って SD カードにイメージを書き込む。
という手順でいけるらしい。
「[Raspberry Pi]SDカードのディスクイメージを複製する | iPhoneAppはじめました」の「書き込み編(.img -> SDカード)」までが分かりやすい。
Raspberry Pi の電源を入れる
準備した SD カードと USB キーボード、ディスプレイ(HDMI ケーブルで)、LAN ケーブルを接続した後、スマホ用充電器をつないで電源を入れた。Gentoo のときのように文字がずらずら出て、あっという間に(CUI の)ログイン画面に。あまりにも簡単で思わず「すげぇ」と叫んでしまった(笑)
ユーザー名、パスワードとも root
でログインした。
既存のパッケージの更新
まずインストールされているパッケージを最新の状態に更新した。カーネルの更新も含まれていたので、再起動した。
pacman -Syu # やや時間がかかる reboot
ネットワークの設定
LAN 内でサーバーとして使いたいので、IP アドレスを固定することにした。他のブログでは netcfg で設定する例が多く出ていたが、今は後継の netctl が標準で入っているので、そちらで設定すれば良い。
まず ifconfig
で eth0
の netmask を確認した。うちでは 255.255.240.0
(CIDR では /20
)とちょっと変えてあったので、これをメモ。もちろん環境によって変わる。
これをもとにプロファイルを作る。もともとあった eth0
を eth0_dhcp
にリネームし、固定 IP アドレスのプロファイル eth0_static
を作った。
cd /etc/netctl mv eth0 eth0_dhcp cp examples/ethernet-static eth0_static vi eth0_static # サンプルファイルを書き換える # Address=('192.168.1.100/20') # と設定した
このままでは初期設定である動的 IP アドレスのプロファイルと衝突してしまうので、それを無効化して作ったプロファイルを有効化した。
systemctl | grep netctl # netctl-ifplugd@eth0.service というものが表示された。 # これが初期設定のプロファイル。 systemctl disable netctl-ifplugd@eth0.service netctl enable eth0_static
再起動して確認する。うまく設定されていないときは、journalctl -xn
でログを見る。自分は上記の衝突の件で苦労した。
reboot # ログイン後 ifconfig # eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 # inet 192.168.1.100 netmask 255.255.240.0 broadcast 192.168.15.255
ホスト名の設定
参考:Network Configuration (日本語)#ホストネームの設定 - ArchWiki
hostnamectl
でホスト名を設定した。
hostnamectl set-hostname rpi
/etc/hosts
にもホスト名を追加した。
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost rpi
::1 localhost.localdomain localhost rpi
SD カードの全容量を使えるようにする
参考:Arch Linux on Raspberry Pi - daimatz.hateblo.jp
イメージの都合上、SD カード上のパーティションは 2 GB しかない。容量いっぱいまで使えるようにした。
この作業で失敗すると最初からやり直しになる可能性がある。慎重に作業しましょう。ちなみに私は一度早とちりで失敗し、SD カード作り直しになってしまった(><)
パーティション操作は fdisk
で行う。
fdisk /dev/mmcblk0
p
コマンドでパーティションテーブルを表示する。後で使うため、パーティション 2(/dev/mmcblk0p2
)とパーティション 5(/dev/mmcblk0p5
)の開始位置を正確にメモする。自分の環境では以下の通りだった。
Device | Start |
---|---|
/dev/mmcblk0p2 | 186368 |
/dev/mmcblk0p5 | 188416 |
以下の手順でパーティション操作を行った。
d
コマンドでパーティション 2 を削除した。n
コマンドで、拡張パーティション(extended)としてパーティション 2 を作った。開始位置は上記/dev/mmcblk0p2
と合わせ、大きさは最大(両方とも標準のまま)にした。n
コマンドで、論理パーティション(logical)としてパーティション 5 を作った。開始位置は上記/dev/mmcblk0p5
と合わせ、大きさは最大(両方とも標準のまま)にした。
最後に p
コマンドでパーティションテーブルを表示し、各パーティションの開始位置が変更されていないことを確認した。変更されていたら q
コマンドで変更を破棄し、やり直すこと。
問題がないのを確認して w
コマンドで変更を書き込んだ。警告メッセージが出たので、指示通り reboot
で再起動した。無事再起動できたら、パーティション操作は成功。
ログイン後、ファイルシステムの大きさを調整した。
resize2fs /dev/mmcblk0p5
調整が終わったら、
df -h
で /dev/root
の容量が増えていることを確認した。
Vim のインストール
vi での設定ファイルいじりが大変そうだったので、Vim をインストールした。
pacman -S vim
.vimrc 等の設定はまた後で。
sshd の設定
root でのログインを無効にする。Vim で /etc/ssh/sshd_config
を編集し、
PermitRootLogin no
とした。
sudo の設定
sudo をインストールした。
pacman -S sudo
wheel グループが sudo
を使えるようにする。visudo
を実行し、以下のようにコメントを解除した。
## Uncomment to allow members of group wheel to execute any command %wheel ALL=(ALL) ALL
一般ユーザーの追加
sudo
できるユーザーを追加した。以降はこのユーザーで操作することにする。
useradd -m ochaochaocha3 passwd ochaochaocha3 # ここでパスワード設定 gpasswd -a ochaochaocha3 wheel
ここまでやったら
他の PC から
ssh ochaochaocha3@192.168.1.100
として SSH 接続できるようになった。
次の記事: