Skip to Content
IoT アプリ開発IronFlock CLIIronFlockOS をドライブに書き込む

IronFlockOS をドライブに書き込む

ironflock os flash は、新しいデバイスが起動するドライブを準備します。IronFlockOS とデバイス設定ファイル(.flock)をドライブに書き込むと、デバイスは初回起動時に登録されます。つまり、その .flock ファイルのデバイスとして IronFlock に接続します。準備できるものは次のとおりです:

  • デバイスが起動する USB スティック、SD カード、外付けディスク
  • PC の内蔵ディスクに IronFlockOS をインストールするインストーラースティック
  • 仮想マシンが起動するディスクイメージファイル

FlockFlasher は、同じ作業を行うデスクトップアプリです。デバイスの .flock ファイルを取得するには、デバイスの接続 を参照してください。

典型的な流れ

# 1. スティックまたは SD カードを挿してから、書き込めるドライブを一覧表示する ironflock os drives # 2. 任意:カタログが提供するイメージを一覧表示する ironflock os images # 3. IronFlockOS とデバイスの .flock ファイルをドライブに書き込む sudo ironflock os flash -c device.flock -d /dev/sdb

os flash は計画を示し、ドライブを消去する前に質問します。完了したら、ドライブをデバイスに挿し、デバイスをそこから起動します。

ironflock os images

ドライブに書き込める IronFlockOS イメージを一覧表示します。既定では、production チャネルのリリースのイメージを一覧表示します。

ironflock os images [flags]

Linux と macOS で動作します。root は不要です。何も質問しません。

フラグ

フラグ意味
--channel <name>リリースを一覧表示するチャネル:production(既定値)または test。
--version <x.y.z>チャネルのリリースの代わりに一覧表示するリリース。例:0.13.0。
--target <target>このハードウェアターゲットのイメージだけ:amd64-efi、arm64-efi、rpi-arm64。
--variant <variant>このバリアントのイメージだけ:base、nvidia、installer。
--kernel <kernel>このカーネルのイメージだけ:std または rt。

すべてのコマンドに共通するフラグは、フラグ、出力、終了コード に記載しています。

動作

一覧は、ダウンロードサーバーにある署名付きの IronFlockOS カタログ <download base>/ironflockos/manifest.json から取得します。ironflock は、カタログの Ed25519 署名を ironflock に組み込まれたカタログ鍵で検証できた場合にだけ、そのカタログを使います。FlockFlasher とデバイスエージェントも、同じ鍵を固定で組み込んでいます。このチェックを無効にするフラグや環境変数はありません。ダウンロードベースは、別のものを指定しない限り IronFlock クラウドです。ダウンロードベース を参照してください。

最後に検証できたカタログは、ダウンロードベースごとに 1 つずつ、キャッシュフォルダーに保持されます:

ユーザーLinuxmacOS
通常のユーザー~/.cache/ironflock/catalog/~/Library/Caches/ironflock/catalog/
root/var/cache/ironflock/ の下/var/root/Library/Caches/ironflock/ の下

ダウンロードサーバーに到達できない場合は、保持しているコピーが代わりに使われ、stderr にその旨が示されます。同じダウンロードベースのカタログで、保持しているコピーより古いものは拒否されます。

イメージの名前は、ハードウェアターゲット、バリアント、カーネルから付けられます。形式は ironflockos-<target>-<variant> で、リアルタイムカーネルには -rt が付きます。ironflockos-amd64-efi-base-rt は、UEFI を備えた x86-64 PC 用の、リアルタイムカーネルを使うベースシステムです。ターゲットは次のとおりです:

  • amd64-efi — UEFI を備えた x86-64 PC
  • arm64-efi — UEFI を備えた ARM64 マシン
  • rpi-arm64 — Raspberry Pi 4、400、CM4、および Raspberry Pi 5、CM5

バリアントは base、nvidia、installer です。インストーラーイメージからは、そこから起動したマシンのディスクに、含まれているイメージの 1 つをインストールする USB スティックが作られます。この ironflock が知らないバリアント、カーネル、アーキテクチャのイメージ(より新しいリリースのもの)は、stderr に注記を出して一覧から除かれます。

例

# 現在の production リリースのイメージ ironflock os images # Raspberry Pi のイメージだけ ironflock os images --target rpi-arm64 # test チャネルのイメージを JSON で ironflock os images --channel test --json

結果

IMAGE VERSION SIZE HARDWARE ironflockos-amd64-efi-base 0.13.0 638.1 MB x86-64 PC with UEFI ironflockos-amd64-efi-base-rt 0.13.0 650.4 MB x86-64 PC with UEFI ironflockos-amd64-efi-nvidia 0.13.0 1.0 GB x86-64 PC with UEFI ironflockos-amd64-efi-installer 0.13.0 2.5 GB x86-64 PC with UEFI, installer stick for base, base-rt, nvidia ironflockos-arm64-efi-base 0.13.0 582.4 MB ARM64 machine with UEFI ironflockos-arm64-efi-base-rt 0.13.0 594.1 MB ARM64 machine with UEFI ironflockos-arm64-efi-installer 0.13.0 1.5 GB ARM64 machine with UEFI, installer stick for base, base-rt ironflockos-rpi-arm64-base 0.13.0 639.4 MB Raspberry Pi 4, 400 and CM4; Raspberry Pi 5 and CM5

