Install Arch Linux from existing Linux (Русский)
Этот документ описывает bootstrapping process, нужный для того, чтобы установить Arch Linux из уже работающего хоста Linux. После bootstrapping, установка продолжается так, как описано в руководстве по установке Arch Linux.
Установка Arch Linux из-под другого Linux полезна для:
- удалённой установки Arch Linux, например на виртуальном сервере
- замены существующего Linux без LiveCD (смотрите #Замена уже существующей системы без LiveCD)
- создания нового дистрибутива Linux или LiveCD основанного на Arch Linux
- создания chroot окружения Arch Linux, например для контейнеров Docker
- rootfs-over-NFS для бездисковых систем
Цель процедуры начальной загрузки в том, чтобы настроить окружение, из которого можно будет запустить arch-install-scripts (содержит такие скрипты как pacstrap
и arch-chroot
).
Если хост работает под Arch Linux, этого можно достичь простой установкой пакета arch-install-scripts. На других дистрибутивах Linux потребуется подготовить chroot-окружение на базе Arch Linux.
Резервное копирование и подготовка
Сделайте резервную копию всех ваших данных, включая почту, веб-серверы и т. д. Держите всю нужную информацию всегда под рукой. Сохраните все конфигурации вашего сервера, имена хостов и т. д.
Список информации, которая вам скорее всего понадобится:
- IP-адреса
- имена хостов (проверьте ваш
/etc/hosts
) - DNS-серверы (проверьте
/etc/resolv.conf
) - SSH-ключи (если на сервере работают другие люди, то им придётся подтверждать использование новых ключей в случае их замены. Сюда входят ключи от вашего Apache, ваших почтовых серверов, вашего SSH-сервера и др.)
- Информация об оборудовании (сетевая карта и т. д. Проверьте )
- Настройки Grub.
В целом, хорошей идеей является копирование оригинального каталога на ваш локальный диск.
Из хоста, работающего на Arch Linux
Установите пакет arch-install-scripts.
Примонтируйте файловую систему, которая в новой установке будет корневой, как описано в статье Руководство по установке#Монтирование разделов. Если каталог уже занят, просто используйте какой-нибудь другой каталог, например и используйте его в процессе установки.
На этом этапе Arch Linux можно либо установить с нуля, либо он может скопировать установку хоста. Эти два варианта описаны ниже.
Установка Arch Linux с нуля
Смотрите Руководство по установке#Установка.
Первый шаг (выбор зеркал) можно пропустить, так как зеркала на хосте скорее всего уже настроены.
- Чтобы избежать повторной загрузки всех пакетов, посмотрите Pacman/Советы и приёмы#Сетевой кэш pacman с совместным доступом или используйте pacstrap с параметром
-c
для использования кеша пакетов вашего хост-компьютера. - Если используется загрузчик grub, команда
grub-mkconfig
может определять устройства неправильно. Это приведёт к ошибкеError:no such device
при попытке загрузки с флешки. Чтобы решить проблему, с хоста, на котором запущен Arch Linux, смонтируйте вновь установленные разделы, выполните arch-chroot в новый раздел, затем установите и настройте grub. Для последнего шага может потребоваться отключить lvmetad в файле/etc/lvm/lvm.conf
путём установкиuse_lvmetad=0
.
Создание копии существующей установки Arch Linux
Можно реплицировать существующую установку Arch Linux, скопировав файловую систему хоста в новый раздел и внеся в неё некоторые изменения, чтобы сделать её загрузочной и уникальной.
Первый шаг — скопировать файлы хоста в смонтированный новый раздел, например с помощью rsync (Русский)#Полная резервная копия системы.
Затем нужно выполнить процедуры, описанные в Руководство по установке#Настройка системы, с некоторыми оговорками и дополнительными шагами:
- Настройку часовых поясов, локализации и паролей можно пропустить
- Initramfs может понадобиться обновить в случае изменения файловой системы, например с ext4 на Btrfs
- Загрузчик необходимо переустановить
- Удалите
/etc/machine-id
, чтобы при следующей загрузке сгенерировался новый
Если эта копия может использоваться в другой конфигурации или с другим оборудованием, рассмотрите следующие дополнительные операции:
- Настройте обновление микрокода под целевой процессор
- Если есть какие-то настройки Xorg и они могут оказаться несовместимы с новой системой, отключите их (смотрите Moving an existing install into (or out of) a virtual machine#Disable any Xorg-related files)
- Обновите другие необходимые настройки, например перенастройте сеть или звук.
Из хоста, работающего на другом дистрибутиве Linux
Существуют инструменты, которые автоматизируют большую часть шагов, описанных в следующих подразделах. Смотрите их домашние страницы для получения подробных инструкций.
- arch-bootstrap (Bash)
- digitalocean-debian-to-arch (repartition disk, DigitalOcean specific)
- image-bootstrap (Python)
- vps2arch (Bash)
- archbashstrap (Bash)
Ручной способ описан в следующих подразделах. Идея состоит в том, чтобы либо pacman работал непосредственно в хост-системе, либо запустить систему Arch внутри хост-системы, при этом фактическая установка выполняется из системы Arch. Вложенная система содержится внутри chroot.
Использование pacman из хост-системы
Pacman может быть скомпилирован в большинстве дистрибутивов Linux и использоваться непосредственно в хост-системе для начальной установки Arch Linux. arch-install-scripts должны запускаться без проблем непосредственно из загруженных исходником в любом современном дистрибутиве.
Некоторые дистрибутивы предоставляют пакеты для pacman и/или arch-install-scripts в своих официальных репозиториях, которые можно использовать для этой цели. По состоянию на июль 2020 года известно, что Void Linux предоставляет пакет pacman, а Alpine Linux и Fedora предоставляют pacman и arch-install-scripts.
Создаём chroot
Есть два способа настроить и войти в chroot, они представлены ниже. Выберите только один из двух методов. Затем перейдите к #Используем наше chroot окружение.
Способ 1: Использование Bootstrap образа (рекомендуется)
Скачиваем образ bootstrap с любого желаемого зеркала в . Также можно скачать подпись (тот же URL с суффиксом ) и проверить её подлинность с помощью GnuPG.
Распаковываем его:
# cd /tmp # tar xzf <путь-к-каталогу-где-образ>/archlinux-bootstrap-*-x86_64.tar.gz --numeric-owner
Обратите внимание на последнюю опцию , которая важна для сохранения правильных номеров UID и GID извлечённых файлов в случае, если ваша существующая система Linux использует номера, отличные от Arch Linux.
Выбираем подходящий для вашего интернета сервер, откуда будут загружаться основные репозитории, путём редактирования файла .
Войдём в chroot
- Если установлен bash 4 или новее и команда unshare поддерживает опции и , то:
# /tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
- Иначе:
# mount --bind /tmp/root.x86_64 /tmp/root.x86_64 # cd /tmp/root.x86_64 # cp /etc/resolv.conf etc # mount -t proc /proc proc # mount --make-rslave --rbind /sys sys # mount --make-rslave --rbind /dev dev # mount --make-rslave --rbind /run run (при условии, что /run существует) # chroot /tmp/root.x86_64 /bin/bash
Способ 2: Используя образ LiveCD
Можно смонтировать корневой образ последнего установочного диска Arch Linux и затем заchroot'ить туда. Плюс этого способа в том, что у вас будет сразу рабочий Arch Linux installation прямо внутри хост-системы без надобности в его настройки.
- Корневой образ можно скачать с одного из зеркал в папке . Образ имеет формат squashfs, который является read-only, поэтому нам надо распаковать его и смонтировать корневой образ.
- Чтобы распаковать корневой образ, надо
# unsquashfs airootfs.sfs
- Выберите сервер с репозиториями путём редактирования файла
squashfs-root/etc/pacman.d/mirrorlist
.
- Перед тем как chrooting to it, нужно смонтировать некоторые виртуальные системные разделы, а затем скопировать resolv.conf для интернета.
# mount --bind squashfs-root squashfs-root # mount -t proc none squashfs-root/proc # mount -t sysfs none squashfs-root/sys # mount -o bind /dev squashfs-root/dev # mount -o bind /dev/pts squashfs-root/dev/pts # важно для pacman (для проверки подписей) # cp -L /etc/resolv.conf squashfs-root/etc # а это, чтобы мог работать интернет в chroot
- Теперь всё готово, чтобы to chroot в только что установленное окружение Arch
# chroot squashfs-root bash
Используем наше chroot окружение
Среда начальной загрузки является почти пустой основой (без nano или ). Поэтому нужно настроить pacman, чтобы загружать другие необходимые пакеты.
Начальная настройка хранилища ключей pacman
Перед установкой, ключи pacman должны быть настроены. Перед тем как вводить следующие две команды, можете почитать pacman/Подпись пакета#Инициализация связки ключей, чтобы узнать entropy requirements:
Скачивание базовых утилит
Обновите списки пакетов и установите что вам нужно: , и т. д.
Советы по установке
Дальнейшая установка выполняется как описано в руководстве: Руководство по установке#Монтирование разделов и далее.
Некоторые хост-системы или конфигурации могут потребовать дополнительных действий. Ниже описаны советы для них.
/dev/shm
На хостах Debian pacstrap
выводит следующую ошибку:
# pacstrap /mnt base # ==> Creating install root at /mnt # mount: mount point /mnt/dev/shm is a symbolic link to nowhere # ==> ERROR: failed to setup API filesystems in new root
Это потому, что в Debian ссылается на , который в Arch-based chroot не существует, поэтому ссылка не рабочая. Чтобы исправить это, просто создайте каталог :
# mkdir /run/shm
/dev/pts
При установке с хоста Debian 7 следующая ошибка мешает работе pacstrap и arch-chroot:
# pacstrap -i /mnt
mount: mount point /mnt/dev/pts does not exist ==> ERROR: failed to setup chroot /mnt
Похоже, это из-за того, что эти два скрипта используют общую функцию. полагается на новые возможности util-linux, которые несовместимы со средой средой Debian 7 (смотрите ).
Решение для pacstrap состоит в том, чтобы вручную выполнять его задачи, но использовать обычную процедуру для монтирования файловых систем ядра в целевой каталог ():
# newroot=/mnt # mkdir -m 0755 -p "$newroot"/var/{cache/pacman/pkg,lib/pacman,log} "$newroot"/{dev,run,etc} # mkdir -m 1777 -p "$newroot"/tmp # mkdir -m 0555 -p "$newroot"/{sys,proc} # mount --bind "$newroot" "$newroot" # mount -t proc /proc "$newroot/proc" # mount --rbind /sys "$newroot/sys" # mount --rbind /run "$newroot/run" # mount --rbind /dev "$newroot/dev" # pacman -r "$newroot" --cachedir="$newroot/var/cache/pacman/pkg" -Sy base base-devel ... ## add the packages you want # cp -a /etc/pacman.d/gnupg "$newroot/etc/pacman.d/" ## copy keyring # cp -a /etc/pacman.d/mirrorlist "$newroot/etc/pacman.d/" ## copy mirrorlist
Вместо использования arch-chroot просто выполните:
# chroot "$newroot"
lvmetad
Попытка создать логические тома LVM из на хосте Debian 7 приводит к следующей ошибке:
(Создание физического тома и группы томов работало, несмотря на ошибку .)
Это можно легко обойти, создав логические тома вне chroot (с хоста Debian). После этого они остаются доступными в chroot.
Кроме того, если в вашей системе есть lvm, вы можете получить следующий вывод:
Это потому, что по умолчанию debian не использует lvmetad. Нужно изменить и установить для use_lvmetad
значение :
use_lvmetad = 0
Позже это вызовет ошибку при загрузке на этапе initrd. Следовательно, вы должны изменить его обратно после генерации grub. В программном RAID + LVM шаги будут следующими:
- После установки системы дважды перепроверьте ваш mkinitcpio и настройки загрузчика. Смотрите список загрузчиков на странице Процесс загрузки Arch#Загрузчик.
- Может понадобиться изменить для RAID.
- Может понадобиться изменить и в соответствии с требованиями ваших LVM и RAID:
MODULES="dm_mod" HOOKS="base udev mdadm_udev ... block lvm2 filesystems ..."
- Скорее всего нужно сгенерировать новый образ initrd с помощью mkinitcpio. Смотрите mkinitcpio (Русский)#Создание загрузочного образа.
- Пропишите в .
- Обновите настройки загрузчика. Подробности смотрите на странице вашего загрузчика в этой вики.
- Пропишите в .
Хост Fedora
На хостах Fedora и Live USB, если у вас не получается сгенерировать ваш с помощью genfstab
, то удалите из fstab одинаковые записи и везде опции (это опция специфична для Fedora и поэтому не даст вам загрузиться).
Что нужно проверить перед перезагрузкой
Перед перезагрузкой дважды проверьте несколько деталей в своей установке, чтобы добиться успешной установки. Для этого сначала выполните chroot во вновь установленной системе, а затем:
- создайте пользователя с паролем, чтобы можно было войти по ssh. Это важно, так как вход в пользователя root отключен по умолчанию начиная с OpenSSH-7.1p2.
- установите пароль для root, чтобы вы могли переключиться в него с помощью su.
- установите какой-нибудь SSH-сервер и включите его автозагрузку.
- настройте сеть, чтобы подключение выполнялось автоматически при загрузке.
- установите загрузчик и настройте его на использование раздела подкачки, который вы присвоили ранее в качестве корневого раздела. Возможно, вы захотите настроить загрузчик так, чтобы он мог загружаться в вашу старую систему; для этой цели полезно повторно использовать существующий раздел в новой системе.
Замена уже существующей системы без LiveCD
Если вы хотите заменить хост-систему на Arch Linux, но не можете использовать LiveCD, можно сделать временную установку Arch Linux на отдельный небольшой раздел (например swap) и использовать его для установки основной системы.
Освободите ~700МБ, например, переформатировав существующий swap-раздел (после окончания установки, можете обратно создать swap).
Использование старого раздела подкачки в качестве нового корневого раздела
Проверьте , или чтобы найти ваш раздел подкачки. Для примера предположим, что это раздел ( будет числом).
Выполните следующее:
Отключите подкачку:
# swapoff /dev/sdaX
Создайте файловую систему на месте отключенного раздела подкачки
# fdisk /dev/sda (поле ID для /dev/sdaX выставьте в "Linux" - Hex 83) # mke2fs -j /dev/sdaX
Создайте каталог, в который раздел будет примонтирован
# mkdir /mnt/newsys
Наконец, примонтируйте бывший раздел подкачки в новый каталог и установите в него промежуточную систему.
# mount -t ext4 /dev/sdaX /mnt/newsys
Установка
Установите основные пакеты и другие необходимые вам пакеты для получения системы в /mnt/newsys
с работающим интернетом. Если в этом разделе места не очень много, выбирайте пакеты для установки через pacstrap с умом и по возможности используйте опцию чтобы избежать переполнения маленького раздела.
После установки обновите настройки загрузчика и перезагрузитесь в свежеустановленный Arch Linux и Rsync (Русский)#Полная резервная копия системы на основной раздел.