Skip to Content
IoT Uygulama GeliştirmeIronFlock CLIIronFlockOS'u Bir Sürücüye Yazma

IronFlockOS’u Bir Sürücüye Yazma

ironflock os flash, yeni bir cihazın başlatılacağı sürücüyü hazırlar. IronFlockOS’u ve cihaz yapılandırma dosyasını (.flock) sürücüye yazar; cihaz ilk açılışında kaydolur, yani o .flock dosyasının cihazı olarak IronFlock’a bağlanır. Şunları hazırlayabilirsiniz:

  • cihazın başlatılacağı bir USB bellek, SD kart veya harici disk,
  • IronFlockOS’u bir PC’nin dahili diskine kuran bir yükleyici bellek,
  • bir sanal makinenin başlatılacağı bir disk görüntüsü dosyası.

FlockFlasher aynı iş için kullanılan masaüstü uygulamasıdır. Bir cihazın .flock dosyasını almak için bkz. Cihaz Bağlama.

Tipik Bir Çalıştırma

# 1. Belleği veya SD kartı takın, ardından yazılabilecek sürücüleri listeleyin ironflock os drives # 2. İsteğe bağlı: kataloğun sunduğu görüntüleri listeleyin ironflock os images # 3. IronFlockOS'u ve cihazın .flock dosyasını sürücüye yazın sudo ironflock os flash -c device.flock -d /dev/sdb

os flash planını gösterir ve sürücüyü silmeden önce sorar. İş bittiğinde sürücüyü cihaza takın ve cihazı ondan başlatın.

ironflock os images

Bir sürücüye yazılabilecek IronFlockOS görüntülerini listeler. Varsayılan olarak üretim kanalındaki sürümün görüntülerini listeler.

ironflock os images [flags]

Linux ve macOS’ta çalışır. Root gerektirmez. Hiçbir şey sormaz.

Bayraklar

BayrakAnlamı
--channel <name>Sürümü listelenecek kanal: production (varsayılan) veya test.
--version <x.y.z>Bir kanalın sürümü yerine listelenecek sürüm, örneğin 0.13.0.
--target <target>Yalnızca bu donanım hedefinin görüntüleri: amd64-efi, arm64-efi veya rpi-arm64.
--variant <variant>Yalnızca bu varyantın görüntüleri: base, nvidia veya installer.
--kernel <kernel>Yalnızca bu çekirdeğe sahip görüntüler: std veya rt.

Her komutun bayrakları Bayraklar, Çıktı ve Çıkış Kodları sayfasındadır.

Ne Yapar

Liste, indirme sunucusundaki imzalı IronFlockOS kataloğundan gelir: <download base>/ironflockos/manifest.json. ironflock kataloğu yalnızca Ed25519 imzası ironflock içine yerleşik katalog anahtarına göre doğrulandığında kullanır. FlockFlasher ve cihaz ajanı aynı anahtarı sabitler. Bu denetimi hiçbir bayrak ve hiçbir ortam değişkeni kapatmaz. Başka bir indirme tabanı belirtmediğiniz sürece indirme tabanı IronFlock bulutudur; bkz. İndirme Tabanı.

Doğrulanan son katalog, her indirme tabanı için bir kopya olmak üzere bir önbellek klasöründe saklanır:

KullanıcıLinuxmacOS
siz~/.cache/ironflock/catalog/~/Library/Caches/ironflock/catalog/
root/var/cache/ironflock/ altında/var/root/Library/Caches/ironflock/ altında

İndirme sunucusuna erişilemediğinde saklanan kopya onun yerine geçer ve stderr’de bir not görünür. Aynı indirme tabanının, saklanan kopyadan daha eski bir kataloğu reddedilir.

Bir görüntü, donanım hedefine, varyantına ve çekirdeğine göre adlandırılır: ironflockos-<target>-<variant>, gerçek zamanlı çekirdek için sonuna -rt eklenir. ironflockos-amd64-efi-base-rt, UEFI’li x86-64 PC’ler için gerçek zamanlı çekirdekli temel sistemdir. Hedefler şunlardır:

  • amd64-efi — UEFI’li x86-64 PC
  • arm64-efi — UEFI’li ARM64 makine
  • rpi-arm64 — Raspberry Pi 4, 400 ve CM4; Raspberry Pi 5 ve CM5

Varyantlar base, nvidia ve installer şeklindedir. Yükleyici görüntüsü, taşıdığı görüntülerden birini kendisinden başlatılan makinenin diskine kuran bir USB bellek oluşturur. Bu ironflock sürümünün tanımadığı bir varyanta, çekirdeğe veya mimariye ait (daha yeni bir sürümden gelen) bir görüntü, stderr’de bir notla birlikte dışarıda bırakılır.