--json の場合(ここでは --target rpi-arm64 を付けています):

{"issued_at":"2026-11-10T09:41:47Z","key_id":"036ef3bd","from_cache":false,"channels":{"production":"0.13.0","test":"0.13.0"},"images":[{"image_id":"ironflockos-rpi-arm64-base","version":"0.13.0","channels":["production","test"],"target":"rpi-arm64","variant":"base","kernel":"std","architecture":"arm64","boards":["raspberrypi4","raspberrypi5"],"hardware":["Raspberry Pi 4, 400 and CM4","Raspberry Pi 5 and CM5"],"file":"ironflockos-rpi-arm64-base-0.13.0.img.gz","url":"https://instance-registry.ironflock.com/dl/ironflockos/0.13.0/ironflockos-rpi-arm64-base-0.13.0.img.gz","size":639408901,"sha256":"9abd17f2098dfa236d440005222d0a6b583546ea9768e5eca8807c4e24ec88db"}]}

issued_at と key_id はカタログを表し、channels は各チャネルのリリースを示し、from_cache はダウンロードサーバーが応答しなかった場合に true です。各イメージには file があり、その url、size、sha256 が付きます。boards は .flock ファイルが記載するボードのモデル(board.model)で、hardware はその名前です。インストーラーイメージには payloads もあり、含まれているイメージの ID を示します。

失敗する場合

  • 終了コード 2 — --channel と --version を同時に指定した、バージョンとして正しくない値を指定した、またはカタログにないチャネル、リリース、ターゲット、バリアント、カーネルを指定した。エラーには、カタログにあるものが示されます。
  • 終了コード 1 — カタログを検証できない、64 KiB より大きい、この ironflock が読み取れる形式でない、または保持しているコピーより古い。あるいは、カタログを取得できず、保持しているコピーもない。

ironflock os drives

このマシンのドライブのうち、IronFlockOS イメージを書き込めるもの、つまり USB スティック、SD カード、外付けディスクを一覧表示します。ドライブへの書き込み、アンマウント、オープンは一切行いません。

ironflock os drives [flags]

Linux と macOS で動作します。root は不要です。何も質問しません。Linux では lsblk(util-linux に含まれる)を実行し、/proc と /sys を読み取ります。macOS では diskutil list、diskutil info、hdiutil info を実行します。

フラグ

フラグ意味
--all拒否されるドライブも、その理由とともに一覧表示します。

すべてのコマンドに共通するフラグは、フラグ、出力、終了コード に記載しています。

拒否されるドライブ

os flash は、os drives が拒否するドライブを同じ理由で拒否します。次のいずれかに当てはまるドライブは拒否されます(表示されるのは、最初に当てはまる理由です):

  1. パーティションである。たとえば /dev/sdb1 です。拒否の理由にはそのディスクが示されます。イメージはディスク全体に書き込むためです。
  2. ディスクではない。光学ドライブ、メモリ上のディスク(zram)、ほかのドライブの上に構築されたボリューム(LVM、dm-crypt、RAID、device-mapper。macOS では APFS コンテナ、AppleRAID セット、その他の合成ディスク)、またはコマンドが知らない種類のデバイス(nbd、mtdblock)です。
  3. 実行中のシステムの一部を含んでいる。/、/boot、/efi、/usr、/var、/etc またはこれらの下のマウント(/boot/efi の EFI パーティション、/var/lib/docker の Docker のデータ)、/home、/opt、/srv、/data、スワップ、ライブシステムの媒体です。システムがドライブ上にどのように置かれていても当てはまります。パーティション内、LVM、dm-crypt、RAID、device-mapper 経由、複数のドライブにまたがる btrfs ファイルシステム内、ZFS プール内、オーバーレイ内、ループデバイスが読み取るファイル内のいずれでも同じです。macOS では、/ と /System の下のボリュームが対象で、その APFS コンテナをたどって、それらを含むディスクまで当てはまります。
  4. 使用中である。LVM、dm-crypt、RAID、device-mapper、マウントされたデータセットを持つ ZFS プール、またはそのドライブ上のファイルを読み取るループデバイスによる使用です。macOS では、そのドライブ上の APFS コンテナ、AppleRAID セット、ファイルがそのドライブ上にあるディスクイメージ、またはアタッチされていない Core Storage、AppleRAID、APFS コンテナによる使用も含みます。macOS は、APFS コンテナを含むスティックを、スティックを消去したときにしか手放さないため、理由にはスティックを消去するコマンドが示されます。たとえば diskutil eraseDisk FAT32 IRONFLOCK MBR /dev/disk6(またはディスクユーティリティの「消去」)です。
  5. マシンの内蔵ディスクである。SATA ディスク、NVMe ディスク、ボードの eMMC などです。USB か、デバイスを取り外せるほかのバスで接続されていない限り、ドライブは内蔵とみなされます。内蔵カードリーダーは内蔵ですが、その SD カードはリムーバブルメディアであり、Mac でも書き込み先として示されます。macOS では、場所を示さないディスクは内蔵とみなされます。os flash --allow-internal は、ほかの理由で拒否されない場合に、--drive で指定した内蔵ディスクに書き込みます。
  6. 実行中のシステムの一部を含んでいる可能性がある。実行中のシステムの一部をドライブまでたどれない場合は、すべてのドライブが拒否されます。システムがホスト上にあるコンテナの中や、macOS で Core Storage のように物理ディスクに到達しないボリューム上にシステムがある場合がこれに当たります。
  7. 読み取り専用である。ロックされた SD カードなどです。
  8. 媒体がない。カードが入っていないカードリーダーなどです。

