установить Arch на уже разбитый на разделы диск

Вот гипотетическая ситуация, которая, на мой взгляд, может быть правдоподобной:

  1. Целевая машина - EFI.
  2. grub либо никогда не устанавливается на цель, либо был полностью удален из системы.
    • он может только мешать и не предлагает ничего ценного в противном случае.

То, что мы могли бы сделать в приведенном выше случае, - это настроить параметр загрузки для небольшого установочного / аварийного образа, который мы храним в нашем системном разделе / esp или EFI.

Если что-то когда-либо пойдет не так с нашей текущей установкой, то, пока мы можем хотя бы получить доступ к системному разделу EFI каким-либо образом, мы можем связать нашу прошивку и настроить машину на загрузку с нашим образом восстановления при следующей перезагрузке. В этом случае все, что нам нужно сделать, это изменить текстовый файл или два, скрестить пальцы и запустить reboot now .

Вот базовый набор команд для минимально сконфигурированной системы Arch Linux (потому что это то, что я использую) , которая все еще может работать так, как я описываю.

  • Сначала мы создадим рабочий каталог и загрузим несколько файлов.

    • Здесь я использую aria2c . Я рекомендую это, но используйте то, что работает.
    • Я разархивирую rEFInd с помощью 7za , но во всех случаях вы можете использовать тот же инструмент .
    • Если вы не читаете это в течение нескольких часов / дней после того, как я опубликовал его, то очень высока вероятность, что ссылки, используемые ниже, не актуальны.

       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.arch. = http: //tracker. : 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 
       
  • Затем я сделаю диск с образом.

    • Я использую здесь файл с петлевыми устройствами, но вы можете использовать реальный диск, если хотите загрузиться с него с прошивки.
    • В случае реального устройства параметры fallocate и losetup можно игнорировать, и фактические имена устройств будут с большей вероятностью соответствовать / dev / sda [12] , чем / dev / loop0p [12]

       fallocate -l4G img 
       
  • Теперь я разделю этот диск с помощью утилиты gdisk и назначу его устройству цикла.

    • Это ярлык в сценарии для параметров, которые вы хотите использовать в программе в интерактивном режиме. Он создаст таблицу разделов GUID и раздел типа EFI-system , который охватывает первый доступный 750Mib целевого диска и другой раздел Linux по умолчанию, охватывающий остальную часть диска. {{ 1}}
      • Эти разделы будут / dev / sda1 и / dev / sda2 соответственно, если вы используете настоящий диск, то есть / dev / sda , а не ./ img . Обычно желательно добавить более одного раздела для корня linux, что, как предполагается, является целью / dev / sda2 . Сценарий
    • printf или нет, программа gdisk проста в использовании - и поэтому вам может быть лучше использовать ее в интерактивном режиме. Целевой диск не должен монтироваться при запуске, и вам, вероятно, потребуются права root для w внесения изменений.
    • Как правило, вы можете делать в этой программе практически все, что захотите, без какого-либо эффекта, пока не w обряд - так что будьте уверены, когда будете это делать.
    • Я помещаю свой $ TGT в переменную оболочки. За исключением его определения здесь, которое вы, возможно, захотите адаптировать по мере необходимости, где я его использую, можете и вы.

       printf% s \\ noyn 1 '' + 750M ef00 \ 
      n 2 '' '' '' '' wy | 
      gdisk ./img> / dev / null {1 }} TGT = $ (sudo losetup --show -Pf img) p 
       
  • Нам также понадобится файловая система на esp. Это должен быть FAT.

    • Я даю свой ярлык fs VESP . Вы должны называть свой как хотите.
    • Мы будем использовать метку позже в / etc / fstab и другом файле конфигурации - так что определенно сделайте это чем-нибудь.
    • На мой взгляд, вы всегда должны маркировать все диски.
    • Если вы устанавливаете ОС на $ {TGT} 2 , теперь вам, конечно же, понадобится файловая система для нее.

       sudo mkfs.vfat -nVESP "$ TGT" 1 
       
  • И мы создадим несколько каталогов mount и начнем извлекать соответствующие файлы.

     установить ref ref * iso \ 
    arch arch * iso \ 
    efi arch / EFI / archiso / efiboot.img 
    в то время как ["$ #" -gt 0] { {1}} do mkdir "$ 1" || exit 
    sudo mount "$ 2" "$ 1" 
    shift 2 
    готово; mkdir esp 
     
  • Установить rEFInd ...

    • rEFInd - менеджер загрузки, который в основном просто предлагает и заполняет меню загрузки.
    • rEFInd поместит свои файлы конфигурации в esp, и их можно будет редактировать в любое время и в любом случае.

       sudo ref / install.sh --usedefault "$ TGT" 1 && 
      sudo umount ref && rm -rf ref * 
       
  • Теперь мы смонтируем наш esp и получите необходимые файлы с установочного диска Arch, чтобы получить наш собственный загрузочный аварийный диск.

    • Большинство живых дисков реализуют своего рода уродливый взлом, чтобы плоская, неразмеченная файловая система iso выглядела как приемлемое загрузочное устройство для системы UEFI, сохраняя при этом обратную совместимость с системами BIOS.
    • Arch Linux не исключение.
    • Этот уродливый хак заключается в том, что efiboot.img в настоящее время установлен на ./ efi .Здесь мы найдем наше ядро ​​и файл образа initramfs. другие на диске ./ arch / arch / boot ) не будут не работать для систем EFI.

       sudo sh -ec << CONF '
      смонтировать "$ 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 \ {{1 }} cow_label = VESP \ 
      cow_directory = / EFI / archiso / cow \ 
      cow_persistence = P \ 
      cow_spacesize = 384M \ 
      initrd = EFI / archiso / archiso .img \ "
      CONF 
       

