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-runile ç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 flashIronFlockOS’u bir USB belleğe, SD karta veya harici diske yazar.--installerile, kendisinden başlatılan PC’nin dahili diskine IronFlockOS’u kuran bir yükleyici bellek yazar. Yükleyici bellek,os installkomutunun reddettiği çoğu makine için de çıkış yoludur. - Makine bir Raspberry Pi ise —
os installyalnızca UEFI makinelere yönelik görüntüleri kurar (amd64-efivearm64-efihedefleri). Raspberry Pi’nin SD kartınıos flashile yazın. - Makine zaten IronFlockOS çalıştırıyorsa —
os installonu reddeder. Orada başka bir sürümüironflock os updatekurar. - Makinenin Linux’unu korumak istiyorsanız —
ironflock agent installmakineyi 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ığı sistemler | Root | Sorular |
|---|---|---|
systemd kullanan Linux. --host ile Linux’tan veya macOS’tan | gerekir | bir 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
| Bayrak | Anlamı |
|---|---|
-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-run | Planı gösterir ve hiçbir şeyi değiştirmez |
--no-wait | --host ile: devreder ve makinenin IronFlockOS olarak geri gelmesini beklemeden sona erer |
--allow-unencrypted | IronFlockOS 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,
nvidiagörüntüsü için 18 GiB. - Bellek — sıkıştırılmış görüntü,
ironflockikili dosyası ve 512 MiB daha için kullanılabilir bellek (MemAvailable):basegörüntüsü için yaklaşık 2 GiB’lık bir makine. - Araçlar —
lsblkve iproute2 paketindenip. - 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).
.flockdosyası —-cile 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:
--download-base, yoksaIRONFLOCK_DL_BASE: yalnızca o sunucu.- Yoksa
.flockdosyasının güncelleme sunucusu olarak belirttiği IronFlock Appliance’ın indirme yansısı:update_urldeğeri, ana bilgisayarı IronFlock bulutuna ait olmayan mutlak birhttpveyahttpsURL’si olduğunda; örneğinhttps://registry.<domain>/dlveyahttp://<host>:<port>/dl. stderrDownload 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.flockdosyası bulutu kullanır. - 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.
- Sistem — systemd PID 1’dir, sistem bir konteyner değildir ve IronFlockOS veya ReswarmOS değildir.
- 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).
- Görüntü —
os imageskomutunun listelediği şekliyle imzalı IronFlockOS kataloğundan:--imagegörüntüsü, yoksa makinenin hedefinin temel görüntüsü. Komut görüntü dosyasının ilk birkaç MiB’ını okur: dosya oradaysaos 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.flockdosyası yalnızca uyarıya yol açar. - Disk — firmware’in geçerli önyükleme seçeneğinin belirttiği bölümü içeren disk; yoksa
/boot/efiveya/efikonumuna bağlı EFI sistem bölümünü içeren disk; yoksa--diskbayrağının belirttiği disk. Sistemin başlatıldığı diskten başka bir diski belirten--diskreddedilir. 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. - 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-bveyadataadlı bir bölüme sahip başka bir diski olan bir makine de reddedilir, çünkü IronFlockOS bölümlerini bu adlarla bulur. - Bellek — yukarıdaki gibi.
.flockdosyası, ağ, proxy, aygıt sürücüleri —.flockdosyasıos flashkomutunun 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ıtdrivers not checkeduyarısında belirtilir; donanım listesi olmayan bir sürümde (0.14.0’a kadar) uyarı her aygıtı belirtir.- 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
.flockdosyası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ı
.flockdosyası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.confdosyası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.flockdosyası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_proxydahil, IronFlockOS’un proxy ayarı (IRONFLOCKOS bölümündekiproxy.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 gibiupdate_urldeğerilocalhostbelirten bir.flockdosyası.proxy.confdosyası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,
.flockdosyası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:
- 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 (Downloadingolarak 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. - 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.
- stderr’deki
Staged:satırı yeni önyükleme seçeneğini ve eski sistemin yazmadan sonra silinecek önyükleme seçeneklerini belirtir. - Komut devreder: makine hemen yeniden başlar ya da komut bir SSH oturumunda çalışıyorsa (
sudove--hostüzerinden de), sonuç önce oturuma ulaşsın diye komut sona erdikten on saniye sonra yeniden başlar. stdoutHanded 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,
.flockdosyasının SSH kullanıcısı olarak,.flockdosyası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_hostsolduğ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_hostsdosyasında bulunan bir ana bilgisayar anahtarıyla,IronFlockInstallEFI 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 dadbshim’in özet değerini listeler. - ne
dbxne 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 --yesSonuç
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":[...]}| Alan | Değerler |
|---|---|
dry_run | --dry-run ile true; bir devirden sonra false |
machine | hostname (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 |
disk | değ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 |
image | sı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, flock | cihazın adı, IRONFLOCKOS bölümündeki .flock dosyasının adı ve .flock dosyasının okunduğu yer |
network | interface, 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 |
proxy | proxy yoksa null; aksi hâlde http, https, no_proxy, password (true: proxy ayarı bir parola içeriyor), from (flags, environment) |
ssh_user | yeni sistemin SSH hesabı; .flock dosyası hesap ayarlamıyorsa null |
files | IRONFLOCKOS bölümü için dosyalar, path ve size ile |
drivers | checked ve her biri for (disk, network), device, modalias, driver, module, modules, check (matched, built_in, not_checked) içeren devices |
not_carried_over | yeni sistemin almadıkları |
delayed_reboot | true: komut SSH üzerinden çalışıyor ve yeniden başlatma, komut sona erdikten on saniye sonra gelir |
warnings | planı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 updatekurar), ReswarmOS. - BIOS, 32 bit UEFI, görüntüsü olmayan bir mimari, bağlı olmayan (ret mesajı
mountkomutunu belirtir) ya da salt okunur bağlanmış (mount -o remount,rwkomutunu 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 (
--diskile 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 dalsblkkomutunun 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.confkabul etmeyen bir görüntüyle ya daproxy.confdosyası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
iparacı: 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-runile verilmedikçe,--diskolmadan--yes.- kurulu cihaz ajanı olmayan bir makinede
-cyok;--hostüzerinden--no-waitolmadan,-cyok ya da SSH kullanıcısı ayarlamayan bir.flockdosyası. - 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ü (bunuos flash --installeryazar). - parola içeren bir proxy URL’si ve
agent installkomutunun 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:
.flockdosyası geçerli değil ya da SSH anahtarı geçerli değil.- katalog,
os imageskomutunda 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ı
| Kod | Anlamı |
|---|---|
| 0 | plan 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ı |
| 1 | komut 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 |
| 2 | hatalı komut satırı, hiçbir şeye dokunulmadı |
| 3 | makine reddedildi, hiçbir şey değiştirilmedi |
| 4 | soru ana bilgisayar adından başka bir şeyle yanıtlandı, sorulamadı ve --yes verilmedi ya da şifreli bir sistemde --allow-unencrypted olmadan --yes verildi |
| 130 | devirden ö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.