マウントされたファイルシステムを持つドライブは、書き込み先として示されます。mounted にそれらが一覧表示され、os flash は書き込む前にそれらをアンマウントします。ループデバイスと、macOS でアタッチされたディスクイメージは一覧に表示されませんが、--drive で指定すれば os flash はそれに書き込みます。

IronFlockOS を実行しているデバイスでは、コマンドは stderr と warnings で警告します。同じターゲットの IronFlockOS イメージはすべて同じパーティション UUID を持つため、別の IronFlockOS ドライブが接続されている間は、実行中のシステムが自分のパーティションとそのドライブのパーティションを区別できないためです。

例

# 書き込めるドライブ ironflock os drives # すべてのドライブと、拒否される各ドライブの理由 ironflock os drives --all # ドライブを JSON で ironflock os drives --json

結果

Linux の場合:

DEVICE SIZE BUS MODEL /dev/sdb 15.9 GB usb SanDisk Ultra /dev/mmcblk0 31.9 GB mmc SD32G

--all を付けた場合:

DEVICE SIZE BUS MODEL WRITABLE /dev/sda 2.0 TB sata WDC WD20EZBX-00AYRA0 no: is an internal disk of this machine /dev/sdb 15.9 GB usb SanDisk Ultra yes /dev/mmcblk0 31.9 GB mmc SD32G yes /dev/nvme0n1 1.0 TB nvme Samsung SSD 980 PRO 1TB no: holds / of the running system

Mac で --all を付けた場合:

DEVICE SIZE BUS MODEL WRITABLE /dev/disk0 500.3 GB Apple Fabric APPLE SSD AP0512R no: holds / of the running system /dev/disk1 524.3 MB Apple Fabric APPLE SSD AP0512R no: is a volume (APFS container), not a disk /dev/disk2 5.4 GB Apple Fabric APPLE SSD AP0512R no: is a volume (APFS container), not a disk /dev/disk3 494.4 GB Apple Fabric APPLE SSD AP0512R no: is a volume (APFS container), not a disk /dev/disk5 15.9 GB Secure Digital Built In SDXC Reader yes

--json の場合(一部省略):

{"drives":[{"device":"/dev/sdb","kind":"disk","size":15931539456,"bus":"usb","removable":true,"internal":false,"read_only":false,"vendor":"SanDisk","model":"Ultra","serial":"4C530001230812115352","mounted":[{"device":"/dev/sdb1","mountpoint":"/media/anna/STICK"}],"system":[],"maybe_system":[],"holders":[],"writable":true},{"device":"/dev/mmcblk0",...}],"warnings":[]}
フィールド意味
sizeバイト単位のサイズ。
busシステムの表記によるバス:Linux では usb、sata、nvme、mmc。macOS では USB、Secure Digital、Apple Fabric、PCI-Express。
removable媒体をドライブから取り出せる。
serialシリアル番号。Mac では示されません。
mountedマウントされている、ドライブのファイルシステム。
systemドライブが含む、実行中のシステムの部分。
maybe_system実行中のシステムのうち、ドライブまでたどれなかった部分。
holdersドライブを使用しているもの。
writable, refusal拒否されたドライブ(--all の場合)は "writable":false を持ち、理由が refusal に入ります。

書き込めるドライブがない場合は、テキストでその旨が示され、drives は空で、終了コードは 0 です。

失敗する場合

  • 終了コード 3 — Linux で lsblk がインストールされていない、またはコマンドが Linux と macOS 以外のシステムで実行されている。

ironflock os flash

IronFlockOS をドライブ(USB スティック、SD カード、外付けディスク)に書き込み、デバイスの .flock ファイルをドライブの IRONFLOCKOS パーティションに置きます。これは、すべての IronFlockOS ドライブにある、その名前の FAT32 パーティションです。デバイスは初回起動時にこのファイルで登録されます。--output を付けると、代わりに同じ内容を仮想マシン用のディスクイメージファイルに書き込みます。

警告:ドライブ上のすべてが消去されます。書き込む前に、ironflock os drives でドライブ名を確認してください。os flash が自分でドライブを選ぶことはありません。

ironflock os flash -c <device.flock> (-d <drive> | --output <file>) [flags]
LinuxmacOS
動作対応対応
rootドライブへの書き込みには必要ドライブへの書き込みには必要。ただし、ドライブの raw デバイスに書き込めるユーザーには不要
質問ドライブを消去する前、または --output のファイルを置き換える前。「No」があらかじめ選択されている同じ

