ラズパイで作る自宅WEBサーバ構築
第2回 Ubuntu Server インストール 2019.10.20
ubuntu-18.04 server のインストールを行います。
YouTube 動画でポイントを説明しています。上記画像をクリックすると再生できます。
まずは、ubuntu server イメージファイルをダウンロードします。
◇ ubuntu 18.04.3 server
https://ubuntu.com/download/iot/raspberry-pi-2-3
画面を下にスクロールすると、「Installation instructions」という項目があり、Download Ubuntu Server から [Ubuntu Server image for Raspberry Pi 3]をダウンロード。
→ ubuntu-18.04.3-preinstalled-server-arm64+raspi3.img.xz
※このイメージファイルはシステム修復の際に必要になりますので、大切に保管しておきましょう。
◇ 7-Zip 高圧縮率のファイルアーカイバ(圧縮・展開/圧縮・解凍ソフト)
xz形式のファイルを解凍するソフトがインストール済みであれば必要ありません。
https://sevenzip.osdn.jp/
所有するパソコンに適したファイルをダウンロード
Windows 32ビット x86 → 7z1900.exe
Windows 64ビット x64 → 7z1900-x64.exe
インストールを実行してください。
ubuntu server のイメージファイルを解凍してください。
ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img.xz
↓
ubuntu-18.04.2-preinstalled-server-arm64+raspi3.img
◇ SDFormatter 5.0.1
https://www.sdcard.org/jp/downloads/formatter/
(Windows 7,8,8.1,10に対応)
Raspberry Pi の本体システムとして使えるのはFAT32フォーマットシステムだけなので、必然的にFAT32形式で使える最大容量は microSDHC 32GBになります。
なお、容量8GBや16GBのものではなく、32GBのSDカードの使用をお奨めします。
microSDカードをパソコンにセットし、FAT32でフォーマットします。
※ubuntu をインストールしたSDカードを再使用する場合は、クイックフォーマットではなく、上書きフォーマットを行ったほうが無難です。
◇ Win32 Disk Imager
https://sourceforge.net/projects/win32diskimager/
→ win32diskimager-1.0.0-install.exe
インストールを実行してください。
解凍した ubuntu server イメージファイルを microSDカードに書き込んでください。
※Win32 Disk Imager の使い方は検索するとすぐ見つかります。
ラズパイに冷却ファンを取り付けている場合など、ラズパイ本体にSPI接続で被せるタイプのモニターは使えません。
ドライバ・インストール不要でHDMIケーブルで接続する 3.5inch HDMIモニターがお奨めです。
下記のような小型モニタはモバイルバッテリーからの電源供給でも問題なく稼働します。
Kuman 3.5インチ HDMI 小型モニター 480*320 ラズベリーパイ3b タッチスクリーン ディスプレイ ビデオ/ゲーム可能 保護ケースセット raspberry pi 3 b+ 2 Model B A+ A に対応 ラズベリー パイ SC6AC
3.5inch モニターは解像度480x320程度ですので、そのままではインストールの際に文字が潰れて判読できません。
インストールの前にubuntu の解像度をさげる設定を行います。
SDカードにUbuntu Serverのイメージを焼き付けた後に、エクスプローラーなどでドライブを確認すると、
USBドライブとsystem-bootドライブといった2つのドライブが追加されていることがわかります。
system-boot ドライブを開いて、config.txt に下記を追記します。
framebuffer_width=480
framebuffer_height=320
hdmi_group=2
hdmi_mode=87
hdmi_cvt=480 320 60 1 0 0 0
[解説]
framebuffer_width フレームバッファの横幅
framebuffer_height フレームバッファの高さ
hdmi_group 1=CEA、2=DMT
hdmi_mode HDMIの動作モード(1~86は予約済み)
hdmi_cvt
width 横幅
height 高さ
framerate フレームレート
aspect アスペクト比(1=4:3、2=14:9、3=16:9、4=5:4、5=16:10、6=15:9)
margins 0=マージン無効、1=マージン有効
interlace 0=プログレッシブ、1=インタレース
rb 0=通常、1=ブランク削除
※ubuntu をインストール後に設定変更を行う場合は、
$ sudo vi /boot/firmware/config.txt
になります。
Ubuntu Server のインストール
microSDカードを Raspberry PI のスロットに挿してください。
HDMIケーブルを Raspberry PI とモニターに接続してください。
Raspberry PI のUSBスロットにキーボードを挿してください。
Raspberry PI に電源アダプタを接続します。
ブルートゥース・キーボードは避けたほうが無難です。写真のものはワイヤレスキーボードです。USBレシーバをラズパイに挿して使用しました。
初期パスワードでログインします。
ubuntu login: ubuntu
password:ubuntu
(current) UNIX password:ubuntu
パスワード変更を求められますので、ubuntu のパスワードを変更します。
Enter new UNIX password:********
Retype new UNIX password:********
◇Ubuntuでキーボードレイアウト変更
$ sudo dpkg-reconfigure keyboard-configuration
「Generic 105-key (Intl) PC」を選択(※自分のキーボードレイアウトを選択)
「Japanese」を選択
「Japanese」を選択
「The default for the keyboard layout」を選択
「No compose key」を選択で終了。
◇Ubuntuでキーボード設定ファイル修正
: はファイル保存時、[、] はネットワーク設定ファイル修正に必要なキーです。
コンソールからキーボードを叩いてみて、正しく表示されるか確認してください。
私のキーボードでは正常に対応しておらず、
: ← [Shift] +
[ ← @
] ← [
に対応していました。
ラズパイにキーボードを付けて設定するのは、この初期設定だけなので、気にしてはいけません。
初期設定以降はパソコンからSSHクライアントを利用して作業を進めるので、文字化けの心配はありません。
$ vi /etc/default/keyboard
XKBLAYOUT="us" → XKBLAYOUT="jp"
◇ネットワーク設定(Ubuntu18.04)
BUFFALO WSR-2533DHP2 仕様
まずは、使用するブロードバンドルータで割振り可能なローカルIPアドレスを確認しておきます。
$ sudo vi /etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: no
dhcp6: no
match:
macaddress: xx:xx:xx:xx:xx:xx
set-name: eth0
addresses: [192.168.11.21/24]
gateway4: 192.168.11.1
nameservers:
addresses: [192.168.11.21,192.168.11.1]
optional: true
Ubuntu18.04 Desktopでは renderer にNetwork-Managerを使用し、UbuntuServerやRaspberryPi 3用のUbuntu18.04(UbuntuCore)では netplan で設定します。デフォルト値を変更したい場合は、renderer を明記します。
上記は、ラズパイのローカルIPアドレスを 192.168.11.21、ブロードバンドルータを 192.168.11.1 にした場合の設定です。
macaddress: はラズパイ固有の値で変更の必要はありません。
ローカルネットワーク側にラズパイを配置して、ポートマッピング機能により、グローバルIPアドレスへのリクエストをローカルIPアドレスに振り分けているので、この記載にグローバルIPアドレスは現れません。
ラズパイをDNSサーバとして使用しないのであれば、nameservers: の 192.168.11.21 は必要ありません。
optionalは、networkdのみがサポートしています。通常networkdはシステム起動時、デバイスが正しく起動し、設定されるまで一定時間待機します。しかしこのoptinalキーをtrueに設定したデバイスは、起動時にnetworkdが待たずにすぐに起動することができるようになります。
yamlファイルは、TABでなくSPACE(基本は空白2文字)でインデントする必要があります。
設定の反映
$ sudo netplan apply (あるいは $ ip link set eth0 up )
ipアドレスの確認
$ ip a (あるいは $ ifconfig )
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500...
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.11.21/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group...
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
◇ネットワーク接続確認 ping
PING youtube.com (172.217.161.46) 56(84) bytes of data.
64 bytes from nrt12s23.net (172.217.161.46): icmp_seq=1 ttl=55 time=13.3 ms
64 bytes from nrt12s23.net (172.217.161.46): icmp_seq=2 ttl=55 time=9.87 ms
64 bytes from nrt12s23.net (172.217.161.46): icmp_seq=3 ttl=55 time=8.03 ms
^C
--- youtube.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2263ms
rtt min/avg/max/mdev = 8.032/10.427/13.376/2.218 ms
◇sysctlでIPv6の無効化設定
$ cat <<'EOF' | sudo tee -a /etc/sysctl.d/70-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
EOF
設定反映
$ sudo sysctl --system
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN...
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel...
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.11.21/24 brd 192.168.11.255 scope global eth0
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group...
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
これだけでは再起動した際に反映されない場合があるので、OS起動後にsysctl設定を再適用するスタートアップスクリプトを作成します。
cat <<'EOF' | sudo tee -a /etc/rc.local
#!/bin/bash
# /etc/rc.local
# Load kernel variables from /etc/sysctl.d
/etc/init.d/procps restart
exit 0
EOF
実行権限を付与します
$ sudo chmod 755 /etc/rc.local
これで再起動して、IPv6アドレスがなければ大丈夫です。
◇SSH接続設定
パッケージの有無を確認します。
$ dpkg --get-selections | grep openssh
openssh-client install
openssh-server install
openssh-sftp-server install
利用できるパッケージのバージョンの確認します。
$ apt-cache show openssh-server | more
Package: openssh-server
Architecture: arm64
Version: 1:7.6p1-4ubuntu0.3
ubuntu 18.04.3 では標準でSSHをサポートしているので、特別な設定はありません。
ラズパイをシャットダウンします。
$ sudo shutdown now
これでラズパイで直接行う設定は終了です。
キーボード、HDMIケーブルを外します。LANケーブルでブロードバンドルータと接続します。
次回は ubuntu server の詳細設定を行います。
◇その他
dpkg-reconfigureコマンドをサポートしているパッケージを調べる
$ ls /var/lib/dpkg/info/*.config
/var/lib/dpkg/info/adduser.config
/var/lib/dpkg/info/apparmor.config
/var/lib/dpkg/info/byobu.config
/var/lib/dpkg/info/ca-certificates.config
/var/lib/dpkg/info/cloud-init.config
/var/lib/dpkg/info/console-setup.config
/var/lib/dpkg/info/dash.config
/var/lib/dpkg/info/debconf.config
/var/lib/dpkg/info/flash-kernel.config
/var/lib/dpkg/info/irqbalance.config
/var/lib/dpkg/info/keyboard-configuration.config
/var/lib/dpkg/info/landscape-common.config
/var/lib/dpkg/info/locales.config
/var/lib/dpkg/info/man-db.config
/var/lib/dpkg/info/mdadm.config
/var/lib/dpkg/info/openssh-server.config
/var/lib/dpkg/info/popularity-contest.config
/var/lib/dpkg/info/tzdata.config
/var/lib/dpkg/info/ufw.config
/var/lib/dpkg/info/unattended-upgrades.config
dpkg-reconfigure で下記のエラーが発生した場合
dpkg: エラー: dpkg frontend が別のプロセスによってロックされています
$ sudo rm /var/lib/dpkg/lock
$ sudo dpkg --configure -a
インターフェイス名を調べる
$ ls /sys/class/net
eth0 lo wlan0
|