GNU/Linux >> Znalost Linux >  >> Linux

Linux – Je možné vzdáleně připojit obraz, který se může spustit a nainstalovat?

Mám vzdálený server, na kterém běží Linux. Chtěl bych vzdáleně nainstalovat bitovou kopii operačního systému pro případ, že by se poškodil (při experimentování s operačním systémem se to již dvakrát stalo).

Zatím jediný způsob, který mám, je fyzicky přejít do umístění počítače a použít USB disk k připojení operačního systému a BIOS ho uvidí, aby z něj mohl bootovat.

Existuje nějaký způsob, jak se v podstatě připojit k počítači přes ssh , připojte tento obraz a nechte jej fungovat jako na virtuální jednotce ve Windows (jako například nástroje démona), takže přetrvá až do restartu a umožní mi vzdálenou instalaci operačního systému?

Díval jsem se na řešení na Googlu, ale našel jsem něco, co se zmiňuje o PXE boot….což zní složitě, protože potřebujete server a podobně, a není to tak jednoduché, jako namontovat image a hotovo.

Kromě toho jsem nenašel nic užitečného, ​​takže mám dost málo možností….víte někdo, jak toho dosáhnout?

Přijatá odpověď:

Zde je hypotetická situace, kterou považuji za pravděpodobnou:

  1. Cílovým počítačem je EFI.
  2. grub buď nebyl nikdy nainstalován do cíle, nebo byl zcela vymazán ze systému.
    • může pouze zasahovat a jinak nenabízí nic cenného.

Co bychom tedy mohli udělat ve výše uvedeném případě, je nakonfigurovat možnost spouštění pro malý instalační/záchranný obraz, který uchováváme v našem /esp nebo systémový oddíl EFI.

Pokud by se s naší současnou instalací něco pokazilo, pak, dokud budeme mít alespoň nějakým způsobem přístup k systémovému oddílu EFI, můžeme propojit náš firmware a nastavit počítač tak, aby se při příštím restartu spouštěl z obrazu pro obnovení. . V takovém případě bychom museli pouze změnit textový soubor nebo dva, držet palce a spustit reboot now .