root でない場合、エラーは入力すべきコマンドラインを、先頭に sudo を付けて示します。macOS では、ドライブの raw デバイスに書き込めるユーザーには root は不要です。ディスクイメージをアタッチしたユーザーや、マシンの所有者がドライブを割り当てたユーザー(たとえば sudo chown <user> /dev/disk4 /dev/rdisk4 で)がこれに当たります。--output では、コマンドに root は不要です。root 権限 も参照してください。

フラグ

フラグ意味
-c, --config <file>デバイスの .flock ファイル。必須です。
-d, --drive <drive>消去して書き込むドライブ。Linux では /dev/sdb や /dev/mmcblk0、または /dev/disk/by-id の下にあるものなど、それを指すリンク。macOS では /dev/disk4(/dev/rdisk4 や disk4 も可)。ironflock os drives で一覧表示されます。
--output <file>ドライブの代わりに書き込むファイル:仮想マシン用の raw ディスクイメージ。
--image <id>書き込むイメージ。ironflockos- は付けても付けなくてもよく、たとえば amd64-efi-nvidia。既定値:.flock ファイルが記載するハードウェア用のイメージ。
--image-file <file>事前にダウンロードしたイメージファイル。カタログにあるそのイメージのファイルである必要があります。
--installerイメージを PC の内蔵ディスクにインストールするインストーラースティックを書き込みます。
--installer-disk <rule>インストーラーが書き込むディスク:largest(既定値)、/dev/<name>、by-id:<id>。
--installer-confirm yes|noインストーラーが書き込む前に PC のコンソールで質問するかどうか。既定値は yes。
--installer-after poweroff|rebootインストーラーの完了後に PC が行うこと。既定値は poweroff。
--installer-allow-usb yes|noインストーラーが USB ディスクに書き込んでよいかどうか。既定値は no。
--wifi-ssid <name>.flock ファイルの WiFi の代わりに、デバイスが接続する WiFi。
--wifi-password-file <file>--wifi-ssid のパスフレーズを 1 行で含むファイルまたはパイプ(/dev/stdin)。
--allow-internal--drive で指定したドライブが、このマシンの内蔵ディスクであっても書き込みます。

すべてのコマンドに共通するフラグは、フラグ、出力、終了コード に記載しています。

動作

  1. ドライブをチェックします。 --drive を解決し、何かを読み取る、取得する、質問する前に、os drives と同じ理由でドライブを拒否します。--drive がない場合(--output もない場合)は、書き込めるドライブを示して終了コード 2 で終了します。
  2. .flock ファイルを読み取ります。 5 MiB 以下の *.flock という名前のファイルで、secret と device_key を持ち、name と serial_number が単純な名前である JSON オブジェクトである必要があります。
  3. イメージを選びます。 署名付きのカタログから選び、カタログは os images と同じように取得して検証します。--image で指定したイメージ、なければ .flock ファイルが記載するハードウェアの既定のイメージ(base バリアント、標準カーネル)を選びます。ハードウェアは .flock の board.model で、それがなければ、カタログにそのアーキテクチャ用のハードウェアが 1 つだけある場合に architecture で決まります。--installer を付けると、そのハードウェア用で、そのイメージを含むインストーラースティックを選びます。
  4. 計画を示します。 stderr に、イメージ、そのファイルの取得元、.flock ファイル(名前)、WiFi、ドライブ、アンマウントするドライブのファイルシステムを表示します。その後、質問します。「No」があらかじめ選択されているため、Enter だけでは何も消去されません。
  5. イメージファイルを取得します。 --image-file のファイル、なければキャッシュのコピー、それもなければキャッシュへのダウンロードで、以前のダウンロードが止まったところから再開します。root の場合、キャッシュは Linux では /var/cache/ironflock/images、macOS では /var/root/Library/Caches/ironflock/images です。ダウンロードは .part ファイルに書き込まれます。各ファイルは、そのサイズと SHA-256 がカタログと一致する場合にだけ書き込まれます。1 分間 1 バイトも届かないダウンロードの試行は終了し、そのような試行が 3 回続くとダウンロードを断念します。
  6. ドライブを再度チェックします。 計画で示したドライブであり、引き続き拒否されないものである必要があります。つまり、同じデバイス、サイズ、シリアル番号、媒体であることです。Linux では、ベンダー、モデル、バス、各パーティションとそのファイルシステム、ラベル、UUID、サイズも含みます。シリアル番号を示さない macOS では、モデル、バス、デバイスツリー内の位置、各パーティションとその UUID です。計画の後に抜かれたスティックの名前は、次に挿されたドライブに引き継がれます。そのようなドライブには書き込まれず、何もアンマウントされません。その後、コマンドは計画に記載したファイルシステムを、それだけをアンマウントし、ドライブを書き込み用に排他的に開きます。macOS では raw デバイス(/dev/rdisk4)を通して書き込みます。2 つ目の os flash は、同時にそれを開くことができません。
  7. イメージを書き込み、その後ドライブを読み戻して比較します。
  8. .flock ファイルを書き込みます。 IRONFLOCKOS パーティションをマウントせずに、そのルートフォルダーに書き込みます。インストーラースティックには installer.conf も書き込まれます。--wifi-ssid を付けた場合、ドライブ上のコピーにはそのネットワークが記載されます。.flock ファイル自体は変更されません。
  9. macOS では、ドライブを取り出します(diskutil eject)。これで取り外せるようになります。取り出しに失敗しても、ドライブへの書き込みは完了しています。コマンドが警告を出すので、取り外す前に Finder でドライブを取り出してください。

