アットウィキロゴ

公式imagebuilder docker コンテナイメージで CheckPoint V-80 の rootfs 拡張 image を作成する

Check Point V-80の rootfs を拡張した image を公式imagebuilder docker コンテナイメージを使用して作成する方法

SRCHACK氏の2026/5/2の投稿をベースにしています。

https://www.srchack.org/article.php?story=20260502005638890

V-80へのOpenWrtポーティングを行った musashino205氏 の記事も参照ください

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しますので、リスクを恐れる人はやめましょう。

準備物

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

+ タグ編集
  • タグ:
  • OpenWrt
  • imagebuilder
  • Check Point V-80
最終更新:2026年08月25日 08:16