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:
- Cílovým počítačem je EFI.
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
s7za
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
- Používám
-
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
alosetup
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
.
- Tyto oddíly budou
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 kw
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
- 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.
-
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
- Dávám svému fs štítek
-
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 liveinit
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.
- Používám
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.