root の場合、コマンドは、キャッシュフォルダーがリンクではなくフォルダーで、root の所有であり、ほかの誰も書き込めない場合にだけ使います。存在しない場合はモード 0700 で作成し、それ以外の場合は、そこで何かを読み取る、削除する、ダウンロードする前に停止します。カタログのイメージを取得する前に、カタログに記載されなくなったキャッシュ内のイメージファイルと、その途中までのダウンロードを削除します。

.flock ファイルが記載するものと異なるハードウェア用の --image は、計画に警告を出したうえで書き込まれます。そのデバイスではアプリが動作しないためです。IronFlockOS を実行しているデバイスでは、計画は os drives と同じように警告します。--allow-internal を付けると、計画はドライブが内蔵ディスクであることを警告します。

--yes は質問に「はい」と答えます。端末がなく(パイプ、スクリプト)--yes もない場合、コマンドは質問せず、終了コード 4 で終了します。--json も何も質問しないため、ドライブに書き込むには --yes が必要です。--json では計画は出力されず、stderr には進捗イベントだけが出力され、警告は結果に含まれます。質問と確認 と 出力と JSON を参照してください。

WiFi

デバイスは、.flock ファイルが記載する WiFi に接続します。--wifi-ssid は別のネットワークを指定します。IronFlockOS はパスフレーズ付きの WiFi にだけ接続するため、--wifi-ssid と --wifi-password-file は常に一緒に指定します。パスフレーズはファイルまたはパイプから取得し、コマンドラインからは取得しません。コマンドラインは ps やシェルの履歴に表示されるためです。コマンドはパスフレーズをどこにも表示しません。ドライブ上の .flock ファイルのコピーには、wlanssid と password にネットワークが記載されます。

注意:パスフレーズを /dev/stdin から渡す場合、stdin は端末ではないため、コマンドは質問できません。--yes を追加してください。

インストーラースティック

--installer を付けると、ドライブは UEFI を備えた PC(amd64-efi、arm64-efi)用のインストーラースティックになります。インストーラーイメージは ironflock os images --variant installer で一覧表示されます。スティックには、そのハードウェア用の複数のイメージが含まれます。スティック上の installer.conf は、インストールするイメージ(payload。手順 3 と同じように選ばれたイメージ)を示し、指定した --installer-* フラグを保持します。PC がスティックから起動すると、インストーラーは次のように動作します:

  1. --installer-disk に従ってディスクを選びます。最大のディスク(既定値)、ディスク /dev/<name>、または ID が by-id:<id> のディスクです。USB ディスクに書き込むのは、--installer-allow-usb yes の場合だけです。
  2. --installer-confirm no でない限り、書き込む前に PC のコンソールで質問します。
  3. イメージとデバイスの .flock ファイルを、そのディスクに書き込みます。
  4. PC の電源を切ります(既定値)。--installer-after reboot の場合は再起動します。

スティックを抜き、PC を内蔵ディスクから起動します。デバイスは初回起動時に登録されます。

警告:--installer-confirm no で書き込んだスティックは、そこから起動したすべての PC のディスクを、質問せずに消去します。そのようなスティックにはラベルを付け、ほかのマシンから離して保管してください。

スティックを使わずに稼働中のマシンの Linux を置き換えるには、Linux を IronFlockOS に置き換える を参照してください。

ダウンロード済みのイメージファイル

--image-file は、事前にダウンロードしたイメージファイルを書き込みます。たとえば、カタログのイメージファイルをダウンロードできないマシンで使います。ファイルのアドレスは、os images --json の url から取得してください。ファイルは、そのイメージについてカタログにあるサイズと SHA-256 に一致する場合にだけ書き込まれます。

コマンドは、ファイルをチェックするために、引き続き署名付きのカタログを必要とします。カタログを取得するか、ダウンロードサーバーに到達できない場合は、同じダウンロードベースのカタログを最後に検証したときに保持したコピーを使います。このコピーはユーザーごとで、root の場合は root のコピーです。独自のサーバーも使えます。別のダウンロードベース(--download-base または IRONFLOCK_DL_BASE)を指定すると、コマンドはカタログを <download base>/ironflockos/manifest.json から、イメージファイルを <download base>/ironflockos/<version>/<file> から取得します。

注意:ファイルは書き込みの間にもう一度読み取られ、その SHA-256 は書き込みの後に初めて再確認されます。ほかのユーザーが変更できない場所にファイルを置いてください。

仮想マシン用のイメージファイル

