поскольку Клауде очень жадный то закончить с ним я так и не смог, пошел к Дипсику и он мне дал это вот... Точней это после исправления одной ошибки, но вобщем то тоже как то так.
Здесь кое чего не хватает, в основном в самом начале. Очистка дисков так может не выйти но это отдельная тема...
# Инструкция по установке Ubuntu Server 26.04 LTS
# Офлайн-установка с флешки, Legacy BIOS, LVM, RAID1, SSH по паролю
====================================================================
ВАЖНО ПЕРЕД НАЧАЛОМ
====================================================================
Эта инструкция предназначена для установки на ЧИСТЫЙ физический сервер
с двумя одинаковыми дисками (/dev/sda и /dev/sdb). Всё существующее
на дисках будет УНИЧТОЖЕНО.
Что уже должно быть сделано:
- Сервер загружен с подготовленной флешки в режиме Legacy BIOS (не UEFI).
- Ты видишь консоль установщика Ubuntu Server.
- Сетевой кабель подключён к серверу.
- Ты находишься в командной строке с приглашением root@ubuntu-server:/#
Что запрещено:
- Пытаться выйти в интернет во время установки (кроме Шага 12).
- Прерывать выполнение команд (Ctrl+C), если не сказано иное.
- Пытаться "доделать как-нибудь" при ошибке.
ПРАВИЛО ПЕРЕЗАПУСКА:
Если на любом шаге (кроме Шага 12) ты увидишь ошибку, которую
инструкция не объясняет:
1. Не пытайся "доделать как-нибудь".
2. Вернись к Шагу 1 этой инструкции.
3. Начни заново с чистой очистки дисков.
Исключение - только если инструкция явно говорит "это нормально, продолжай".
ВАЖНО: вводи команды ТОЧНО так, как они написаны. После каждой
команды нажимай Enter.
====================================================================
ШАГ 1. ОЧИСТКА ДИСКОВ
====================================================================
Выполни:
wipefs -a /dev/sda /dev/sdb
Что должно быть: строки вида
/dev/sda: 8 bytes were erased at offset ...
Если команда молчит или выдаёт ошибку - остановись.
Создаём разделы:
for d in sda sdb; do
cat <<EOF | sfdisk /dev/$d
label: dos
start=2048, type=fd, bootable
EOF
done
Что должно быть: для каждого диска сообщение о записи новой DOS-таблицы
и одного раздела. Ошибок быть не должно.
====================================================================
ШАГ 2. СОЗДАНИЕ RAID1
====================================================================
mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.2 --force /dev/sda1 /dev/sdb1
Что должно быть: система спросит "Continue creating array?" -
введи y и Enter.
Затем:
mkfs.ext4 /dev/md0
Что должно быть: много строк, в конце
Writing superblocks and filesystem accounting information: done
====================================================================
ШАГ 3. МОНТИРОВАНИЕ И КОПИРОВАНИЕ СИСТЕМЫ
====================================================================
mount /dev/md0 /mnt
mkdir -p /sq1 /sq2
Копируем ПЕРВЫЙ squashfs - полностью:
mount -o loop,ro /cdrom/casper/ubuntu-server-minimal.squashfs /sq1
rsync -aAXH --info=progress2 /sq1/ /mnt/
umount /sq1
Что должно быть: прогресс копирования. В конце - НИКАКИХ rsync error.
Копируем ВТОРОЙ squashfs - только новые файлы:
mount -o loop,ro /cdrom/casper/ubuntu-server-minimal.ubuntu-server.squashfs /sq2
rsync -aAXH --info=progress2 --ignore-existing /sq2/ /mnt/
umount /sq2
Что должно быть: прогресс копирования. В конце - НИКАКИХ rsync error
и НИКАКИХ "could not make way" / "cannot delete non-empty directory".
Если снова увидишь rsync error - остановись и напиши полный вывод.
Не продолжай.
Проверка:
ls /mnt/usr/bin/apt /mnt/etc
Что должно быть: /mnt/usr/bin/apt (файл) и /mnt/etc (каталог).
Если увидишь "No such file or directory" - остановись.
====================================================================
ШАГ 4. ВХОД В CHROOT
====================================================================
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run
mkdir -p /mnt/cdrom
mount --bind /cdrom /mnt/cdrom
chroot /mnt
Что должно быть: приглашение сменится на root@ubuntu-server:/#
(или похожее). Это значит, что мы внутри новой системы.
====================================================================
ШАГ 5. ПАРОЛЬ ROOT И ИМЯ ХОСТА
====================================================================
passwd root
Что должно быть: система попросит новый пароль (не отображается),
затем повтор. ЗАПОМНИ ПАРОЛЬ.
hostnamectl set-hostname ubuntu-server
echo "127.0.1.1 ubuntu-server" >> /etc/hosts
====================================================================
ШАГ 6. FSTAB И MDADM.CONF
====================================================================
UUID=$(blkid -s UUID -o value /dev/md0)
echo "UUID=$UUID / ext4 defaults 0 1" > /etc/fstab
Проверка:
cat /etc/fstab
Что должно быть: строка вида
UUID=длинный-набор / ext4 defaults 0 1
Если UUID пустой - остановись, правило перезапуска.
mdadm --detail --scan > /etc/mdadm/mdadm.conf
sed -i 's|/dev/md/[0-9]*|/dev/md0|' /etc/mdadm/mdadm.conf
====================================================================
ШАГ 7. НАСТРОЙКА СЕТИ (DHCP, ПРИМЕНЯЕМ СРАЗУ)
====================================================================
Внимание: сетевой кабель должен быть УЖЕ подключён.
echo -e "network:\n config: disabled" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
IFACE=$(ls /sys/class/net | grep -v lo | head -1)
cat > /etc/netplan/50-cloud-init.yaml <<EOF
network:
version: 2
ethernets:
$IFACE:
dhcp4: true
EOF
chmod 600 /etc/netplan/50-cloud-init.yaml
netplan apply
Что должно быть: netplan apply без вывода (или с предупреждениями
о DHCP - это нормально).
Проверка IP:
ip addr show
Что должно быть: строка inet с адресом вида 192.168.x.x или 10.x.x.x.
Запомни его.
Если IP не появился: подожди 15 секунд, повтори ip addr show.
Если всё ещё нет - проверь кабель. НЕ пингуй интернет.
Если IP не появился после проверки кабеля - правило перезапуска.
====================================================================
ШАГ 8. УСТАНОВКА SSH С ФЛЕШКИ
====================================================================
Проверка релиза:
ls /cdrom/dists/
Что должно быть: resolute. Если другое - остановись, флешка не от той версии.
ls /cdrom/pool/main/o/openssh/
Что должно быть: файлы .deb с openssh.
Отключаем внешние источники:
: > /etc/apt/sources.list
rm -f /etc/apt/sources.list.d/*.sources
echo 'deb [trusted=yes] file:///cdrom resolute main' > /etc/apt/sources.list.d/cdrom.list
apt update
Что должно быть: только
Get:1 file:/cdrom resolute InRelease
и
Reading package lists... Done
НИКАКИХ http:// или https://.
Если увидишь archive.ubuntu.com или другой внешний адрес - остановись,
правило перезапуска.
apt install -y openssh-server
Что должно быть: Setting up openssh-server...
echo 'PermitRootLogin yes' > /etc/ssh/sshd_config.d/99-root-login.conf
systemctl enable ssh
Проверка:
cat /etc/ssh/sshd_config.d/99-root-login.conf
Что должно быть: PermitRootLogin yes.
====================================================================
ШАГ 9. GRUB
====================================================================
KVER=$(uname -r)
[ -e /boot/vmlinuz-$KVER ] || cp /cdrom/casper/vmlinuz /boot/vmlinuz-$KVER
Что должно быть: молча. Если cp: cannot stat - остановись,
правило перезапуска.
dpkg --purge casper 2>/dev/null
update-initramfs -c -k all
Что должно быть: update-initramfs создаст initramfs. 1-2 минуты.
В конце - update-initramfs: Generating /boot/initrd.img-...
Проверка:
ls -lh /boot/initrd.img-$(uname -r) /boot/vmlinuz-$(uname -r)
Что должно быть: две строки с ненулевым размером.
lsinitramfs /boot/initrd.img-$(uname -r) | grep -i mdadm
Что должно быть: строки с mdadm в пути. Если пусто - напиши мне.
grub-install /dev/sda
grub-install /dev/sdb
Что должно быть: для каждого диска - Installation finished.
No error reported.
echo 'grub-pc grub-pc/install_devices multiselect /dev/sda, /dev/sdb' | debconf-set-selections
dpkg-reconfigure -f noninteractive grub-pc
sed -i 's/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=""/' /etc/default/grub
sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/' /etc/default/grub
update-grub
Что должно быть: update-grub найдёт ядро и создаст grub.cfg.
В конце - done.
Проверка:
grep -A2 "menuentry 'Ubuntu'" /boot/grub/grub.cfg
Что должно быть: строка menuentry 'Ubuntu' и под ней
linux /boot/vmlinuz-... и initrd /boot/initrd.img-...
Если пусто - остановись, правило перезапуска.
====================================================================
ШАГ 10. ВЫХОД И ПЕРЕЗАГРУЗКА
====================================================================
exit
Ты вернёшься из chroot. Приглашение снова станет как у установщика.
umount /mnt/cdrom /mnt/run /mnt/sys /mnt/proc /mnt/dev
umount /mnt
Что должно быть: молча. Если umount скажет "target is busy" -
подожди пару секунд и повтори.
Финальная проверка:
mount | grep /mnt
Что должно быть: ничего. Если что-то вывелось - не перезагружайся,
напиши мне.
reboot
Что должно быть: сервер начнёт перезагружаться.
ВАЖНО: вытащи флешку сразу после начала перезагрузки
(когда экран погаснет).
====================================================================
ШАГ 11. ПРОВЕРКА ПОСЛЕ ПЕРЕЗАГРУЗКИ
====================================================================
Что должно быть: сервер загружается с дисков. Ты увидишь:
- меню GRUB (может мелькнуть быстро);
- приглашение входа в консоль: ubuntu-server login:
Введи root и пароль из Шага 5.
Проверь IP:
ip addr show
Что должно быть: строка inet с адресом вида 192.168.x.x или 10.x.x.x.
Запомни его.
Проверь RAID:
cat /proc/mdstat
Что должно быть: md0 : active raid1 sda1[0] sdb1[1].
Оба диска [U]. Если [_] или (F) - напиши мне.
С другого компьютера в той же сети:
ssh root@IP-АДРЕС-СЕРВЕРА
Что должно быть: запрос пароля, затем вход.
Если вошёл - установка завершена.
====================================================================
ШАГ 12. ВОЗВРАТ СЕТЕВЫХ РЕПОЗИТОРИЕВ
====================================================================
ВАЖНО: этот шаг делается ТОЛЬКО после того, как сервер успешно
загрузился и SSH работает. Пока ты в chroot - этого делать нельзя.
Подключись к серверу (в консоли или по SSH как root).
Убедись, что ключ Ubuntu на месте:
ls -l /usr/share/keyrings/ubuntu-archive-keyring.gpg
Если файла нет - остановись и сообщи, нужно сначала установить
пакет ubuntu-keyring.
Удали локальный источник (флешку) и старый пустой sources.list:
rm -f /etc/apt/sources.list.d/cdrom.list
rm -f /etc/apt/sources.list
Создай стандартный источник Ubuntu:
cat > /etc/apt/sources.list.d/ubuntu.sources <<'EOF'
Types: deb
URIs: [url]http://ru.archive.ubuntu.com/ubuntu/[/url]
Suites: resolute resolute-updates resolute-security resolute-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
EOF
Проверь, что источник работает:
apt update
Что должно быть: Get:1 [url]http://ru.archive.ubuntu.com/ubuntu[/url] resolute InRelease
и т.д., в конце Reading package lists... Done. Никаких ошибок.
Если увидишь NO_PUBKEY или Missing keyring - остановись, напиши мне.
Теперь можно вынуть флешку (если ещё не вынул).
Опционально - обновить систему до актуального состояния:
apt upgrade
Если apt upgrade спросит про конфиги (Configuration file ...) -
выбирай N (keep your currently-installed version).
После завершения apt upgrade - перезагрузи сервер:
reboot
После перезагрузки проверь:
cat /proc/mdstat
ip addr show
systemctl status ssh
cat /etc/ssh/sshd_config.d/99-root-login.conf
Всё должно быть в порядке:
- md0 : active raid1
- IP-адрес получен
- ssh: active (running)
- PermitRootLogin yes
====================================================================
ЕСЛИ ЧТО-ТО ПОШЛО НЕ ТАК
====================================================================
Любая ошибка, которую я не описал -> правило перезапуска: с Шага 1.
rsync error на втором копировании -> напиши мне вывод, не начинай
сначала. Возможно, нужен другой подход.
Нет IP после netplan apply -> проверь кабель, подожди 15 секунд,
повтори. Если нет - правило перезапуска.
apt update лезет в интернет (на Шаге 8) -> правило перезапуска.
Чёрный экран, GRUB rescue>, no bootable device после перезагрузки:
- проверь, что флешка вынута;
- если проблема остаётся - напиши мне, что на экране.
Загрузилось, но вместо ubuntu-server login: - (initramfs) или BusyBox:
- initramfs не смог собрать RAID;
- напиши мне, что на экране.
Загрузилось, но пароль root не подходит:
- проверь раскладку клавиатуры;
- если точно не подходит - напиши мне.
Загрузилось, но нет IP:
- подожди 30 секунд, проверь ip addr show;
- проверь кабель;
- если IP так и нет - напиши мне.
SSH снаружи не подключается:
- проверь systemctl status ssh (должно быть active (running));
- проверь cat /etc/ssh/sshd_config.d/99-root-login.conf
(должно быть PermitRootLogin yes);
- проверь, что ты подключаешься с компьютера в той же сети;
- напиши мне вывод systemctl status ssh и ss -tlnp | grep 22.