Skip to Content
IoT Uygulama GeliştirmeIronFlock CLILinux'u IronFlockOS ile Değiştirme

Linux’u IronFlockOS ile Değiştirme

ironflock os install, çalışan bir makinenin başlatıldığı Linux’u aynı diskte IronFlockOS ile değiştirir ve makineyi bir cihaz yapılandırma dosyasının (.flock) IronFlock cihazı yapar. Komutu makinenin kendisinde ya da başka bir bilgisayardan SSH üzerinden çalıştırırsınız.

Uyarı: Makinenin başlatıldığı diskteki her şey kaybolur: çalışan sistem, paketleri ve ayarları, kullanıcı hesapları ve tüm veriler. Geri dönüş yolu yoktur. Komutu önce --dry-run ile çalıştırın ve planı okuyun.

Ne Zaman Kullanılır

os install komutunu, zaten Debian, Ubuntu veya systemd kullanan başka bir Linux çalıştıran ve bir USB bellekten başlatamadığınız ya da başlatmak istemediğiniz bir makine için kullanın: bir kumanda panosundaki PC, buluttaki bir sanal makine, yalnızca SSH üzerinden erişebildiğiniz bir makine. --host ile komutu kendi bilgisayarınızdan, bir Mac’ten de, çalıştırırsınız ve komut makine bir IronFlock cihazı olarak çevrimiçi olana kadar bekler.

Şu durumlarda başka bir komut kullanın:

  • Makineyi bir sürücüden başlatabiliyorsanız — ironflock os flash IronFlockOS’u bir USB belleğe, SD karta veya harici diske yazar. --installer ile, kendisinden başlatılan PC’nin dahili diskine IronFlockOS’u kuran bir yükleyici bellek yazar. Yükleyici bellek, os install komutunun reddettiği çoğu makine için de çıkış yoludur.
  • Makine bir Raspberry Pi ise — os install yalnızca UEFI makinelere yönelik görüntüleri kurar (amd64-efi ve arm64-efi hedefleri). Raspberry Pi’nin SD kartını os flash ile yazın.
  • Makine zaten IronFlockOS çalıştırıyorsa — os install onu reddeder. Orada başka bir sürümü ironflock os update kurar.
  • Makinenin Linux’unu korumak istiyorsanız — ironflock agent install makineyi olduğu gibi IronFlock’a bağlar.

ironflock os install

Makineyi denetler, değiştirme planını gösterir ve sorar. Ardından IronFlockOS’u bellekte hazırlar ve makineyi yeniden başlatır; makine kapanışının sonunda IronFlockOS’u diske yazar ve onu başlatır.

ironflock os install [-c <device.flock>] [--disk <disk>] [--dry-run] [flags]
Çalıştığı sistemlerRootSorular
systemd kullanan Linux. --host ile Linux’tan veya macOS’tangerekirbir soru: makinenin ana bilgisayar adını yazarsınız. --yes yalnızca --disk ile birlikte yanıtlar

macOS’ta komut hiçbir şeye bakmadan çıkış kodu 3 ile sona erer; orada komutu --host ile çalıştırın. Komut bir seferde tek bir makinede çalışır: birden fazla kez verilen --host ve --hosts çıkış kodu 2 ile sona erer. Genel bayraklar Bayraklar, Çıktı ve Çıkış Kodları sayfasındadır.

Bayraklar

BayrakAnlamı
-c, --config <file>Cihazın .flock dosyası. Varsayılan: makinede kurulu cihaz ajanının .flock dosyası; böylece makine IronFlock’ta aynı cihaz olarak kalır
--disk <disk>Değiştirilecek disk, örneğin /dev/sda, ya da /dev/disk/by-id altındakiler gibi ona giden bir bağlantı. Firmware’in sistemi başlattığı disk olmalıdır. --yes bunu gerektirir
--image <id>Kurulacak görüntü, ironflockos- önekiyle veya öneksiz, örneğin amd64-efi-nvidia. Varsayılan: makinenin hedefi (amd64-efi veya arm64-efi) için standart çekirdekli temel görüntü
--dry-runPlanı gösterir ve hiçbir şeyi değiştirmez
--no-wait--host ile: devreder ve makinenin IronFlockOS olarak geri gelmesini beklemeden sona erer
--allow-unencryptedIronFlockOS verilerini şifrelemeden sakladığı hâlde şifreli bir sistemi değiştirir. Böyle bir sistemde --yes bunu gerektirir
--http-proxy <url>İndirme ve yeni sistem için HTTP proxy’si; örneğin http://proxy:3128 ya da parola olmadan http://user@proxy:3128. Varsayılan: ortamdaki
--https-proxy <url>İndirme ve yeni sistem için aynı biçimde HTTPS proxy’si. Varsayılan: ortamdaki
--no-proxy <hosts>Proxy’yi atlayan, virgülle ayrılmış ana bilgisayarlar
--proxy-password-file <file>Tek satırı proxy URL’lerindeki kullanıcının parolası olan bir dosya veya pipe (/dev/stdin)