По сути, вы только что установили - с нуля - среду предзагрузочного восстановления с постоянным сохранением копирования при записи . файл (так что вы можете, например, systemctl включить sshd_socket сейчас, и настройка сохранится при следующей загрузке живой системы) . Живой установочный носитель Arch Linux теперь находится в загрузочном разделе вашей системы и может быть вызван из меню загрузки в любое время. Конечно, вы также установили менеджер меню загрузки.

  • Несколько моментов из вышеперечисленного должны вас выделить:
    • Я использую * x86 * , потому что у меня 64-битная машина, и glob получает то, что мне нужно. Для 32-разрядной установки (но почему?) используйте вместо него * 686 * .
      • Что мне нужно , by Кстати, всего 7 файлов и примерно 300M.
      • rootfs живой системы - это сжатый образ в esp / EFI / archiso / x86_64 / airootfs.sfs .
    • Я указываю диск по метке. Нет никаких подсказок или другой подобной ерунды - диск назван и поэтому его легко найти. Вам нужно будет заменить все, что вы выбрали для метки esp, вместо VESP .
    • Параметр ядра copytoram предписывает системе Arch Linux live init скопировать свой образ rootfs в tmpfs перед его монтированием в цикле, что фактически освобождает вас для доступа к esp при работе в нем. среда. Большинство систем живой установки имеют аналогичные конструкции.

Отличительной чертой EFI является его способность обрабатывать файловую систему . На современных компьютерах нет никакой необходимости упаковывать необработанные двоичные файлы и вставлять их между разделами диска. Меня поражает, что люди все еще делают это, когда вместо этого они могут управлять своей загрузочной средой и настраивать ее с помощью простых текстовых файлов, расположенных в обычном, повседневном дереве каталогов. Выше я поместил ядро ​​и initramfs в их собственную именованную папку в центральной древовидной структуре. EFI - который в данном случае для удобства будет брать реплики из rEFInd - будет вызывать его при загрузке по pathname , потому что он монтирует esp.

Теперь все, что осталось сделать, это убедиться, что вы понимаете, как выбрать систему, которая действительно будет загружаться, когда вам нужно. Поймите - вы можете загрузить это прямо сейчас. Вы можете сделать это на виртуальной машине с qemu (вам понадобится прошивка OVMF -pflash ) или вы можете перезагрузить компьютер и rEFInd обнаружит ядро ​​и передаст свой путь прошивке, которая загрузит и запустит живую систему Arch Linux.Когда вы устанавливаете на диск более постоянную систему - или несколько (что вы можете сделать прямо сейчас, если захотите, перезагрузившись с живого диска и выполнив установку) , вы захотите сохранить ее ядро и initramfs в той же структуре. Это очень легко устроить.

  • Если, например, вы должны были установить систему в корневой раздел, названный, из-за недостатка воображения, root , вам нужно было бы настроить его примерно так:

    • mount - привязать конкретную загрузочную папку к корневому пути / boot в / etc / fstab .
    • Для этого вам понадобятся две строки в / etc / fstab и для создания точки монтирования в / esp .

       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 { {1}} '-' "new_menu_item" "root = LABEL = root" '
      LABEL = ESP / esp vfat defaults 0 2 
       / esp / EFI / root / boot none bind, defaults 0 0 
      FSTAB 
       