--output <file> は、イメージとデバイスのファイルを、ドライブの代わりに通常のファイルに書き込みます。仮想マシンがディスクとして起動する raw ディスクイメージです。イメージ、そのチェック、IRONFLOCKOS 内のファイルは、ドライブの場合と同じです。ドライブを探すことも、アンマウントすることも、開くこともないため、コマンドに root は不要です。--image、--image-file、--installer とそのフラグ、--wifi-ssid は、ドライブの場合と同じように機能します。

  • サイズ — 計画には、ファイルとそのサイズ、つまり展開したイメージのサイズが示されます。イメージをまだダウンロードする必要がある場合、その行はダウンロードの後に出力されます。
  • 質問 — 新しいファイルでは何も消去されないため、コマンドは質問しません。既存のファイルは置き換えられます。計画にその旨が示され、コマンドは先に質問します。
  • まず別の名前で — イメージは、同じフォルダー内の新しいファイル <file>.<number>.part に書き込まれます。そのファイルがイメージ全体を含み、読み戻して検証され、IRONFLOCKOS パーティションにデバイスのファイルを含んだ時点で初めて、名前 <file> が付けられます。書き込みが失敗または中断した場合は .part ファイルが削除され、その名前には何もないか、元からあったファイルが変更されずに残ります。kill -9 や停電では、.part ファイルが残ることがあります。
  • 非公開 — このファイルには、.flock ファイルと同じくデバイスのシークレットが含まれます。モード 0600 が設定され、より広いモードのファイルを置き換える場合も同じです。
  • スパース — イメージにゼロだけのブロック(4 MiB 単位のブロック)がある箇所では、ホールに対応したファイルシステム上であれば、ファイルにホールが作られます。読み取った内容は同じで、使う領域が少なくなります。
# root なしで、仮想マシン用のディスクイメージファイルを書き込む ironflock os flash -c device.flock --output device.img
IronFlockOS catalog of 2026-11-10T09:41:47Z, signed with key 036ef3bd. Image: ironflockos-amd64-efi-base 0.13.0, for x86-64 PC with UEFI Image file: https://instance-registry.ironflock.com/dl/ironflockos/0.13.0/ironflockos-amd64-efi-base-0.13.0.img.gz (638.1 MB), downloaded and checked against the catalog Device file: device.flock, for the device kitchen-pc WiFi: Office (from the .flock) Output: device.img, a new file: the image, unpacked; its size is known once the image is downloaded (the progress of downloading, checking) Unpacked, the image has 4.6 GB: the size of device.img. (the progress of writing, reading back) Done: IronFlockOS 0.13.0 (ironflockos-amd64-efi-base) is in device.img and read back, with device.flock in its IRONFLOCKOS partition. Grow the file to the size of the virtual machine's disk before the machine starts from it (truncate -s 20G device.img): on its first boot IronFlockOS makes slot B and /data in that space, and the device enrolls as kitchen-pc.

イメージは、IRONFLOCKOS パーティションと、IronFlockOS が交互に更新する 2 つのシステムスロットの 1 つ目(スロット A)を含みます。初回起動時に、IronFlockOS はスロット A と同じ大きさのスロット B と、ディスクの残りの領域にデータパーティション /data を作成します。仮想マシンがファイルから初めて起動する前に、ファイルを拡張してください。base では 10 GiB 以上、nvidia では 18 GiB 以上です。拡張した分はゼロで、ファイルシステムはこれをホールとして保持します。raw ディスクを扱えるハイパーバイザーは、ファイルをそのまま使います。ほかの形式にするには、拡張したファイルを変換します。たとえば qemu-img convert -f raw -O qcow2 device.img device.qcow2 です。

amd64-efi と arm64-efi のイメージは QEMU で起動しますが、Raspberry Pi のイメージ(rpi-arm64)は起動しません。KVM とパッケージ ovmf(Debian、Ubuntu)の UEFI ファームウェアを備えた Linux 上で amd64-efi を起動する場合:

# ファイルを拡張し、ファームウェアの変数をコピーして、マシンを起動する truncate -s 20G device.img cp /usr/share/OVMF/OVMF_VARS_4M.fd device-vars.fd qemu-system-x86_64 -machine q35 -accel kvm -cpu host -m 2048 -smp 2 \ -drive if=pflash,format=raw,unit=0,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4M.fd \ -drive if=pflash,format=raw,unit=1,file=device-vars.fd \ -drive file=device.img,format=raw,if=virtio \ -netdev user,id=net0 -device virtio-net-pci,netdev=net0 \ -device i6300esb \ -nographic
  • -nographic は、最初のシリアルポートを端末につなぎます。GRUB とカーネルはそこに出力します。Ctrl-A X で QEMU を終了します。
  • -device i6300esb はウォッチドッグです。IronFlockOS は、これを通してハングしたマシンを再起動します。
  • -netdev user は、マシンにホストのネットワークを使わせます。デバイスはこれを通して IronFlock に到達します。
  • KVM がない場合(/dev/kvm がない、またはホストのアーキテクチャが異なる場合)は、-accel kvm を外して -cpu max を使います。その場合、QEMU はマシンをエミュレートするため、はるかに遅くなります。