Proxy bayrakları agent install komutundaki gibi çalışır. Bunlar olmadan komut HTTP_PROXY, HTTPS_PROXY ve NO_PROXY değerlerini ortamdan alır. İçinde parola bulunan bir proxy URL’si hatalı bir komut satırıdır (çıkış kodu 2); bkz. Gizli Bilgiler.

Makinenin Gereksinimleri

  • Sistem — systemd’nin PID 1 olduğu, Debian veya Ubuntu gibi bir Linux; konteyner içinde değil. IronFlockOS ve ReswarmOS reddedilir.
  • Firmware — amd64 veya arm64 üzerinde 64 bit UEFI. EFI değişkenleri bağlı (efivarfs) ve yazılabilir olmalıdır. BIOS ve 32 bit UEFI reddedilir. Secure Boot açık olabilir; bkz. Secure Boot.
  • Disk — firmware’in sistemi başlattığı disk: GPT (GUID bölüm tablosu) ve 512 baytlık mantıksal sektörlere sahip, kendi başına bütün bir disk. Kök dosya sistemi doğrudan ya da LVM veya LUKS üzerinden bu diskte bulunur, başka hiçbir diskte bulunmaz. Disk en az görüntünün gerektirdiği en küçük disk kadar büyüktür: kataloğun belirttiği boyut, yoksa 10 GiB, nvidia görüntüsü için 18 GiB.
  • Bellek — sıkıştırılmış görüntü, ironflock ikili dosyası ve 512 MiB daha için kullanılabilir bellek (MemAvailable): base görüntüsü için yaklaşık 2 GiB’lık bir makine.
  • Araçlar — lsblk ve iproute2 paketinden ip.
  • Ağ — yeni sistemin kullanabileceği bir ağ üzerinden, doğrudan veya bir proxy aracılığıyla erişilebilen indirme sunucusu (Yeni Sistemin Aldıkları). Bir IronFlock Appliance’ın cihazı için bu, Appliance’ın indirme yansısı olabilir (Dosyalar Nereden Gelir).
  • .flock dosyası — -c ile verilen ya da makinede kurulu cihaz ajanının dosyası.

Dosyalar Nereden Gelir

Komutun imzalı IronFlockOS kataloğuna, görüntüye ve görüntünün donanım listesine ihtiyacı vardır. Bunları şuradan alır:

  1. --download-base, yoksa IRONFLOCK_DL_BASE: yalnızca o sunucu.
  2. Yoksa .flock dosyasının güncelleme sunucusu olarak belirttiği IronFlock Appliance’ın indirme yansısı: update_url değeri, ana bilgisayarı IronFlock bulutuna ait olmayan mutlak bir http veya https URL’si olduğunda; örneğin https://registry.<domain>/dl veya http://<host>:<port>/dl. stderr Download base: ... (from the device's .flock) der. Appliance’a erişen ama ironflock.com’a erişemeyen bir makine bu yolla dönüştürülür. IronFlock bulutuna ait bir .flock dosyası bulutu kullanır.
  3. Yoksa IronFlock bulutu, https://instance-registry.ironflock.com/dl.

Appliance’ın yansısıyla dosyalar önce yansıdan, yansının vermedikleri ise IronFlock bulutundan gelir:

  • Katalog, <mirror>/ironflockos/manifest.json — yansı şu anda katalog vermiyorsa (erişilemiyor, bir hatayla yanıt veriyor ya da onun yerine yalnızca son kataloğunun saklanan kopyası kullanılabilirdi), her şey Appliance yokmuş gibi buluttan gelir. Yansının verdiği ama reddedilen bir katalog (imzası nedeniyle, saklanan kopyadan eski ya da çok büyük olduğu için) komutu, herhangi bir sunucuda olduğu gibi başarısız kılar.
  • Görüntü, <mirror>/ironflockos/<version>/<file> — yansı onu vermezse (erişilemiyor, dosyadan başka bir şeyle yanıt veriyor ya da gönderdiği şey görüntünün başı değil), imzalı kataloğun belirttiği URL’den gelir. os flash önbelleğindeki bir dosya için ikisine de sorulmaz.
  • Donanım listesi, <mirror>/ironflockos/<version>/<image>-<version>.modules.alias.gz — aynı kural, kendi başına.

