https://www.srchack.org/article.php?story=20260502005638890
https://memo205.hatenablog.jp/entry/2024/04/13/155537
Check Point V-80 の OpenWrt 公式配布イメージでは OpenWrtにて実際に使えるrootfs の容量は 900MB 程度です。 V-80 は ハードウェアとしては 4GB の eMMC を搭載していますが、メーカーファームウェアへのリカバリ領域を残してあるためです。 このリカバリ領域を全て OpenWrt の rootfs として使ってしまう方法があります。
V-80 では eMMCのパーティション設定を boot loader の環境変数で設定する仕組みになっており、initramfs.scr というファイルの中で行います。 USBメモリからの起動の場合はbootloderが initramfs.scr を読み込みますが、eMMCからの起動の場合はsysupgrade.img の中に組みこむ必要があります。
SRCHACK氏は改造手順を詳細に記載いただいていますが、OpenWrt のバージョンアップの度に実施するのはやや大変です。 氏の記事の中では Imagebuilder は使えないとの記載がありますが、調査した結果、initramfs.scr は imagebuilder 内で毎回生成していることが判明しました。
そこでこの記事では imagebuilder ファイルにパッチを当てて、rootfsを拡張した sysupgrade image を生成する方法を記載します。 OpenWrt Project が公式に配布している Imagebuilder docker image を利用します。 これにより OpenWrt のバージョンアップがあっても、容易に再生成が可能になります。
この記事の記載内容は 2026/8/16 OpenWrt 25.12.5 時点での情報です。
eMMC起動のみテストしています。SDカード起動はテストしていません。
SRCHACK氏も述べていますが、メーカーファームウェアのリカバリはできなくなりますので、事前にeMMC上の各パーティションのbackupを取って備えてください。 また bootloader が壊れるとbrickしますので、リスクを恐れる人はやめましょう。
x86-64(amd64) アーキテクチャの docker 環境
v-80-bootscript へのパッチ
https://www.srchack.org/article.php?story=20260502005638890 記載のpatch。以下部分を v-80.bootscript.patch として保存(SRCHACK氏のサイトからコピーして用意してください) → pastebin に貼りました。https://pastebin.com/Ly3uXdiQ
以下コマンドで取得して準備してください。 wget https://pastebin.com/raw/Ly3uXdiQ -O v-80.bootscript.patch
diff -urNp a/target/linux/mvebu/image/v-80.bootscript b/target/linux/mvebu/image/v-80.bootscript --- a/target/linux/mvebu/image/v-80.bootscript +++ b/target/linux/mvebu/image/v-80.bootscript @@ -44,6 +44,6 @@ setenv cp_quiet
set bootargs with "blkdevparts" option
run set_bootargs_vx
-test -n "${ow_root}" && setenv bootargs "${bootargs} root=${ow_root} rw rootwait"
+test -n "${ow_root}" && setenv bootargs "${bootargs} blkdevparts=mmcblk${mmc_blk_dev}:${kern_reserved_space}M@${mmc_start_reserved_space}M(kernel-1),${dtb_reserved_space}M(dtb-1),-(rootfs-1) root=${ow_root} rw rootwait"
booti ${kernel_addr_r} - ${fdt_addr_r}
# ファームウェア生成ディレクトリを作成
mkdir bin
# docker run で imagebuilder コンテナをバックグラウンド実行
docker run -dt -v `pwd`/bin:/builder/bin --name openwrt-build openwrt/imagebuilder:mvebu-cortexa72-25.12.5
# パッチファイルをコンテナ内にコピー
docker cp v-80-bootscript.patch openwrt-build:/builder
# コンテナ内で patchを適用
docker exec openwrt-build sh -c '/usr/bin/patch -p1 < v-80-bootscript.patch'
# コンテナ内で V-80用の image を生成
docker exec openwrt-build make image PROFILE="checkpoint_v-80" PACKAGES="luci luci-ssl"
docker ホスト側の bin/targets/mvebu/cortexa72/ に ファイルが生成されます。
ls bin/targets/mvebu/cortexa72/
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-ext4-sdcard.img.gz
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-ext4-sysupgrade.gz
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-initramfs.dtb
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-initramfs.scr
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-rootfs.tar.gz
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-squashfs-sdcard.img.gz
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-squashfs-sysupgrade.gz
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-targz-rootfs.tar.gz
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80.bom.cdx.json
openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80.manifest
profiles.json
sha256sums
ここで生成した checkpoint_v-80-squashfs-sysupgrade.gz でインストールした後のストレージの状態は次のようになります。
df -h の結果
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 5.5M 5.5M 0 100% /rom
tmpfs 990.0M 316.0K 989.7M 0% /tmp
/dev/loop0 3.6G 133.8M 3.5G 4% /overlay
overlayfs:/overlay 3.6G 133.8M 3.5G 4% /
tmpfs 512.0K 0 512.0K 0% /dev
lsblkの結果(要 apk add lsblk)
root@OpenWrt:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 3.6G 0 loop /overlay
mmcblk1 179:0 0 3.7G 0 disk
├─mmcblk1p1 179:1 0 48M 0 part
├─mmcblk1p2 179:2 0 1M 0 part
└─mmcblk1p3 179:3 0 3.6G 0 part /rom
mmcblk1boot0 179:8 0 2M 1 disk
mmcblk1boot1 179:16 0 2M 1 disk
sysupgrade.gz をインストールするためにはUSB メモリからの boot のために v-80-initramfs-kernel.bin が必要ですが、imagebuilder では生成されません。 公式サイトからダウンロードして使いましょう。initramfs.dtb initramfs.scr は生成されたものを使ってください。
wget https://downloads.openwrt.org/releases/25.12.5/targets/mvebu/cortexa72/openwrt-25.12.5-mvebu-cortexa72-checkpoint_v-80-initramfs-kernel.bin
OpenWrtの新バージョンがリリースされた時は、imabebuilder コンテナイメージのTAG部分を書き換えてください。TAG名は docker hub で調べてください。
docker run -dt -v pwd/bin:/builder/bin --name openwrt-build openwrt/imagebuilder:mvebu-cortexa72-25.12.5