arm64-efi は、qemu-system-aarch64 -machine virt と、パッケージ qemu-efi-aarch64 のファームウェア(/usr/share/AAVMF/AAVMF_CODE.fd と AAVMF_VARS.fd のコピー)で、ウォッチドッグなしで起動します。Apple シリコンを搭載した Mac では、Homebrew の QEMU で、-accel hvf -cpu host とファームウェア /opt/homebrew/share/qemu/edk2-aarch64-code.fd、および edk2-arm-vars.fd のコピーを使って起動します。

例

# .flock ファイルのハードウェア用の既定のイメージを USB スティックに書き込む sudo ironflock os flash -c device.flock -d /dev/sdb # PC に NVIDIA イメージをインストールするインストーラースティックを書き込む sudo ironflock os flash -c device.flock -d /dev/sdb --image amd64-efi-nvidia --installer # WiFi「Workshop」に接続するデバイス用の SD カードを書き込む sudo ironflock os flash -c device.flock -d /dev/mmcblk0 --wifi-ssid Workshop --wifi-password-file wifi.txt # Mac でスティックを書き込む sudo ironflock os flash -c device.flock -d /dev/disk4

結果

計画と進捗は stderr に出力され、最後の行が結果です。Linux の場合:

IronFlockOS catalog of 2026-11-10T09:41:47Z, signed with key 036ef3bd. Image: ironflockos-amd64-efi-base 0.13.0, for x86-64 PC with UEFI Image file: https://instance-registry.ironflock.com/dl/ironflockos/0.13.0/ironflockos-amd64-efi-base-0.13.0.img.gz (638.1 MB), downloaded and checked against the catalog Device file: device.flock, for the device kitchen-pc WiFi: Office (from the .flock) Drive: /dev/sdb: SanDisk Ultra, 15.9 GB, usb, serial 4C530001230812115352 Everything on /dev/sdb is erased. Unmounted first: /media/anna/STICK. (the progress of downloading, checking, writing, reading back) Done: IronFlockOS 0.13.0 (ironflockos-amd64-efi-base) is on /dev/sdb and read back, with device.flock in its IRONFLOCKOS partition. Start the device from it: it enrolls as kitchen-pc on its first boot.

Mac で、まず root なしで、次に sudo を付けて実行した場合:

$ ironflock os flash -c pi.flock -d /dev/disk5 Error: "ironflock os flash" must run as root (sudo) to write a drive: sudo ironflock os flash -c pi.flock -d /dev/disk5 $ sudo ironflock os flash -c pi.flock -d /dev/disk5 --yes IronFlockOS catalog of 2026-11-10T16:41:54Z, signed with key 036ef3bd. Image: ironflockos-rpi-arm64-base 0.14.0, for Raspberry Pi 4, 400 and CM4 Image file: https://instance-registry.ironflock.com/dl/ironflockos/0.14.0/ironflockos-rpi-arm64-base-0.14.0.img.gz (640.1 MB), downloaded and checked against the catalog Device file: pi.flock, for the device pi-workshop WiFi: Office (from the .flock) Drive: /dev/disk5: Built In SDXC Reader, 15.9 GB, Secure Digital Everything on /dev/disk5 is erased. Unmounted first: /Volumes/UNTITLED. (the progress of downloading, checking, writing, reading back) Done: IronFlockOS 0.14.0 (ironflockos-rpi-arm64-base) is on /dev/disk5 and read back, with pi.flock in its IRONFLOCKOS partition. /dev/disk5 is ejected and can be taken out. Start the device from it: it enrolls as pi-workshop on its first boot.

--json の場合。ここではインストーラースティックの例です(--installer --installer-confirm no --yes --json):

{"action":"flashed","device":"kitchen-pc","device_file":"device.flock","hardware":"x86-64 PC with UEFI","image":{"image_id":"ironflockos-amd64-efi-installer","version":"0.13.0","file":"ironflockos-amd64-efi-installer-0.13.0.img.gz","url":"https://instance-registry.ironflock.com/dl/ironflockos/0.13.0/ironflockos-amd64-efi-installer-0.13.0.img.gz","size":2512345678,"sha256":"..."},"installer":{"payload":"ironflockos-amd64-efi-base","disk":"largest","confirm":"no","after":"poweroff","allow_usb":"no"},"wifi":{"ssid":"Office","from":"flock"},"drive":{"device":"/dev/sdb","size":15931539456,"bus":"usb","model":"SanDisk Ultra","serial":"4C530001230812115352","internal":false},"source":"download","unmounted":["/media/anna/STICK"],"bytes":6442450944,"verified":true,"ejected":false,"files":["device.flock","installer.conf"],"catalog":{"issued_at":"2026-11-10T09:41:47Z","key_id":"036ef3bd","from_cache":false,"notes":[]},"warnings":[]}

--output の場合、結果には drive の代わりに output があります。たとえば "output":{"file":"/home/anna/device.img","replaced":true} です。

