OpenWRT 自己ビルド version
Raspberry Pi初代のopkgのサポート状況がさみしいので、自分でビルドする環境を整えてみた。
OpenWRT ビルド中
ここ(Quick Image Building Guide)に従って、進めれば入ります。
https://openwrt.org/docs/guide-developer/quickstart-build-images
セットアップ@ホスト環境
書かれているまんま
$ sudo apt install subversion g++ zlib1g-dev build-essential git python python3
$ sudo apt install libncurses5-dev gawk gettext unzip file libssl-dev wget
$ sudo apt install libelf-dev ecj fastjar java-propose-classpath
$ sudo apt install build-essential libncursesw5-dev python unzip
ビルド@ホスト環境
必要なパッケージをダウンロードします。(まんまですが、やらないとLuciが入らないというはまりモードになるので重要)
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
menuconfigを開いて、環境を整えます。
$ make menuconfig
初代Raspberry Piの肝はこのあたり
CONFIG_TARGET_brcm2708=y
CONFIG_TARGET_brcm2708_bcm2708=y
CONFIG_TARGET_brcm2708_bcm2708_DEVICE_rpi=y
あと、うちのWiFiは、rtl8192cuなので、そのドライバもあわせて設定
CONFIG_PACKAGE_rtl8192cu-firmware=y
save --> exit して、いよいよビルド。
うちの環境では、make -j 8するとエラーになるので、おとなしくj 1でビルド
また、ビルドしている感を出したいので、 V=scも追記
$ make -j 1 V=sc
#OpenWRT インストール中
ただ、sd cardに焼き付ければOK
モノは、bin/targets/brcm2708/bcm2708の配下にある
$ sudo dmesg | tail <-- /dev/sdxの確認
$ zcat openwrt-brcm2708-bcm2708-rpi-ext4-factory.img.gz | sudo dd of=/dev/sdx conv=fsync bs=1M status=progress
一度起動してしまえば、sysupgrade.img.gzを利用して、GUIからアップグレード可能
#OpenWRT 起動
メモリカードをraspberry piへ差し込めばOK!!
なぜか、日本語で登場。英語verのブラウザで見ると、英語で表示されます。--> システム->システムで、自動になっているから。固定したければ、好きな言語を選択すべし。
なお、LuCiを使うためには、menuconfigで、luci関連を選択する必要あり
パッケージの追加
opkgを使わない、opkgにない、パッケージも入れることができます。
たとえば、ad block。raspberry piのopkgにはでてきません。
"make menuconfig"にて、好きなパッケージを選択して、とすれば、ipkが作られます。
$ ls bin/packages/arm_arm1176jzf-s_vfp/packages
Packages
Packages.gz
Packages.manifest
Packages.sig
adblock_3.8.10-1_all.ipk <--これが追加
arp-scan-database_1.9.6-1_arm_arm1176jzf-s_vfp.ipk
cgi-io_14_arm_arm1176jzf-s_vfp.ipk
libattr_2.4.48-2_arm_arm1176jzf-s_vfp.ipk
libdb47_4.7.25.4.NC-5_arm_arm1176jzf-s_vfp.ipk
libopenssl-afalg_sync_1.0.1-1_arm_arm1176jzf-s_vfp.ipk
libxml2_2.9.9-4_arm_arm1176jzf-s_vfp.ipk
このipkをLuCiのソフトウェア画面から登録します。
インストール済のタブから、インストールされたことが確認できます。
adblockを動かすには、次のモジュールも必要でした。
- luci-app-adblock
- luci-compat
app-adblockを入れようとすると、luci-compatがない、と怒られるので、気づきます。
#おまけ
SD Cardサイズをアップする
ビルドでは、デフォルトでは、104MBの領域を確保しています。これをsd cardの最大領域までアップするには、以下の手順が必要です。
$ sudo parted /dev/sdx
(parted) resizepart 2 ; /dev/sdx2が対象。sdx1はboot
(parted) -0 ; "-0"指定で、最大領域の確保
(parted) quit
$ sudo e2fsck -f /dev/sdx2
$ sudo resize2fs /dev/sdx2
##追記#1
ソフトウェアをアップグレードする際は、*sysupgrade.img.gzを指定します。
この際、 gz をつけないと、XHR request timed outなるエラーが発生します。要注意です。
ファイルの転送速度が遅すぎると、タイムアウトするようです。gzのファイルでも、buildサーバのSMBから転送しようとしたら、しばしば同じエラーが発生しました。最終的に、最寄りのサーバ(つまりweb操作をしているPC)から転送したら、今のところ100% OKです。
[おしまい]