WZR-HP-AG300H への OpenWRT のインストールと設定
WZR-HP-AG300H の OpenWRT を更新して USB メモリを使うように設定した。
OpenWRT の更新
OpenWRT のサイトから openwrt-15.05.1-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin をダウンロードし、OpenWRT の管理画面から更新した。
extroot
基本的に https://wiki.openwrt.org/doc/howto/extroot の通りに作業した。
opkg update
opkg install block-mount kmod-fs-ext4 kmod-usb-storage-extras
ext4 でフォーマットした USB メモリをマウントしようと
mount /dev/sda1 /mnt
としても
mount: mounting /dev/sda1 on /mnt failed: No such device
となってマウントできなかった。
dmesg
とすると
[40361.060000] EXT4-fs (sda1): Cannot load crc32c driver.
とあったので
opkg install kmod-lib-crc32c
をインストールするとマウントできるようになった。
tar -C /overlay -cvf - . | tar -C /mnt -xf -
umount /mnt
としてファイルを /mnt にコピーし、アンマウントする。
block detect > /etc/config/fstab; \
sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab; \
sed -i s#/mnt/sda1#/overlay# /etc/config/fstab
とすると /etc/config/fstab が作られる。 /etc/config/fstab は次のようになっていた。
config 'global'
option anon_swap '0'
option anon_mount '0'
option auto_swap '1'
option auto_mount '1'
option delay_root '5'
option check_fs '0'
config 'mount'
option target '/overlay'
option uuid 'UUID_OF_YOUR_USB_MEMORY'
option enabled '1'
ここで
mount /dev/sda1 /overlay
として /dev/sda1 を /overlay にマウントできることを確認する。 再起動して実際にマウントされているかどうかを確認する。
sshtunnel
opkg install sshtunnel
でパッケージをインストールする。
/etc/config/sshtunnel をエディタで開き、コメントを参考にして設定を書く。
config server SERVER_NAME
option user USER_NAME
option hostname example.com
option port 22
option retrydelay 1
option CheckHostIP yes
option Compression yes
option CompressionLevel 6
option IdentityFile /root/.ssh/id_rsa
option LogLevel INFO
option ServerAliveCountMax 3
option ServerAliveInterval 30
option StrictHostKeyChecking ask
option TCPKeepAlive yes
option VerifyHostKeyDNS yes
config tunnelR http
option server SERVER_NAME
option remoteaddress *
option remoteport 22223
option localaddress 127.0.0.1
option localport 22
/etc/init.d/sshtunnel start
としてもエラーが出力されないようで、 デバッグに手こずった。
ユーザの追加
ユーザを追加して sudo を使えるようにする。
opkg install sudo shadow-useradd shadow-groupadd shadow-usermod
でパッケージをインストールする。
useradd NEW_USER
mkdir -p /home/NEW_USER
chown NEW_USER:NEW_USER /home/NEW_USER
passwd NEW_USER
/etc/passwd を編集して、ユーザのログインシェルを設定する。 私の環境では zsh をインストールしたので、それを使うことにした。
NEW_USER:x:1000:1000:NEW_USER:/home/NEW_USER:/bin/zsh
のようにする。
sudo の設定をする。
visudo
として、ファイルを変更する。 コメントアウトされている行
# %sudo ALL=(ALL) ALL
の先頭の # を除いて
%sudo ALL=(ALL) ALL
とする。これでグループ sudo に所属しているユーザは sudo コマンドを使うことができる。
groupadd --system sudo
usermod -a -G sudo NEW_USER
として、グループ sudo を作り、ユーザ NEW_USER をグループ sudo に加える。
sudo を使わないと ssh や ping などでネットワークにアクセスできない。 設定方法がわからないので、今のところは sudo を使うことにしている。 一部のコマンドだけ sudo をパスワードなしで行えるようにした。 visudo で
NEW_USER ALL=NOPASSWD: /bin/ping
NEW_USER ALL=NOPASSWD: /usr/bin/ssh
NEW_USER ALL=NOPASSWD: /usr/bin/etherwake
のようにした。
その他のパッケージのインストール
opkg install zsh etherwake
WakeOnLan のために etherwake を使う。
etherwake MAC_ADDCOSS
のように使用する。