Örnekler

# Güncel üretim sürümünün görüntüleri ironflock os images # Yalnızca Raspberry Pi görüntüleri ironflock os images --target rpi-arm64 # Test kanalının görüntüleri, JSON olarak ironflock os images --channel test --json

Sonuç

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 ile (burada --target rpi-arm64 ile birlikte):

{"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 ve key_id kataloğu tanımlar, channels her kanalın sürümünü belirtir ve indirme sunucusu yanıt vermediğinde from_cache değeri true olur. Her görüntünün url, size ve sha256 değerleriyle birlikte bir file alanı vardır. boards, bir .flock dosyasının belirttiği kart modelleridir (board.model), hardware ise bunların adlarıdır. Bir yükleyici görüntüsünde ayrıca taşıdığı görüntülerin kimlikleri olan payloads bulunur.

Başarısız Olduğu Durumlar

  • Çıkış kodu 2 — birlikte verilen --channel ve --version, geçerli bir sürüm numarası olmayan bir sürüm ya da kataloğun içermediği bir kanal, sürüm, hedef, varyant veya çekirdek. Hata, katalogda nelerin bulunduğunu belirtir.
  • Çıkış kodu 1 — katalog doğrulanmıyor, 64 KiB’tan büyük, bu ironflock sürümünün okuyabileceği bir katalog değil ya da saklanan kopyadan eski; veya katalog alınamıyor ve saklanan bir kopya yok.

ironflock os drives

Bu makinenin, bir IronFlockOS görüntüsünün yazılabileceği sürücülerini listeler: USB bellekler, SD kartlar, harici diskler. Hiçbir sürücüye yazmaz, hiçbir sürücünün bağlantısını kaldırmaz ve hiçbir sürücüyü açmaz.

ironflock os drives [flags]

Linux ve macOS’ta çalışır. Root gerektirmez. Hiçbir şey sormaz. Linux’ta lsblk (util-linux paketinden) çalıştırır ve /proc ile /sys okur. macOS’ta diskutil list, diskutil info ve hdiutil info çalıştırır.

Bayraklar

BayrakAnlamı
--allReddedilen sürücüleri de nedeniyle birlikte listeler.

Her komutun bayrakları Bayraklar, Çıktı ve Çıkış Kodları sayfasındadır.

Hangi Sürücüler Reddedilir

os flash, os drives komutunun reddettiği sürücüleri aynı nedenlerle reddeder. Bir sürücü şu durumlarda reddedilir (geçerli olan ilk neden gösterilir):

  1. Bir bölümse, örneğin /dev/sdb1. Ret mesajı bölümün diskini belirtir: bir görüntü diskin tamamına yazılır.
  2. Disk değilse: bir optik sürücü, bellekteki bir disk (zram), başka sürücüler üzerine kurulmuş bir disk birimi (LVM, dm-crypt, RAID, device-mapper; macOS’ta bir APFS kapsayıcısı, bir AppleRAID kümesi veya başka bir sentezlenmiş disk) ya da komutun tanımadığı bir aygıt türü (nbd, mtdblock).
  3. Çalışan sistemin bir kısmını tutuyorsa: /, /boot, /efi, /usr, /var, /etc veya bunlardan birinin altındaki bir bağlama noktası (/boot/efi konumundaki EFI bölümü, /var/lib/docker konumundaki Docker verileri), /home, /opt, /srv, /data, swap ya da canlı bir sistemin başlatıldığı ortam. Bu, sistem sürücüde nasıl durursa dursun geçerlidir: bir bölümde; LVM, dm-crypt, RAID veya device-mapper üzerinden; birkaç sürücüye yayılan bir btrfs dosya sisteminde; bir ZFS havuzunda; bir overlay içinde ya da bir loop aygıtının okuduğu bir dosyada. macOS’ta: / ve /System altındaki disk birimleri, APFS kapsayıcıları üzerinden onları tutan diske kadar.
  4. Kullanımdaysa: LVM, dm-crypt, RAID veya device-mapper tarafından, bağlı bir veri kümesine sahip bir ZFS havuzu tarafından ya da üzerindeki bir dosyayı okuyan bir loop aygıtı tarafından. macOS’ta ayrıca üzerindeki bir APFS kapsayıcısı, bir AppleRAID kümesi, dosyası bu sürücüde bulunan bir disk görüntüsü ya da sisteme eklenmemiş Core Storage, AppleRAID veya APFS kapsayıcısı tarafından. macOS, APFS kapsayıcısı olan bir belleği yalnızca bellek silindiğinde bırakır; bu yüzden ret nedeni belleği silen komutu belirtir, örneğin diskutil eraseDisk FAT32 IRONFLOCK MBR /dev/disk6 (ya da Disk İzlencesi’ndeki Sil).
  5. Makinenin dahili diskiyse: bir SATA veya NVMe disk, bir kartın eMMC belleği. Bir sürücü, USB veya aygıtları çıkarılabilen başka bir veri yolu üzerinden bağlanmadıkça dahilidir. Yerleşik bir kart okuyucu dahilidir, ancak içindeki SD kart çıkarılabilir ortamdır ve bir Mac’te de sunulur. macOS’ta nerede olduğunu söylemeyen bir disk dahili sayılır. os flash --allow-internal, başka hiçbir neden reddetmediğinde --drive bayrağının belirttiği dahili bir diske yazar.
  6. Çalışan sistemin bir kısmını tutuyor olabilirse: çalışan sistemin bir kısmı bir sürücüye kadar izlenemediğinde her sürücü reddedilir. Sistemi kendisini çalıştıran makinede bulunan bir konteynerde ve macOS’ta Core Storage gibi hiçbir fiziksel diske ulaşmayan bir disk birimindeki bir sistemde durum budur.
  7. Salt okunursa, örneğin kilitli bir SD kart.
  8. Ortam yoksa, örneğin kartsız bir kart okuyucu.

Bağlı dosya sistemleri olan bir sürücü sunulur; mounted bunları listeler ve os flash yazmadan önce bunların bağlantısını kaldırır. Loop aygıtları ve macOS’ta eklenmiş disk görüntüleri listelenmez, ancak os flash, --drive bayrağının belirttiği böyle bir aygıta yazar.

IronFlockOS çalıştıran bir cihazda komut stderr’de ve warnings içinde uyarır: bir hedefin her IronFlockOS görüntüsü aynı bölüm UUID’lerine sahiptir; bu yüzden ikinci bir IronFlockOS sürücüsü takılıyken çalışan sistem kendi bölümlerini sürücününkilerden ayırt edemez.

Örnekler

# Yazılabilecek sürücüler ironflock os drives # Tüm sürücüler, reddedilen her biri için nedeniyle birlikte ironflock os drives --all # Sürücüler JSON olarak ironflock os drives --json

Sonuç

Linux’ta:

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

--all ile:

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

Bir Mac’te, --all ile:

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 ile (kısaltılmış):

{"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":[]}
AlanAnlamı
sizeBayt cinsinden boyut.
busSistemin kendi adlandırmasıyla veri yolu: Linux’ta usb, sata, nvme, mmc; macOS’ta USB, Secure Digital, Apple Fabric, PCI-Express.
removableOrtam sürücüden çıkarılabilir.
serialSeri numarası. Bir Mac seri numarası vermez.
mountedSürücünün bağlı dosya sistemleri.
systemSürücünün, çalışan sistemin hangi kısmını tuttuğu.
maybe_systemÇalışan sistemin hangi kısmının bir sürücüye kadar izlenemediği.
holdersSürücüyü neyin kullandığı.
writable, refusalReddedilen bir sürücüde (--all ile) "writable":false bulunur, neden de refusal içindedir.

Yazılacak sürücü yoksa metin bunu söyler, drives boştur ve çıkış kodu 0’dır.

Başarısız Olduğu Durumlar

  • Çıkış kodu 3 — Linux’ta lsblk kurulu değil; ya da komut Linux veya macOS dışında bir sistemde çalışıyor.

ironflock os flash

IronFlockOS’u bir sürücüye (USB bellek, SD kart, harici disk) yazar ve cihazın .flock dosyasını sürücünün IRONFLOCKOS bölümüne, yani her IronFlockOS sürücüsünde bulunan bu adlı FAT32 bölümüne koyar. Cihaz ilk açılışında bu dosyayla kaydolur. --output ile bunun yerine aynısını sanal makine için bir disk görüntüsü dosyasına yazar.

Uyarı: Sürücüdeki her şey silinir. Yazmadan önce sürücü adını ironflock os drives ile denetleyin. os flash hiçbir zaman kendi başına sürücü seçmez.

ironflock os flash -c <device.flock> (-d <drive> | --output <file>) [flags]
LinuxmacOS
Çalışırevetevet
Rootbir sürücüye yazmak için gerekirbir sürücüye yazmak için gerekir; sürücünün ham aygıtına yazma izniniz varsa gerekmez
Sorularsürücüyü silmeden veya --output dosyasını değiştirmeden önce; “No” yanıtı önceden seçilidiraynı

Root olmadan hata, başında sudo bulunan, yazılacak komut satırını belirtir. macOS’ta sürücünün ham aygıtına yazma izni olan bir kullanıcı root gerektirmez: bir disk görüntüsünü ekleyen kullanıcı ya da makine sahibinin sürücüyü verdiği bir kullanıcı, örneğin sudo chown <user> /dev/disk4 /dev/rdisk4 ile. --output ile komut root gerektirmez. Ayrıca bkz. Root Yetkileri.

Bayraklar

BayrakAnlamı
-c, --config <file>Cihazın .flock dosyası. Zorunludur.
-d, --drive <drive>Silinecek ve yazılacak sürücü. Linux’ta /dev/sdb veya /dev/mmcblk0 ya da /dev/disk/by-id altındakiler gibi ona giden bir bağlantı. macOS’ta /dev/disk4 (ayrıca /dev/rdisk4 veya disk4). ironflock os drives bunları listeler.
--output <file>Bir sürücü yerine yazılacak dosya: sanal makine için ham bir disk görüntüsü.
--image <id>Yazılacak görüntü, ironflockos- önekiyle veya öneksiz, örneğin amd64-efi-nvidia. Varsayılan: .flock dosyasının belirttiği donanım için görüntü.
--image-file <file>Önceden indirilmiş görüntü dosyası. Kataloğun bu görüntü için verdiği dosya olmalıdır.
--installerGörüntüyü bir PC’nin dahili diskine kuran yükleyici belleği yazar.
--installer-disk <rule>Yükleyicinin yazacağı disk: largest (varsayılan), /dev/<name> veya by-id:<id>.
--installer-confirm yes|noYükleyicinin yazmadan önce PC’nin konsolunda sorup sormayacağı. Varsayılan yes.
--installer-after poweroff|rebootYükleyici işini bitirdiğinde PC’nin ne yapacağı. Varsayılan poweroff.
--installer-allow-usb yes|noYükleyicinin bir USB diske yazıp yazamayacağı. Varsayılan no.
--wifi-ssid <name>Cihazın .flock dosyasındaki yerine katılacağı WiFi ağı.
--wifi-password-file <file>Tek satırı --wifi-ssid ağının parolası olan bir dosya veya pipe (/dev/stdin).
--allow-internal--drive bayrağının belirttiği sürücüye, bu makinenin dahili diski olsa bile yazar.

Her komutun bayrakları Bayraklar, Çıktı ve Çıkış Kodları sayfasındadır.

Ne Yapar

  1. Sürücüyü denetler. --drive değerini çözümler ve herhangi bir şeyi okumadan, almadan veya sormadan önce os drives komutunun verdiği nedenlerle reddeder. --drive olmadan (ve --output olmadan) yazabileceği sürücüleri belirtir ve çıkış kodu 2 ile sona erer.
  2. .flock dosyasını okur. Dosya, adı *.flock olan, en fazla 5 MiB büyüklüğünde, secret ve device_key içeren bir JSON nesnesi olmalı; name ve serial_number değerleri de sade adlar olmalıdır.
  3. Görüntüyü seçer; bunu os images gibi aldığı ve doğruladığı imzalı katalogdan yapar. --image bayrağının belirttiği görüntüyü, yoksa .flock dosyasının belirttiği donanımın varsayılan görüntüsünü (base varyantı, standart çekirdek) alır. Donanımı dosyanın board.model değeri, yoksa katalogda bu mimari için tek bir donanım varsa architecture değeri belirler. --installer ile o donanımın, görüntüyü taşıyan yükleyici belleğini alır.
  4. Planı stderr’de gösterir: görüntü, dosyasının nereden geldiği, .flock dosyası (adıyla), WiFi, sürücü ve sürücünün bağlantısı kaldırılacak dosya sistemleri. Ardından sorar. “No” önceden seçilidir; böylece yalnızca Enter’a basmak hiçbir şeyi silmez.
  5. Görüntü dosyasını alır: --image-file dosyası, yoksa önbellekteki kopya, yoksa önbelleğe yapılan ve önceki bir indirmenin durduğu yerden devam eden bir indirme. Root olarak önbellek Linux’ta /var/cache/ironflock/images, macOS’ta /var/root/Library/Caches/ironflock/images olur. İndirme bir .part dosyasına gider. Her dosya yalnızca boyutu ve SHA-256 değeri kataloğunkiyle aynı olduğunda yazılır. Bir dakika boyunca hiç bayt getirmeyen bir indirme denemesi sona erer; art arda üç böyle denemeden sonra indirmeden vazgeçilir.
  6. Sürücüyü yeniden denetler. Sürücü planın gösterdiği sürücü olmalı ve hâlâ reddedilmemelidir: aynı aygıt, boyut, seri numarası ve ortam. Linux’ta buna üretici, model, veri yolu ve dosya sistemi, etiketi, UUID’si ve boyutuyla her bölüm dahildir. Seri numarası vermeyen macOS’ta model, veri yolu, aygıt ağacındaki yer ve UUID’leriyle bölümler denetlenir. Plandan sonra çekilen bir bellek, adını takılan bir sonraki sürücüye bırakır; böyle bir sürücüye yazılmaz ve hiçbir şeyin bağlantısı kaldırılmaz. Ardından komut planın listelediği dosya sistemlerinin, yalnızca onların, bağlantısını kaldırır ve sürücüyü yazmak için özel erişimle açar. macOS’ta, ikinci bir os flash komutunun aynı anda açamayacağı ham aygıt (/dev/rdisk4) üzerinden yazar.
  7. Görüntüyü yazar, ardından sürücüyü geri okur ve karşılaştırır.
  8. .flock dosyasını yazar: IRONFLOCKOS bölümünün kök klasörüne, bölümü bağlamadan. Bir yükleyici bellek ayrıca installer.conf dosyasını alır. --wifi-ssid ile sürücüdeki kopya o ağı belirtir; .flock dosyasının kendisi değiştirilmez.
  9. macOS’ta sürücüyü çıkarır (diskutil eject); böylece sürücüyü çekebilirsiniz. Çıkarma başarısız olursa sürücü yine de yazılmıştır: komut uyarır, siz de sürücüyü çekmeden önce Finder’da çıkarırsınız.

Root olarak komut bir önbellek klasörünü yalnızca bağlantı değil gerçek bir klasörse, root’a aitse ve başka kimse ona yazamıyorsa kullanır. Eksik olanı mod 0700 ile oluşturur; başka her durumda orada herhangi bir şeyi okumadan, silmeden veya indirmeden önce durur. Katalogdan bir görüntü almadan önce, önbellekte kataloğun artık listelemediği görüntü dosyalarını ve bunların yarım kalmış indirmelerini siler.

.flock dosyasının belirttiğinden başka bir donanım için verilen bir --image, plandaki bir uyarıdan sonra yazılır: cihaz uygulamalarını çalıştıramazdı. IronFlockOS çalıştıran bir cihazda plan, os drives gibi uyarır. --allow-internal ile plan, sürücünün dahili bir disk olduğu konusunda uyarır.

--yes soruyu evet ile yanıtlar. Terminal olmadan (bir pipe, bir betik) ve --yes olmadan komut sormaz ve çıkış kodu 4 ile sona erer. --json da hiçbir şey sormaz; bu yüzden bir sürücüye yazmak için --yes gerektirir. --json ile plan yazdırılmaz: stderr yalnızca ilerleme olaylarını taşır, uyarılar ise sonuçtadır. Bkz. Sorular ve Onay ve Çıktı ve JSON.

WiFi

Cihaz, .flock dosyasının belirttiği WiFi ağına katılır. --wifi-ssid ona başka bir ağ verir. IronFlockOS yalnızca parolalı bir WiFi ağına katılır; bu yüzden --wifi-ssid ve --wifi-password-file her zaman birlikte verilir. Parola bir dosyadan veya bir pipe üzerinden gelir; ps çıktısının ve kabuk geçmişinin onu göstereceği komut satırından asla gelmez. Komut parolayı hiçbir yere yazdırmaz. Sürücüdeki .flock kopyası ağı wlanssid ve password alanlarında belirtir.

Not: Parola /dev/stdin üzerinden geldiğinde stdin bir terminal değildir; bu yüzden komut soru soramaz. --yes ekleyin.

Yükleyici Bellek

--installer ile sürücü, UEFI’li bir PC (amd64-efi, arm64-efi) için yükleyici bellek olur; ironflock os images --variant installer yükleyici görüntülerini listeler. Bellek, donanımının birkaç görüntüsünü taşır; bellekteki installer.conf dosyası kuracağı görüntüyü (payload, 3. adımdaki gibi seçilen görüntü) belirtir ve verdiğiniz --installer-* bayraklarını tutar. PC bellekten başlatıldığında yükleyici:

  1. diski --installer-disk değerine göre seçer: en büyük disk (varsayılan), /dev/<name> diski veya by-id:<id> kimliğine sahip disk. Bir USB diske yalnızca --installer-allow-usb yes ile yazar.
  2. --installer-confirm no verilmedikçe yazmadan önce PC’nin konsolunda sorar.
  3. görüntüyü ve cihazın .flock dosyasını o diske yazar.
  4. PC’yi kapatır (varsayılan) ya da --installer-after reboot ile yeniden başlatır.

Belleği çekin ve PC’yi dahili diskinden başlatın. Cihaz ilk açılışında kaydolur.

Uyarı: --installer-confirm no ile yazılmış bir bellek, kendisinden başlatılan her PC’nin diskini sormadan siler. Böyle bir belleği etiketleyin ve diğer makinelerden uzak tutun.

Çalışan bir makinenin Linux’unu bellek olmadan değiştirmek için bkz. Linux’u IronFlockOS ile Değiştirme.

İndirilmiş Bir Görüntü Dosyası

--image-file, önceden indirdiğiniz bir görüntü dosyasını yazar; örneğin kataloğun görüntü dosyalarını indiremeyen bir makinede. Dosyanın adresini os images --json çıktısındaki url alanından alın. Dosya yalnızca kataloğun o görüntü için verdiği boyuta ve SHA-256 değerine sahipse yazılır.

Komut, dosyayı denetlemek için yine de imzalı kataloğa ihtiyaç duyar. Kataloğu alır ya da indirme sunucusuna erişilemediğinde, aynı indirme tabanının bir kataloğunun son doğrulandığı seferde sakladığı kopyayı kullanır. Bu kopya kullanıcıya özeldir: root olarak root’un kopyasıdır. Kendi sunucunuz da çalışır: başka bir indirme tabanıyla (--download-base veya IRONFLOCK_DL_BASE) komut kataloğu <download base>/ironflockos/manifest.json adresinden, görüntü dosyasını <download base>/ironflockos/<version>/<file> adresinden alır.

Not: Dosya yazılırken bir kez daha okunur ve SHA-256 değeri ancak yazmadan sonra yeniden bilinir. Dosyayı başka hiçbir kullanıcının değiştiremeyeceği bir yerde tutun.

Sanal Makine İçin Görüntü Dosyası

--output <file>, görüntüyü ve cihazın dosyalarını bir sürücü yerine normal bir dosyaya yazar: bir sanal makinenin disk olarak başlatıldığı ham bir disk görüntüsü. Görüntü, denetimleri ve IRONFLOCKOS içindeki dosyalar bir sürücüdekiyle aynıdır. Hiçbir sürücü aranmaz, bağlantısı kaldırılmaz veya açılmaz; bu yüzden komut root gerektirmez. --image, --image-file, bayraklarıyla birlikte --installer ve --wifi-ssid bir sürücüde olduğu gibi çalışır.

  • Boyut — Plan dosyayı ve boyutunu belirtir: görüntünün açılmış hâlinin boyutu. Görüntünün henüz indirilmesi gerekiyorsa bu satır indirmeden sonra gelir.
  • Soru — Yeni bir dosya hiçbir şeyi silmez ve komut sormaz. Var olan bir dosyanın yerine yenisi yazılır: plan bunu söyler ve komut önce sorar.
  • Önce başka bir adla — Görüntü aynı klasörde yeni bir dosyaya, <file>.<number>.part dosyasına gider. Dosya <file> adını ancak görüntünün tamamını tuttuğunda, geri okunduğunda ve IRONFLOCKOS bölümünde cihazın dosyaları bulunduğunda alır. Başarısız olan veya kesilen bir yazma .part dosyasını kaldırır; o adda ya hiçbir şey ya da daha önce orada olan dosya değişmeden bulunur. Bir kill -9 veya güç kesintisi .part dosyasını geride bırakabilir.
  • Özel — Dosya, .flock dosyası gibi cihazın gizli bilgisini tutar. Daha geniş izinli bir dosyanın yerine geçtiğinde de mod 0600 alır.
  • Seyrek — Görüntüde tam bir sıfır bloğunun bulunduğu yerlerde (4 MiB’lık bloklar), dosya delikleri destekleyen bir dosya sisteminde bir delik alır. Aynı şekilde okunur ve daha az yer kaplar.
# Root olmadan, sanal makine için bir disk görüntüsü dosyası yazın 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.

Görüntü, IRONFLOCKOS bölümünü ve IronFlockOS’un sırayla güncellediği iki sistem yuvasından ilkini (A yuvası) tutar. IronFlockOS ilk açılışında A yuvası kadar büyük olan B yuvasını ve diskin geri kalanında /data veri bölümünü oluşturur. Sanal makine dosyadan ilk kez başlatılmadan önce dosyayı büyütün: base için en az 10 GiB’a, nvidia için en az 18 GiB’a. Dosyanın kazandığı alan sıfırlardan oluşur ve dosya sistemi bunu delik olarak tutar. Ham diskleri kabul eden bir hipervizör dosyayı olduğu gibi kullanır. Başka bir biçim için büyütülmüş dosyayı dönüştürün, örneğin qemu-img convert -f raw -O qcow2 device.img device.qcow2 ile.

amd64-efi ve arm64-efi görüntüleri QEMU’da başlar; Raspberry Pi görüntüsü (rpi-arm64) başlamaz. KVM’li ve ovmf paketinin UEFI firmware’ine sahip bir Linux’ta (Debian, Ubuntu) amd64-efi için:

# Dosyayı büyütün, firmware değişkenlerini kopyalayın ve makineyi başlatın 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 ilk seri portu, GRUB’un ve çekirdeğin yazdığı terminale verir. Ctrl-A X QEMU’yu sonlandırır.
  • -device i6300esb bir watchdog’dur; IronFlockOS donan bir makineyi bunun üzerinden yeniden başlatır.
  • -netdev user sanal makineye onu çalıştıran bilgisayarın ağını verir; cihaz IronFlock’a bu ağ üzerinden erişir.
  • KVM olmadan (/dev/kvm yoksa ya da bilgisayar başka bir mimarideyse) -accel kvm bayrağını çıkarın ve -cpu max kullanın. QEMU bu durumda makineyi öykünür; bu çok daha yavaştır.

arm64-efi, qemu-system-aarch64 -machine virt ve qemu-efi-aarch64 paketinin firmware’i (/usr/share/AAVMF/AAVMF_CODE.fd ve AAVMF_VARS.fd dosyasının bir kopyası) ile, watchdog olmadan başlar. Apple silicon’lu bir Mac’te Homebrew’dan kurulan QEMU onu -accel hvf -cpu host ve /opt/homebrew/share/qemu/edk2-aarch64-code.fd firmware’i ile, edk2-arm-vars.fd dosyasının bir kopyasıyla başlatır.

Örnekler

# .flock dosyasının donanımı için varsayılan görüntüyü bir USB belleğe yazın sudo ironflock os flash -c device.flock -d /dev/sdb # Bir PC'ye NVIDIA görüntüsünü kuran bir yükleyici bellek yazın sudo ironflock os flash -c device.flock -d /dev/sdb --image amd64-efi-nvidia --installer # "Workshop" WiFi ağına katılan bir cihaz için SD kart yazın sudo ironflock os flash -c device.flock -d /dev/mmcblk0 --wifi-ssid Workshop --wifi-password-file wifi.txt # Bir Mac'te bellek yazın sudo ironflock os flash -c device.flock -d /dev/disk4

Sonuç

Plan ve ilerleme stderr’e gider; son satırlar sonuçtur. Linux’ta:

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.

Bir Mac’te, önce root olmadan, sonra sudo ile:

$ 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 ile, burada bir yükleyici bellek için (--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 ile sonuçta drive yerine output bulunur, örneğin "output":{"file":"/home/anna/device.img","replaced":true}.

AlanAnlamı
actionflashed
device.flock dosyasından cihazın adı.
device_fileIRONFLOCKOS içindeki .flock dosyasının adı.
hardwareGörüntünün hedeflediği donanım.
imageYazılan görüntü: image_id, version ve dosyasının file, url, size ve sha256 değerleri. url, dosyanın indirildiği ya da indirilecek olduğu yerdir.
installerYalnızca yükleyici bellekte: kurduğu görüntü olan payload ile yükleyicinin uyguladığı şekliyle disk, confirm, after, allow_usb.
wifissid ve from: flock veya flags. WiFi yoksa null.
driveYalnızca sürücüde: device, size, bus, model, serial ve --allow-internal ile yazılmış dahili bir disk için true olan internal.
outputYalnızca --output ile: mutlak yol olan file ve o adda bir dosyanın yerine yenisi yazıldığında true olan replaced.
sourceGörüntü dosyasının nereden geldiği: download, cache veya file.
unmountedYazmadan önce bağlantısı kaldırılan bağlama noktaları. --output ile boştur.
bytes, verifiedYazılan baytlar (tam bir sektöre tamamlanmış görüntü; --output ile dosyanın boyutu) ve bunların sürücüden veya dosyadan geri okunduğu.
ejectedmacOS: sürücü çıkarıldı ve çekilebilir. Linux’ta ve --output ile false.
filesIRONFLOCKOS içine yazılan dosyalar.
catalogKullanılan katalog: issued_at, key_id, from_cache ve bu ironflock sürümünün katalogdan neyi dışarıda bıraktığına dair notes.
warningsPlanın uyarıları ve macOS’ta sürücünün çıkarılamadığı.

Reddettiği Durumlar

Çıkış kodu 3, hiçbir şey yazılmaz:

  • Sürücü, os drives komutunun reddettiği bir sürücüdür; hata nedenini verir ve --yes bunu değiştirmez. Tek istisna bu makinenin dahili bir diskidir: --drive onu belirttiğinde --allow-internal ona yazar; bayrak sürücüyü yazılabilir yapacaksa hata da bayrağı belirtir. Bayrak başka hiçbir reddi kaldırmaz ve soruyu yanıtlamaz.
  • Sürücü plan ile yazma arasında değişti ya da o anda reddediliyor. Hata neyin değiştiğini söyler.
  • Sürücü açıldığında kullanımdadır: planın listelemediği bir dosya sistemi bağlıdır, bir dosya sisteminin bağlantısı kaldırılamaz ya da bir program sürücüyü tutar.
  • Komut root olarak (ya da macOS’ta sürücünün ham aygıtına yazma izni olan bir kullanıcı olarak) çalışmıyor. Hata komut satırını sudo ile belirtir.
  • --output ile: ad normal bir dosya değil (bir aygıt, bir klasör, adlandırılmış bir pipe veya herhangi bir sembolik bağlantı) ya da klasörü yok; bu, herhangi bir şey okunmadan veya alınmadan önce denetlenir. Yeni dosya kabul etmeyen bir klasör (izin yok, salt okunur dosya sistemi) plandan sonra ve indirmeden önce reddedilir. Plan yeni bir dosya belirttiği hâlde görüntü yazılırken o adı alan bir dosyanın yerine yenisi yazılmaz.

Çıkış kodu 2, hatalı bir komut satırı:

  • Ne --drive ne de --output verilmiş, --allow-internal ile de. --drive veya --allow-internal ile birlikte, ad olmadan ya da - ile verilen --output. -c bayrağının .flock dosyasını veya --image-file dosyasını belirten bir --output.
  • --installer olmadan ya da yükleyicinin kabul etmediği bir değerle verilen bir --installer-* bayrağı.
  • --wifi-password-file olmadan --wifi-ssid ya da tersi.
  • Hangi donanım için olduğunu söylemeyen bir .flock dosyası; bu durumda görüntüyü --image seçer.
  • Kataloğun içermediği bir görüntü, görüntüyü taşımayan bir yükleyici bellek ya da yükleyici belleği olmayan bir donanım.
  • --host ile: --image-file ve --output, çünkü --host görüntü dosyasını diğer makineye kopyalamaz ve geri hiçbir dosya getirmez. Komutu burada --host olmadan ya da makinenin kendisinde çalıştırın. .flock dosyası ve parola dosyası ise gönderilir.

Çıkış kodu 4: soru hayır ile yanıtlandı (yalnızca Enter veya Esc) ya da sorulamadı ve --yes verilmedi.

Çıkış kodu 1, komut başarısız oldu:

  • .flock dosyası veya parola dosyası geçerli değil ya da görüntü dosyası kataloğunki değil.
  • Katalog, os images komutunun başarısız olduğu nedenlerle kullanılamıyor.
  • İndirme, yazma veya geri okuma başarısız oluyor. İlk bloğundan sonra başarısız olan bir yazma (bir G/Ç hatası, görüntüden küçük bir sürücü), sürücünün artık görüntünün yalnızca bir kısmını tuttuğunu ve bundan hiçbir şeyin başlamayacağını söyler: sürücüyü yeniden yazın.
  • Görüntü sürücüde ve geri okundu, ancak .flock dosyası IRONFLOCKOS içine yazılamadı. Bu dosya olmadan cihaz kaydolmaz; aynı komut ikisini de yeniden yazar.
  • --output ile: dosya sistemi dolu, cihazın dosyaları görüntüye konamıyor ya da görüntü yazılırken .part dosyasının girdisi değiştirildi. Bu durumda ad önceki hâlinde kalır.

Çıkış kodu 130: görüntü indirilirken, yazılırken veya geri okunurken Ctrl-C. Kesilen bir indirme hiçbir şey yazmamıştır ve aynı komut ona kaldığı yerden devam eder. Bir yazma veya geri okuma bir sonraki blokta durur ve hata sürücünün neyi tuttuğunu söyler. Son blok geri okunduktan sonra komut son kısa adımlarını tamamlar ve 0 ile sona erer. İkinci bir Ctrl-C komutu hemen sonlandırır; --output ile .part dosyası geride kalabilir.

Last updated on