Zde je základní sada příkazů pro minimálně nakonfigurovaný Arch Linux (protože to je to, co používám) systém, který stále může dělat to, co popisuji.

  • Nejprve si vytvoříme pracovní adresář a stáhneme nějaké soubory.

    • Používám aria2c tady. Doporučuji, ale použijte cokoli, co funguje.
    • Rozbalil jsem soubor rEFInd s 7za ale stejné
      předvolby nástroje máte ve všech případech zde.
    • Pokud si toto nepřečtete do několika hodin/dnů od mého zveřejnění, pak je velmi velká šance, že níže použité odkazy ne aktuální.

      mkdir /tmp/work && cd /tmp/work || exit
      aria2c  'magnet:?xt=urn:btih:331c7fac2e13c251d77521d2dc61976b6fc4a033&dn=archlinux-2015.06.01-dual.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce' 
              'http://iweb.dl.sourceforge.net/project/refind/0.8.7/refind-cd-0.8.7.zip'
      7za x ref*.zip; rm ref*zip
      
  • Dále vytvořím disk s obrázky.

    • Používám zde soubor se smyčkovými zařízeními, ale pokud na něj chcete zavést systém z firmwaru, možná budete chtít použít skutečný disk.
    • V případě skutečného zařízení fallocate a losetup věci lze ignorovat a skutečné názvy zařízení budou mnohem pravděpodobněji
      odpovídat /dev/sda[12] než /dev/loop0p[12]

      fallocate -l4G img
      
  • Nyní tento disk rozdělím pomocí gdisk a přiřaďte jej zařízení smyčky.

    • Toto je skriptovaná zkratka pro možnosti, které chcete interaktivně napájet programem. Vytvoří tabulku oddílů GUID a oddíl typu EFI-system který pokrývá prvních dostupných 750 Mib cílového disku a další výchozí linuxový oddíl pokrývající zbytek disku.
      • Tyto oddíly budou /dev/sda1 a /dev/sda2 respektive pokud používáte skutečný disk, který bude /dev/sda spíše než ./img . Obvykle je žádoucí přidat více než jeden oddíl pro kořenový adresář linuxu, což je považováno za účel /dev/sda2 .
    • printf skript nebo ne, gdisk program se snadno používá – a tak možná uděláte lépe, když se na něj místo toho dostanete interaktivně. Cílový disk by neměl být připojen, když je spuštěn, a pravděpodobně budete potřebovat práva root k w opište změny.
    • Obecným pravidlem je, že v tomto programu můžete dělat v podstatě, co chcete, bez jakéhokoli efektu, dokud w obřad – tak si buďte jisti, když to uděláte.
    • Vložím svůj $TGT v proměnné shellu. Kromě jeho definice zde, kterou si možná budete chtít upravit podle potřeby, tam, kde ji používám já, tak můžete i vy.

      printf %s\n o y n 1 '' +750M ef00 
                       n 2 '' '' '' '' w y |
      gdisk ./img     >/dev/null
      TGT=$(sudo losetup --show -Pf img)p
      
  • Budeme také potřebovat souborový systém na esp. Musí to být FAT.

    • Dávám svému fs štítek VESP . Svému byste měli říkat, jak chcete.
    • Štítek použijeme později v /etc/fstab a další konfigurační soubor – tak to určitě něco. udělejte
    • Podle mého názoru byste měli vždy označit vše disky.
    • Pokud nainstalujete operační systém do ${TGT}2 nyní pro něj samozřejmě budete potřebovat také souborový systém.

      sudo mkfs.vfat -nVESP "$TGT"1
      
  • A uděláme nějaké mount adresáře a začněte extrahovat příslušné soubory.

    set     ref     ref*iso         
            arch    arch*iso        
            efi     arch/EFI/archiso/efiboot.img
    while   [ "$#" -gt 0 ]
    do      mkdir "$1" || exit
            sudo mount "$2" "$1"
            shift 2
    done;   mkdir esp
    
  • Nainstalujte rEFInd

    • rEFInd je boot manager – který většinou pouze nabízí a naplňuje zaváděcí nabídky.
    • rEFInd umístí své konfigurační soubory na esp a ty lze kdykoli a jakkoli upravit.

      sudo ref/install.sh --usedefault "$TGT"1 &&
      sudo umount ref  && rm -rf ref*
      
  • Nyní mount naše esp a stáhněte si potřebné soubory z instalačního disku Archu, abyste získali náš vlastní živý spouštěcí záchranný disk.

    • Většina živých disků implementuje jakýsi ošklivý hack, aby plochý souborový systém iso bez oddílů vypadal jako přijatelné spouštěcí zařízení pro systém UEFI při zachování zpětné kompatibility se systémy BIOS.
    • Arch Linux není výjimkou.
    • Tento ošklivý hack je to efiboot.img aktuálně připojený na ./efi . Zde najdeme soubor s obrazem jádra a initramfs. ostatní ty na disku (v ./arch/arch/boot ) nebude pracovat pro systémy EFI.

      sudo sh -ec    <<CONF '
           mount    "$1" esp
           cp -ar    efi/EFI/archiso esp/EFI
           cp -ar    arch/arch/*x86* esp/EFI/archiso
           mkdir     esp/EFI/archiso/cow
           xargs   > esp/EFI/archiso/refind_linux.conf
           umount    efi arch
           rm -rf    efi arch*' -- "$TGT"1
      "arch_iso" "archisobasedir=EFI/archiso    
                     archisolabel=VESP             
                     copytoram                     
                     cow_label=VESP                
                     cow_directory=/EFI/archiso/cow
                     cow_persistence=P             
                     cow_spacesize=384M            
                     initrd=EFI/archiso/archiso.img"
      CONF
      

V podstatě jste právě nainstalovali – od základů – záchranné prostředí před spuštěním s trvalým copy-on-write uložit soubor (takže můžete například systemctl enable sshd_socket nyní a nastavení přetrvá i při příštím spuštění živého systému) . Živé instalační médium Arch Linuxu je nyní umístěno na zaváděcím oddílu vašeho systému a lze jej kdykoli vyvolat ze spouštěcí nabídky. Samozřejmě jste také nainstalovali správce boot menu.

  • Několik věcí z výše uvedeného by vás mělo vyzdvihnout:
    • Používám *x86* protože mám 64bitový stroj a ten glob dostane to, co potřebuji. Pro 32bitovou instalaci (ale proč?) použijte *686* místo toho.
      • Co potřebuji , mimochodem, je celkem pouze 7 souborů a přibližně 300 milionů.
      • Rootfs živého systému je rozdrcený obrázek v esp/EFI/archiso/x86_64/airootfs.sfs .
    • Uvádím disk podle štítku. Neexistují žádné nápovědy nebo jiný takový nesmysl – disk se jmenuje a tak se snadno najde. Místo VESP budete muset nahradit štítkem esp tím, co jste si vybrali .
    • copytoram kernel parametr instruuje Arch Linux live init systém zkopíruje svůj obraz rootfs do souboru tmpfs před jeho připojením do smyčky – což vám ve skutečnosti uvolní přístup k esp při práci v tomto prostředí. Většina systémů živé instalace nabízí podobně uspořádané konstrukce.
Související:Došlo místo na disku v oddílu /usr/ports, jak mohu vytvořit porty?

Kde EFI září, je jeho schopnost zacházet se systémem souborů . Na moderních počítačích není absolutně potřeba balit nějaké surové binární soubory a vklínit je mezi vaše diskové oddíly. Překvapuje mě, že to lidé stále dělají, když místo toho mohli spravovat a konfigurovat své spouštěcí prostředí pomocí jednoduchých textových souborů uspořádaných do běžného, ​​každodenního adresářového stromu. Výše jsem umístil jádro a initramfs do jejich vlastní pojmenované složky v centrální stromové struktuře. EFI – který převezme podněty z rEFInd v tomto případě pro pohodlí – vyvolá to při spouštění podle název cesty protože se připojí zvláště

Nyní zbývá pouze zajistit, abyste pochopili, jak vybrat systém, který se skutečně spustí, když to potřebujete. Pochopte – můžete to spustit hned teď. Můžete to udělat ve virtuálním počítači s qemu (budete potřebovat OVMF -pflash firmware) nebo můžete restartovat počítač a rEFInd detekuje jádro a předá jeho cestu firmwaru, který načte a spustí živý systém Arch Linux. Když na disk nainstalujete trvalejší systém – nebo několik (což můžete provést hned teď, pokud se tak rozhodnete, restartováním na živý disk a provedením instalace) – budete chtít zachovat jeho jádro a initramfs ve stejné struktuře. To se dá velmi snadno zařídit.

  • Pokud byste například instalovali systém do kořenového oddílu pojmenovaného pro nedostatek představivosti root , chcete to nastavit nějak takto:

    • mount --bind jeho konkrétní spouštěcí složku přes kořenový adresář /boot cestu v /etc/fstab .
    • Budete potřebovat dva řádky v /etc/fstab a vytvořit přípojný bod v /esp to zvládnout.

      sudo sh -c          <<FSTAB     '
           [ -d /esp ]    || mkdir /esp
           findmnt   /esp || mount -L ESP /esp
           mkdir -p  /esp/EFI/root
           cp        /boot/kernel binary   
                     /boot/initramfs.img   
                     /esp/EFI/root
           mount -B  /esp/EFI/root /boot
           cat   >>  /etc/fstab
           echo "$1">/boot/refind_linux.conf
      ' -- '"new_menu_item" "root=LABEL=root"'
      LABEL=ESP       /esp    vfat    defaults        0 2
      /esp/EFI/root   /boot   none    bind,defaults   0 0
      FSTAB
      

Něco takového musíte udělat pouze jednou za instalaci – a to za předpokladu, že jste to tak nenastavili – což je jednodušší, protože jádro a initramfs už budou tam, kam patří. Jakmile budete mít tyto řádky v /etc/fstab a minimální konfigurační soubor v /boot/refind_linux.conf jste připraveni k dobrému. Můžete podporovat tolik instalací, kolik chcete na stejném systému se stejným /esp zařízení a centralizujte všechny zaváděcí binární soubory do stejného stromu. Různé
systémy budou dělat věci trochu jinak – například Windows potřebuje trochu více přemlouvání, aby se přizpůsobil – ale budou fungovat všechny .

  • Ok, poslední věc, kterou potřebujete vědět, jak jsem již řekl, je, jak vybrat další zaváděcí instalaci ze souborového systému. Toto je nakonfigurováno v souboru /esp/EFI/BOOT/refind.conf .

    • Tento soubor byste si měli přečíst – pravděpodobně je to 99% komentář a řekne vám vše o tom, co s ním můžete dělat.
    • Samozřejmě nemusíte dělat nic – ve výchozím nastavení rEFInd zavede nejnovější aktualizované jádro ve svém stromu skenování.
    • Obvykle však nastavím následující možnosti:

      <<DEF sudo tee 
             /esp/EFI/BOOT/refind.conf.def
      ### refind.conf.def
      ### when renamed to refind.conf this file
      ### will cause refind to select by default
      ### the menu item called "new_menu_item"
      ### in its /boot/refind_linux.conf
      default_selection new_menu_item
      ### this file will also set the menu timeout
      ### to only 5 seconds at every boot
      timeout 5
      ### END
      DEF
      
    • A záchranný soubor…

      <<RES sudo tee 
             /esp/EFI/BOOT/refind.conf.res
      ### refind.conf.res
      ### this one will default to selecting
      ### the entry named "arch_iso" with a
      ### 10 second timeout
      default_selection arch_iso
      timeout 10
      ### END
      RES
      
      • A tak je nyní můžete jednoduše přesouvat.
      • Například, aby se záchranné prostředí definitivně spustilo poté, co provedete reboot now
      sudo cp /esp/EFI/BOOT/refind.conf.res 
              /esp/EFI/BOOT/refind.conf
      
      • A nahraďte .def pro .res použitý výše, samozřejmě pro návrat k výchozímu kořenovému adresáři.
Související:nainstalovat Ubuntu ze souboru ISO na Windows?
Linux
  1. Linuxový editor, který dokáže zvýraznit všechny výskyty vybraného slova

  2. Je možné, že linuxový deskriptor souboru 0 1 2 není pro stdin, stdout a stderr?

  3. Existuje nástroj, který dokáže detekovat (a pokud je to možné, opravit) závady v souborech MP3?

  1. Nainstalujte Linux Mint s Windows 8 | Duální spouštění Windows 8 a Linux Mint 12

  2. Linux – kompilace a instalace jádra Kernel.org do vlastního svazku na disku?

  3. Je možné zavést linuxové jádro bez vytvoření obrazu initrd?

  1. Mohu zavést Linux z VHD?

  2. Jak připojit obraz disku s více oddíly v Linuxu?

  3. Může Linux připojit normální adresář s řídkým svazkem disku Time Machine?