Вам нужно делать что-то подобное только один раз за установку - и это при условии, что вы изначально не настроили это таким образом - что проще потому что ядро ​​и initramfs уже будут там, где им место. После того, как у вас есть эти строки в / etc / fstab и минимальный файл конфигурации в /boot/refind_linux.conf , все готово.Вы можете поддерживать любое количество установок в одной системе с одним и тем же устройством / esp и точно так же централизовать все загрузочные двоичные файлы в одном дереве. Различные системы будут действовать немного по-разному - например, Windows потребуется немного больше уговоров, чтобы заставить их соответствовать, - но они все будут работать .

  • Хорошо, последнее, что вам нужно знать, как я сказал ранее, это как выбрать следующую загрузочную установку из файловой системы. Это настраивается в файле /esp/EFI/BOOT/refind.conf .

    • Вы должны прочитать этот файл - это, вероятно, 99% комментарий, и он расскажет вам все о том, что вы можете с ним делать.
    • Конечно, на самом деле вам ничего не нужно делать - по умолчанию rEFInd загружает последнее обновленное ядро ​​в своем дереве сканирования.
    • Но обычно я устанавливаю следующие параметры:

       << \ DEF sudo tee \ 
       /esp/EFI/BOOT/refind.conf.def
      ### refind. conf.def 
       ### при переименовании в refind.conf этот файл 
       ### приведет к тому, что refind выберет по умолчанию 
       ### пункт меню под названием "new_menu_item" { {1}} ### в его /boot/refind_linux.conf
      default_selection new_menu_item 
       ### этот файл также установит тайм-аут меню 
       ### всего на 5 секунд при каждой загрузке 
      таймаут 5 
       ### END 
      DEF 
       
    • И файл восстановления ...

       << \ RES sudo tee \ 
       /esp/EFI/BOOT/refind.conf.res
      ### refind.conf.res 
       ### здесь по умолчанию будет выбран 
       # ## запись с именем "arch_iso" с 
       ### 10-секундным таймаутом 
      default_selection arch_iso 
      тайм-аутом 10 
       ### END 
      RES 
       
      • Итак, теперь вы можете просто перемещать их.
      • Например, чтобы среда восстановления загружалась после того, как вы выполните перезагрузку сейчас ...

       sudo cp /esp/EFI/BOOT/refind.conf.res \ 
       /esp/EFI/BOOT/refind.conf
      
      • И замените .def на .res , использованный выше, конечно, чтобы вернуться к корневому каталогу по умолчанию .
0
11.04.2019, 11:15
1 ответ

Выполните следующие действия:

  • Загрузите ISO-образ Arch Linux с USB-накопителя.
  • Отформатируйте разделы, если они не были отформатированы.
  • Инициализировать раздел подкачки:
mkswap /dev/sda3
swapon /dev/sda3
  • Смонтировать разделы:
mount /dev/sda4 /mnt
mount /dev/sda5 /mnt/home
  • Проверьте, правильно ли смонтированы все разделы, с помощью команды lsblk. Вывод будет примерно таким:
# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  100G  0 disk 
    ├─sda1   8:1    0  512M  0 part 
    ├─sda2   8:2    0    1G  0 part [SWAP]
    ├─sda3   8:3    0   20G  0 part /
    └─sda4   8:4    0   80G  0 part /home
  • Установить базовые пакеты:pacstrap /mnt base
  • Добавить записи fstab:genfstab -U /mnt >> /mnt/etc/fstab. Также сделайте это для /home.
  • chroot в новую систему:arch-chroot /mnt /bin/bash
  • Выполните следующие шаги из руководства по установке Arch Linux .

Подробные инструкции см. в этом видео .

0
28.01.2020, 03:50

Теги

Похожие вопросы