Her geri dönüş, planda yansıyı, dosyayı ve nedeni belirten bir uyarıdır; --json ile warnings içinde yer alır. Plan her dosyanın kaynağına bir kez karar verir: hazırlama, görüntüyü planın image.url adresinden indirir ve yeniden geri dönmez. Bir dosyayı ne yansı ne de bulut verirse komut, iki kaynağı ve iki nedeni belirten tek bir hatayla başarısız olur (neither the appliance's mirror ... nor the IronFlock cloud gives ...).

agent install komutunda olduğu gibi yansıya doğrudan, buluta proxy üzerinden erişilir. Appliance’ın kendi CA’sından sertifikası olan bir HTTPS yansısı yalnızca makinenin sistemi o CA’ya güveniyorsa çalışır. Appliance yanıt verdiğinde yeni sistem ona ulaşan ağ kartını korur (Yeni Sistemin Aldıkları).

Herhangi Bir Şey Değişmeden Önce

Komut makineyi bu sırayla denetler. Başarısız olan ilk denetim; çıkış kodu 3 ve nedeni, varsa da çıkış yolunu belirten tek bir cümleyle reddeder. O ana kadar hiçbir şey değiştirilmemiştir.

  1. Sistem — systemd PID 1’dir, sistem bir konteyner değildir ve IronFlockOS veya ReswarmOS değildir.
  2. Firmware — 64 bit UEFI, yazılabilir EFI değişkenleri ve Secure Boot açıksa, görüntünün firmware’in başlatacağı bir önyükleme zinciri (Secure Boot).
  3. Görüntü — os images komutunun listelediği şekliyle imzalı IronFlockOS kataloğundan: --image görüntüsü, yoksa makinenin hedefinin temel görüntüsü. Komut görüntü dosyasının ilk birkaç MiB’ını okur: dosya oradaysa os flash önbelleğinden, yoksa indirme sunucusundan (önce Appliance’ın yansısından, bkz. Dosyalar Nereden Gelir). Başka bir donanım için hazırlanmış bir .flock dosyası yalnızca uyarıya yol açar.
  4. Disk — firmware’in geçerli önyükleme seçeneğinin belirttiği bölümü içeren disk; yoksa /boot/efi veya /efi konumuna bağlı EFI sistem bölümünü içeren disk; yoksa --disk bayrağının belirttiği disk. Sistemin başlatıldığı diskten başka bir diski belirten --disk reddedilir. Kendi başına bütün bir disk olmayan bir disk de reddedilir: bir MD RAID dizisi (Intel RST’nin oluşturduğu da), bir device-mapper, loop veya ağ blok aygıtı, bellekteki bir disk.
  5. Diskin üzerine kurulanlar — bölümler, doğrusal mantıksal birimli LVM ve cryptsetup’ın şifreleme için kurduğu yapılar (LUKS, düz dm-crypt, BitLocker, FileVault, TrueCrypt). Geri kalan her şey reddedilir: MD RAID, bcache, multipath, bir ZFS havuzu, LVM ince havuzları, anlık görüntüler, önbellekler, RAID ve yansı birimleri, dm-verity, dm-integrity. Diğer diskler olduğu gibi kalır; bu yüzden üyeleri hem bu diskte hem başka bir diskte bulunan bir btrfs dosya sistemi veya LVM birim grubu reddedilir: diski değiştirmek onu iki diskte de yok ederdi. IRONFLOCKOS, rootfs-a, rootfs-b veya data adlı bir bölüme sahip başka bir diski olan bir makine de reddedilir, çünkü IronFlockOS bölümlerini bu adlarla bulur.
  6. Bellek — yukarıdaki gibi.
  7. .flock dosyası, ağ, proxy, aygıt sürücüleri — .flock dosyası os flash komutunun okuduğu gibi okunur ve SSH anahtarı geçerli olmalıdır. Ağ ve proxy, Yeni Sistemin Aldıkları bölümünde açıklandığı gibi denetlenir. Aygıt sürücüleri için komut, diske ve ağ kartına giden yoldaki aygıtları (disk, kart, bunların denetleyicileri ve veri yolları) alır ve görüntünün donanım listesinde arar. Yalnızca liste, görüntünün bunlardan biri için aygıt sürücüsü olmadığını gösterdiğinde reddeder. Karar veremediği bir aygıt drivers not checked uyarısında belirtilir; donanım listesi olmayan bir sürümde (0.14.0’a kadar) uyarı her aygıtı belirtir.
  8. Plan ve soru — aşağıya bakın.

Komut görüntünün başını okurken basılan Ctrl-C komutu çıkış kodu 130 ile sonlandırır; plan gösterilirken veya soru beklerken kaybolan bir terminal de öyle. Bu durumda hiçbir şey değiştirilmemiştir.

Plan ve --dry-run

Plan stderr’e gider. Makineyi ve firmware’ini, diski ve nasıl bulunduğunu, görüntüyü ve dosyasının nereden geldiğini ve belleği belirtir. Diskteki her şeyin kaybolacağını, yeni sistemin neleri alacağını ve neleri almayacağını ve uyarıları söyler. --dry-run planı gösterir, hiçbir şeyi değiştirmez ve çıkış kodu 0 ile sona erer. --dry-run ile --yes, --disk gerektirmez.

Bir Compute Engine VM’sinde plan, Google’ın konuk ortamının gideceği konusunda uyarır: gcloud compute ssh, OS Login ve meta veri SSH anahtarları çalışmaz hâle gelir, seri konsol ise kalır.

Yeni Sistemin Aldıkları

Yeni sistem şunları alır:

  • Cihazın kimliği — IRONFLOCKOS bölümüne giden .flock dosyasından. Cihaz ilk açılışında bu dosyayla kaydolur.
  • Ağ — görüntünün indirilmesinin indirme sunucusuna veya proxy’ye ulaştığı ağ kartının ağı. İndirme tabanı .flock dosyasındaki Appliance yansısıysa ve yansı katalog isteğine herhangi bir yanıt verdiyse (404 de olsa), dosyalar nereden gelirse gelsin bunun yerine yansıya bağlanan kartın ağıdır: yeni cihaz Appliance’a bağlanır. DHCP’li bir kablo bağlantısı hiçbir şey gerektirmez. Statik bir adres (ömrü olmayan adresler, elle ayarlanmış ağ geçitleri ve rotalar, systemd-resolved’ın veya /etc/resolv.conf dosyasının DNS sunucuları), kartı kalıcı MAC adresiyle eşleştiren bir NetworkManager profiline dönüşür. DHCP veya SLAAC’ın yanındaki statik bir adres DHCP’yi korur ve statik adresi ekler. WiFi’de .flock dosyasının ağı hiçbir şey gerektirmez; NetworkManager’ın WPA-PSK veya WPA3-SAE profiline sahip başka bir ağ, gizli olsun ya da olmasın, o profili alır. Diğer kartların adresleri aktarılmaz ve plan bu konuda uyarır.
  • Proxy — indirmenin proxy’si, kullanıcı ve parola ile no_proxy dahil, IronFlockOS’un proxy ayarı (IRONFLOCKOS bölümündeki proxy.conf) olur. Makinenin kendisindeki bir proxy (127.0.0.1) reddedilir, çünkü yeni sistemde o proxy yoktur. Makinenin loopback adresinde yanıt veren bir yansı da reddedilir: Appliance’ın kendi ana bilgisayarındaki ajanda olduğu gibi update_url değeri localhost belirten bir .flock dosyası. proxy.conf dosyasının kabul etmediği karakterler içeren bir proxy URL’si reddedilir ve ret mesajı ilgili kısmı belirtir.
  • SSH — her IronFlockOS cihazında olduğu gibi, .flock dosyasındaki anahtarla proje sahibinin hesabı.

IronFlockOS 0.15.0 ve sonrası ağ profillerini ve proxy ayarını IRONFLOCKOS bölümünden alır. Daha eski bir sürümün görüntüsüyle, ağı bir profil gerektiren ya da indirmesi bir proxy üzerinden geçen bir makine reddedilir; ret mesajı kartı, statik adresini veya WiFi ağını ve bunun yerine ne yapılacağını belirtir.

Yeni sistem; eski sistemin kullanıcı hesaplarını parolaları ve SSH anahtarlarıyla birlikte, SSH ana bilgisayar anahtarlarını (SSH istemcileri yeni bir ana bilgisayar anahtarı görür) ya da paketleri, ayarları ve verileri almaz. Cihazın uygulamaları IronFlock’tan geri gelir; bu makinedeki verileri gelmez.

Soru

Komut, sorunun gösterdiği kısa ana bilgisayar adını yazmanızı ister. Çekirdeği tam adı taşıyan bir makinede (Ubuntu’nun Compute Engine görüntüleri) tam ad da kabul edilir. Başka herhangi bir yanıt, yalnızca Enter da dahil, hayır anlamına gelir: çıkış kodu 4. Bkz. Sorular ve Onay.

--yes soruyu yalnızca --disk diski belirttiğinde yanıtlar. Şifreli bir sistemde --yes ayrıca --allow-unencrypted gerektirir, aksi hâlde komut çıkış kodu 4 ile sona erer. Terminal olmadan ve --json ile soru sorulamaz: --yes olmadan komut çıkış kodu 4 ile sona erer.

Sorudan Sonra: Hazırlama ve Devir

Yeniden başlatmadan önce diske hiçbir şey yazılmaz. Komut değiştirmeyi bellekte hazırlar:

  1. Bellekteki bir dosya sistemi görüntüyü alır: plan onu orada okuduysa os flash önbelleğindeki dosya, yoksa imzalı kataloğa göre denetlenen (Checking) bir indirme (Downloading olarak gösterilir). Görüntü bir kez açılır (Preparing) ve planın okuduğuyla karşılaştırılır. IRONFLOCKOS bölümü için dosyalar hazırlanır.
  2. IronFlockOS için bir önyükleme seçeneği, firmware’in önyükleme sırasının sonuna, çalışan sistemin seçeneğinin arkasına eklenir. Disk yazılana kadar önce yine çalışan sistem başlar.
  3. stderr’deki Staged: satırı yeni önyükleme seçeneğini ve eski sistemin yazmadan sonra silinecek önyükleme seçeneklerini belirtir.
  4. Komut devreder: makine hemen yeniden başlar ya da komut bir SSH oturumunda çalışıyorsa (sudo ve --host üzerinden de), sonuç önce oturuma ulaşsın diye komut sona erdikten on saniye sonra yeniden başlar. stdout Handed over: ... der ve komut çıkış kodu 0 ile sona erer.

Soru ile devir arasında gelen Ctrl-C veya SIGTERM hazırlamayı geri alır: komut çıkış kodu 130 ile sona erer ve makine önceki hâlinde kalır. Sorudan sonra kaybolan bir terminal veya SSH oturumu artık komutu durdurmaz: hazırlama devam eder, devir ve yeniden başlatma gerçekleşir. Yeniden başlatma devredildikten sonra Ctrl-C komutu sonlandırır, yeniden başlatma ise devam eder.

Yeniden Başlatma ve Yazma

Kapanışın sonunda ironflock, görüntüyü bellekten diske yazar. Makinenin konsolu bu adımın ironflock-install: ile başlayan satırlarını gösterir. Ardından makine IronFlockOS’u başlatır ve cihaz yaklaşık on dakika içinde IronFlock’ta görünür. Yazmanın günlüğü, yeni sistemin IRONFLOCKOS bölümündeki ironflock-install.log dosyasıdır.

Eski Sistem Yeniden Başladığında

ironflock yazmadan önce diski bir kez daha denetler. Bir koşul sağlanmadığında eski sistem değişmeden yeniden başlar: disk meşgul veya salt okunur, planın diski değil, hazırlanan görüntü hasarlı ya da yazmadan önceki adımlar iki dakikadan uzun sürüyor. Neden, IronFlockInstall EFI değişkenindedir. ironflock status bunu root olmadan OS install: satırında gösterir:

System: Debian GNU/Linux 13 (trixie) OS install: 'ironflock os install' stopped at 2026-11-11T10:00:00Z before it wrote the disk: the disk /dev/sda is not the plan's: its size changed from 64.0 GB to 32.0 GB; nothing was changed, and this system runs as before
# Makinede ironflock status # Başka bir bilgisayardan ironflock --host admin@machine status # ironflock olmadan: aşamayı, zamanı ve nedeni yazdırır tail -c +5 /sys/firmware/efi/efivars/IronFlockInstall-7b2f7cb6-eb8f-4acd-b7fd-e92df1a035a0

--host Üzerinden

ironflock --host admin@machine os install -c device.flock --disk /dev/sda --yes, komutu o makinede, her komutun --host üzerinden çalıştığı gibi çalıştırır: ikili dosya ve .flock dosyası oraya gider, denetimler, plan ve soru orada çalışır ve çıktıları geri gelir. İkili dosyayı ve .flock kopyasını içeren klasör, oradaki komut sona erdiğinde kaldırılır; bir ret veya kesmeden sonra da. --dry-run makinede o klasör dışında hiçbir şeyi değiştirmez.

Yeniden başlatma komut sona erdikten on saniye sonra gelir; böylece sonucu önce sizin tarafınıza ulaşır. Sorudan sonra kopan bir bağlantı oradaki komutu artık durdurmaz: bağlantı koptuğunda sizin taraftaki komut çıkış kodu 255 ile sona erer ve makinenin kendi başına devam ettiğini söyler.

Devirden sonra komut, makinenin IronFlockOS olarak geri gelmesini 15 dakikaya kadar bekler:

  • Her 15 saniyede bir aynı adrese, .flock dosyasının SSH kullanıcısı olarak, .flock dosyasındaki anahtarla oturum açar. Anahtar, yalnızca sizin okuyabildiğiniz yeni bir klasördeki bir dosyaya gider ve bekleme bittiğinde klasör kaldırılır. Anahtar SSH ajanına gitmez.
  • Yeni sistemin ana bilgisayar anahtarını hiçbir yere yazmadan alır: known_hosts olduğu gibi kalır.
  • Sistemin ne çalıştırdığını ve cihaz ajanının açılıştan beri IronFlock’a bağlanıp bağlanmadığını okur.
  • Bu arada eski sisteme, yalnızca known_hosts dosyasında bulunan bir ana bilgisayar anahtarıyla, IronFlockInstall EFI değişkenini sorar: eski sistemiyle geri gelen bir makine beklemeyi hemen sona erdirir.

Makine IronFlockOS çalıştırıyor ve cihaz ajanı bağlıysa bekleme çıkış kodu 0 ile sona erer. Makine IronFlockOS’u bağlı bir ajan olmadan çalıştırıyorsa, eski sistemiyle geri geldiyse ya da 15 dakika içinde IronFlockOS olarak yanıt vermediyse 1 ile sona erer. DHCP’nin değiştirdiği bir adres denetimi boşa çıkarır; bu durumda mesaj IronFlock’taki cihazı ve makinenin konsolunu gösterir. Ctrl-C beklemeyi 130 ile sonlandırır ve makine kendi başına devam eder.

Bekleme, adreste hangi makinenin yanıt verdiğini ayırt edemez, çünkü yeni sistemin ana bilgisayar anahtarı sizin taraf için yenidir. Kanıt, IronFlock’ta bağlı olarak gösterilen cihazdır.

Bekleme, .flock dosyasının sizin tarafınızda olmasını gerektirir. -c olmadan ya da SSH kullanıcısı ayarlamayan bir .flock dosyasıyla komut, --no-wait vermediğiniz sürece makineye hiçbir şey gitmeden çıkış kodu 2 ile sona erer. --no-wait devreder ve makinedeki komutun çıkış koduyla sona erer.

Secure Boot

Secure Boot açıkken komut, firmware’in görüntünün önyükleme zincirini, yani önce shim’i, sonra GRUB’u başlatacağını denetler:

  • görüntünün shim imzası, onunla gelen sertifikalar üzerinden firmware’in imza veritabanındaki (db) bir sertifikaya zincirlenir ve yasaklı veritabanı (dbx) bunların hiçbirini iptal etmez; ya da db shim’in özet değerini listeler.
  • ne dbx ne de bu makinedeki shim yasak listesi (MokListX) görüntünün shim’ini veya GRUB’unu ya da GRUB’un imzalandığı bir sertifikayı listeler.
  • makinenin SBAT düzeyi (SbatLevelRT) ne shim’i ne de GRUB’u iptal eder.

Firmware görüntüyü başlatmayacaksa komut reddeder. Secure Boot’u firmware ayarlarından kapatabilirsiniz: IronFlockOS onsuz da başlar. shim üzerinden başlatılmamış bir sistemde plan, SBAT düzeyinin ve MokListX listesinin denetlenmediği konusunda uyarır. Komut shim’in imza değerini doğrulamaz ve çekirdeğe bakmaz; bunlara imzalı katalog kefildir. --json ile machine.secure_boot.ca, shim imzasının zincirlendiği db içindeki sertifikayı belirtir, örneğin Microsoft UEFI CA 2023.

Örnekler

# Kurulu ajanın cihazı için planı gösterin, hiçbir şeyi değiştirmeyin sudo ironflock os install --dry-run # Yeni bir cihaz için plan, JSON olarak sudo ironflock os install -c device.flock --dry-run --json # Sistemi soru sormadan değiştirin sudo ironflock os install -c device.flock --disk /dev/sda --yes # Başka bir bilgisayardan çalıştırın ve cihaz çevrimiçi olana kadar bekleyin ironflock --host admin@machine os install -c device.flock --disk /dev/sda --yes

Sonuç

sudo ironflock os install -c device.flock --dry-run komutunun planı, stderr’de:

IronFlockOS catalog of 2026-11-20T09:00:00Z, signed with key 036ef3bd. Machine: debian-vm, Debian GNU/Linux 13 (trixie), amd64, UEFI without Secure Boot Disk: /dev/sda: Google PersistentDisk, 21.5 GB, serial persistent-disk-0 (the EFI system partition at /boot/efi is on it); it holds plain partitions Image: ironflockos-amd64-efi-base 0.15.0, 4.6 GB unpacked Image file: https://instance-registry.ironflock.com/dl/ironflockos/0.15.0/ironflockos-amd64-efi-base-0.15.0.img.gz (662.9 MB), downloaded into memory and checked against the catalog Memory: 1.7 GB available, 1.2 GB needed Everything on /dev/sda is lost: this system, its packages and settings, and all data. There is no way back. The new system gets: - the identity of the device kitchen-pc, from device.flock - the network: ens4 by cable with DHCP, which needs nothing carried over - SSH: the account operator with the .flock's key, as every IronFlockOS device has it It does not get: - the user accounts of this system, their passwords and SSH keys - the SSH host keys: clients see a new host key - the packages, settings and data of this system: the device's apps come back from IronFlock, their data on this machine does not Then the machine restarts, writes IronFlockOS from memory at the end of its shutdown and starts it; the device appears in IronFlock within about ten minutes. Warning: drivers not checked: whether IronFlockOS ironflockos-amd64-efi-base 0.15.0 drives virtio-pci of the disk (/sys/devices/pci0000:00/0000:00:03.0), virtio-pci of the network card (/sys/devices/pci0000:00/0000:00:04.0) is not known: the hardware list of this release does not name the drivers built into its kernel Warning: this is a Compute Engine VM: it keeps its address, but loses Google's guest environment, so 'gcloud compute ssh', OS Login and metadata SSH keys stop working; the serial console stays. With Shielded VM's integrity monitoring on, the first boot of IronFlockOS fails its check until the baseline is learned again Dry run: nothing was changed.

sudo ironflock os install -c device.flock --disk /dev/sda --yes çalıştırması aynı planı, ardından hazırlamayı ve devri gösterir:

Staging IronFlockOS in memory: nothing is written to /dev/sda before the restart, and Ctrl-C until then leaves the machine as it was. Downloading: 100% (662.9 MB of 662.9 MB) Checking: 100% (662.9 MB of 662.9 MB) Preparing: 100% (662.9 MB of 662.9 MB) Staged: the image is in memory and checked against the catalog and the plan; the boot option Boot0003 for IronFlockOS is at the end of the boot order, and goes first after the write. The old system's boot option Boot0001 (debian) is deleted after the write. Handed over: the machine restarts now, writes IronFlockOS onto /dev/sda at the end of its shutdown (the console shows it) and starts it; the device kitchen-pc appears in IronFlock within about ten minutes. If it does not, see the machine's console; a machine that comes back with its old system has the reason in its EFI variable IronFlockInstall.

--json ile sonuç, tek bir JSON nesnesi olarak plandır: --dry-run ile hemen; onsuz devirden sonra, dry_run false ve staging ile; --host üzerinden beklemeden sonra, ayrıca wait ile. stderr ilerlemeyi JSON satırları olarak alır, başka hiçbir şey almaz (Çıktı ve JSON). Hiçbir alan gizli bilgi tutmaz: IRONFLOCKOS bölümü için dosyalar boyutlarıyla birlikte adlandırılır, proxy URL’leri parola olmadan gösterilir. Yukarıdaki deneme çalıştırmasının sonucu, satır sonları eklenmiş olarak (komut tek satır yazar; ... örneğin dışarıda bıraktığı yerleri işaretler):

{"dry_run":true, "machine":{"hostname":"debian-vm","os":"Debian GNU/Linux 13 (trixie)","architecture":"amd64","secure_boot":{"enabled":false},"memory_available":1651179520,"memory_needed":1220587675}, "disk":{"device":"/dev/sda","devnum":"8:0","size":21474836480,"model":"Google PersistentDisk","serial":"persistent-disk-0","sysfs":{"vpd83":"0:persistent-disk-0"},"guid":"a6c1e3f4-0b2d-4c8e-9f1a-2b3c4d5e6f70","found_by":"esp","esp":"/boot/efi","storage":["partitions"],"encrypted":false}, "image":{"image_id":"ironflockos-amd64-efi-base","version":"0.15.0",...,"raw_size":4564471808,"min_disk_size":10737418240,"guid":"...","ironflockos":{"guid":"d53fd016-10da-40c6-8d85-a4eae33538af","start":1048576,"size":268435456},"shim_sha256":"...","head_size":269484032,"head_sha256":"..."}, "device":"kitchen-pc","device_file":"device.flock","flock":"/home/admin/device.flock", "network":{"interface":"ens4","mac":"42:01:0a:84:00:02","kind":"wired","addressing":"dhcp","carried":"nothing","addresses":[],"gateways":[],"dns":[]}, "proxy":null,"ssh_user":"operator","files":[{"path":"device.flock","size":1234}], "drivers":{"checked":false,"devices":[...]},"not_carried_over":[...],"delayed_reboot":false,"warnings":[...]}
AlanDeğerler
dry_run--dry-run ile true; bir devirden sonra false
machinehostname (sorunun istediği kısa ad), fqdn (varsa çekirdeğin tam adı), os, architecture (amd64, arm64), secure_boot (enabled; açıksa ayrıca ca ve sbat_level), bayt cinsinden memory_available ve memory_needed
diskdeğiştirilen disk: device, devnum, bayt cinsinden size, model, serial, sysfs, guid (GPT’sinin), found_by (boot_option, esp, disk_flag), esp, storage (partitions, lvm, luks, crypt), encrypted
imagesıkıştırılmış dosyanın image_id, version, file, url, size ve sha256 değerleri, source (cache, download), raw_size, min_disk_size, guid, ironflockos (IRONFLOCKOS bölümü), shim_sha256 ile head_size ve head_sha256: planın görüntüden okuduğu ve hazırlamanın karşılaştırdığı kısım
device, device_file, flockcihazın adı, IRONFLOCKOS bölümündeki .flock dosyasının adı ve .flock dosyasının okunduğu yer
networkinterface, mac, kind (wired, wifi), addressing (dhcp, static, dhcp_and_static), WiFi’de ssid, carried (nothing, flock, profile), statik bir ayarın addresses, gateways ve dns değerleri, profile
proxyproxy yoksa null; aksi hâlde http, https, no_proxy, password (true: proxy ayarı bir parola içeriyor), from (flags, environment)
ssh_useryeni sistemin SSH hesabı; .flock dosyası hesap ayarlamıyorsa null
filesIRONFLOCKOS bölümü için dosyalar, path ve size ile
driverschecked ve her biri for (disk, network), device, modalias, driver, module, modules, check (matched, built_in, not_checked) içeren devices
not_carried_overyeni sistemin almadıkları
delayed_reboottrue: komut SSH üzerinden çalışıyor ve yeniden başlatma, komut sona erdikten on saniye sonra gelir
warningsplanın uyarıları; aralarında Appliance’ın yansısı yerine IronFlock bulutundan gelen her dosya da bulunur
staging--dry-run olmadan: handed_over (true), boot_option, old_boot_options (name, description), unreadable_boot_options (bunlar kalır), restart_in (0 ya da bir SSH oturumunda 10)
wait--host üzerinden, beklemeden sonra: result (connected, not_connected, no_answer, stopped, not_run, interrupted), devirden itibaren geçen seconds, os (makine IronFlockOS olarak yanıt vermediyse null), connected, reason, last

Reddettiği Durumlar

Komut şu durumlarda çıkış kodu 3 ile reddeder ve hiçbir şey değiştirilmez:

  • bir konteyner, systemd’nin PID 1 olmadığı bir sistem, IronFlockOS (orada sürümü os update kurar), ReswarmOS.
  • BIOS, 32 bit UEFI, görüntüsü olmayan bir mimari, bağlı olmayan (ret mesajı mount komutunu belirtir) ya da salt okunur bağlanmış (mount -o remount,rw komutunu belirtir) EFI değişkenleri.
  • görüntünün shim’ini veya GRUB’unu başlatmayacak bir Secure Boot.
  • komutun belirleyemediği bir disk (--disk ile belirtin), sistemin başlatıldığı disk olmayan bir --disk, bir bölüm, disk yok; kendi başına bütün bir disk olmayan ya da lsblk komutunun listelemediği bir disk; GPT’si olmayan bir disk.
  • başka bir diskte, birden çok diske yayılmış, ZFS üzerinde ya da hiçbir diskte olmayan (canlı sistem) bir kök dosya sistemi.
  • 512 bayttan farklı mantıksal sektörler, çok küçük bir disk, komutun ayrıştıramadığı bir depolama yığını, bu diske ve başka bir diske yayılmış bir btrfs dosya sistemi veya LVM birim grubu, IronFlockOS’un bölüm adlarını taşıyan başka bir disk.
  • yetersiz bellek.
  • komutun aktaramadığı bir ağ, makinenin kendisindeki bir proxy ya da makinenin loopback adresindeki Appliance yansısı, proxy.conf kabul etmeyen bir görüntüyle ya da proxy.conf dosyasının kabul etmediği karakterlerle verilen bir proxy, okunamayan etkin bir NetworkManager profili.
  • görüntünün, diskin veya ağ kartının aygıtlarından biri için aygıt sürücüsü olmadığını gösteren bir sürüm donanım listesi.
  • çalışmayan bir iproute2 ip aracı: ağ okunamaz.
  • sorudan sonra, hazırlama herhangi bir şeyi değiştirmeden önce: artık planın diski olmayan bir disk, zaten bir bağlama noktası olan /run/initramfs, olduğu gibi uygulanamayan bir plan.

Şunlar hatalı komut satırlarıdır (çıkış kodu 2) ve herhangi bir şey değiştirilmeden önce denetlenir:

  • --dry-run ile verilmedikçe, --disk olmadan --yes.
  • kurulu cihaz ajanı olmayan bir makinede -c yok; --host üzerinden --no-wait olmadan, -c yok ya da SSH kullanıcısı ayarlamayan bir .flock dosyası.
  • kataloğun içermediği bir --image, makinenin hedefinden başka bir hedef için bir görüntü ya da yükleyici bellek görüntüsü (bunu os flash --installer yazar).
  • parola içeren bir proxy URL’si ve agent install komutunun reddettiği diğer proxy bayrakları.
  • birkaç makine (birden fazla kez verilen --host, --hosts).

Başarısız Olduğu Durumlar

Komut şu durumlarda çıkış kodu 1 ile başarısız olur ve hiçbir şey değiştirilmez:

  • .flock dosyası geçerli değil ya da SSH anahtarı geçerli değil.
  • katalog, os images komutunda olduğu gibi doğrulanmıyor veya alınamıyor; Appliance’ın yansısıyla ne yansıdan ne de buluttan.
  • görüntü dosyasının başı indirilemiyor (getting the image ...), Appliance’ın yansısıyla ne yansıdan ne de buluttan, ya da komutun tanıdığı şekliyle bir IronFlockOS görüntüsü değil. Yansı katalog vermediği için katalog buluttan geldiyse hata, kataloğun uyarısıyla (the appliance's mirror ... gives no IronFlockOS catalog now (...)) başlar ve iki sunucuyu da belirtir.
  • indirmenin yerel adresi hiçbir ağ kartına ait değil; bağlama tablosu, blok aygıtları veya bellek okunamıyor; EFI değişkenleri ayrıştırılamıyor.
  • sorudan sonra: görüntü dosyası kataloğunki değil ya da planın okuduğu değil (mesaj iki değeri de belirtir), indirme başarısız oluyor, firmware önyükleme seçeneğini kabul etmiyor ya da yeniden başlatma başlatılamıyor. Hazırlama geri alınır. Geri alma da başarısız olursa mesaj, kalanları kaldıran bir yeniden başlatma ister.

Hiçbir URL, içerebileceği kullanıcı adı ve parolayla birlikte yazdırılmaz.

Çıkış Kodları

KodAnlamı
0plan gösterildi (--dry-run) ya da makine hazırlandı ve yeniden başlatma devredildi. --host üzerinden beklemeyle: makine IronFlockOS çalıştırıyor ve cihaz ajanı bağlı
1komut başarısız oldu ve hiçbir şey değiştirilmedi. --host üzerinden beklemeyle: ajan bağlanmadı, makine eski sistemiyle geri geldi ya da 15 dakika içinde IronFlockOS olarak yanıt vermedi
2hatalı komut satırı, hiçbir şeye dokunulmadı
3makine reddedildi, hiçbir şey değiştirilmedi
4soru ana bilgisayar adından başka bir şeyle yanıtlandı, sorulamadı ve --yes verilmedi ya da şifreli bir sistemde --allow-unencrypted olmadan --yes verildi
130devirden önce kesildi ve makine önceki hâlinde; ya da Ctrl-C --host üzerinden beklemeyi sonlandırdı ve makine kendi başına devam ediyor. --host üzerinden “may still run there” ile gelen 130, makinenin komutun sona erdiğini doğrulamadığı anlamına gelir: makine yeniden başlatmaya geçmiş olabilir
255--host için SSH bağlantısı başarısız oldu. Soru yanıtlandıktan sonra makine kendi başına devam eder

Her kodun tüm komutlar için anlamı Bayraklar, Çıktı ve Çıkış Kodları sayfasındadır.

Last updated on