フィールド意味
actionflashed
device.flock ファイルから取得したデバイスの名前。
device_fileIRONFLOCKOS 内の .flock ファイルの名前。
hardwareイメージの対象ハードウェア。
image書き込んだイメージ:image_id、version、そのファイルの file、url、size、sha256。url はダウンロード元、またはダウンロードしていれば使われたはずの場所です。
installerインストーラースティックの場合のみ:インストールするイメージである payload と、インストーラーが適用する disk、confirm、after、allow_usb。
wifissid と from:flock または flags。WiFi がない場合は null。
driveドライブの場合のみ:device、size、bus、model、serial、internal。internal は、--allow-internal で書き込んだ内蔵ディスクの場合に true です。
output--output の場合のみ:絶対パスである file と、同じ名前のファイルを置き換えた場合に true となる replaced。
sourceイメージファイルの取得元:download、cache、file。
unmounted書き込み前にアンマウントしたマウントポイント。--output では空です。
bytes, verified書き込んだバイト数(セクター単位に切り上げたイメージのサイズ。--output ではファイルのサイズ)と、ドライブまたはファイルからそれを読み戻して検証したこと。
ejectedmacOS:ドライブが取り出され、取り外せる状態であること。Linux と --output では false。
filesIRONFLOCKOS に書き込んだファイル。
catalog使用したカタログ:issued_at、key_id、from_cache、およびこの ironflock がカタログから除いたものについての notes。
warnings計画の警告と、macOS ではドライブを取り出せなかったこと。

拒否する場合

終了コード 3。何も書き込まれません:

  • ドライブが、os drives が拒否するものである。エラーには理由が示され、--yes を付けても変わりません。唯一の例外はこのマシンの内蔵ディスクです。--drive で指定した場合、--allow-internal はそれに書き込みます。このフラグでドライブが書き込めるようになる場合は、エラーにこのフラグが示されます。このフラグはほかの拒否を解除せず、質問にも答えません。
  • 計画と書き込みの間にドライブが変わった、またはその時点で拒否される。エラーには何が変わったかが示されます。
  • ドライブを開いたときに使用中である。計画に記載されていないファイルシステムがマウントされている、ファイルシステムをアンマウントできない、またはプログラムがドライブを使用している。
  • コマンドが root で実行されていない(macOS では、ドライブの raw デバイスに書き込めるユーザーとしても実行されていない)。エラーには sudo を付けたコマンドラインが示されます。
  • --output の場合:何かを読み取る、取得する前の時点で、その名前が通常のファイルではない(デバイス、フォルダー、名前付きパイプ、またはシンボリックリンク)、またはそのフォルダーが存在しない。新しいファイルを作れないフォルダー(権限がない、読み取り専用のファイルシステム)は、計画の後、ダウンロードの前に拒否されます。計画では新しいファイルとされていたのに、イメージの書き込み中にその名前で作られたファイルは置き換えられません。

終了コード 2。コマンドラインの誤り:

  • --drive も --output もない(--allow-internal を付けた場合も)。--drive または --allow-internal と組み合わせた --output、名前のない --output、- を指定した --output。-c の .flock ファイルまたは --image-file のファイルを指定した --output。
  • --installer なしの --installer-* フラグ、またはインストーラーが受け付けない値。
  • --wifi-password-file なしの --wifi-ssid、またはその逆。
  • どのハードウェア用かを記載していない .flock ファイル。その場合は --image でイメージを選びます。
  • カタログにないイメージ、そのイメージを含まないインストーラースティック、またはインストーラースティックのないハードウェア。
  • --host での --image-file と --output。--host はイメージファイルを別のマシンにコピーせず、ファイルを持ち帰ることもしないためです。このコマンドは --host を付けずにここで実行するか、マシン自体で実行してください。.flock ファイルとパスフレーズファイルは一緒に送られます。

終了コード 4:質問に「いいえ」と答えた(Enter だけ、または Esc)、または質問できず、--yes も指定されていなかった。

終了コード 1。コマンドが失敗した:

  • .flock ファイルまたはパスフレーズファイルが正しいものでない、またはイメージファイルがカタログのものでない。
  • os images が失敗するのと同じ理由で、カタログを使えない。
  • ダウンロード、書き込み、または読み戻しが失敗した。最初のブロックの後で書き込みが失敗した場合(I/O エラー、イメージより小さいドライブ)は、ドライブにイメージの一部が書き込まれていて、それでは何も起動しないことが示されます。もう一度書き込んでください。
  • イメージはドライブに書き込まれて読み戻しも済んだが、.flock ファイルを IRONFLOCKOS に書き込めなかった。このファイルがないとデバイスは登録されません。同じコマンドで両方をもう一度書き込みます。
  • --output の場合:ファイルシステムがいっぱいである、デバイスのファイルをイメージに入れられない、またはイメージの書き込み中に .part ファイルのエントリーが置き換えられた。その場合、名前は以前のままです。

終了コード 130:イメージのダウンロード、書き込み、読み戻しの最中の Ctrl-C。中断されたダウンロードは何も書き込んでおらず、同じコマンドで再開されます。書き込みや読み戻しは次のブロックで止まり、エラーはドライブに何が残っているかを示します。最後のブロックを読み戻した後は、コマンドは残りの短い手順を最後まで実行し、0 で終了します。2 回目の Ctrl-C はコマンドをすぐに終了させます。--output の場合は .part ファイルが残ることがあります。

Last updated on