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

のように使用する。

参考

Tags of current page