Начать можно с:
виртуальное или совместимое «железное» устройство | x86-64 |
загрузочная прошивка | BIOS/UEFI (без secure boot) |
RAM | 512MB |
HDD | 2GB |
установочный носитель | debian-netinst.iso |
Доступ к сетевому репозиторию операционной системы | https://download.astralinux.ru |
Идея установки заключается в загрузке устройства с внешнего debian-носителя, подготовке локального диска и debootstrap на него минимального набора пакетов из сетевого репозитория ОС.
Недоступность технологического установочного диска говорит об отсутствии договора с правообладателем, поэтому вы осознаете возможные риски, связанные с использованием нелицензионного программного обеспечения. Информация, представленная на этой странице, носит исключительно исследовательский характер и не является инструкцией по установке операционной системы.
Добыть отсюда https://cdimage.debian.org/cdimage/release/current/amd64/iso-cd/ netboot-образ, загрузиться с него и перейти в Режим восстановления (Rescue mode)
В режиме восстановления:
Узнать имя необходимого сетевого адаптера и настроить его, например:
ip a ip a add 192.168.0.2/24 dev enp1s0 ip r add default via 192.168.0.1 echo "nameserver 192.168.0.1" > /etc/resolv.conf ping dl.astralinux.ru
DHCP-клиент может отсутствовать в режиме восстановления.
Опционально, для возможности удаленного доступа к устройству (в том числе для «copy+paste» установки) запустить netcat-telnet, например:
udpkg -i /cdrom/pool/main/c/coreutils/coreutils* mkfifo /f cat /f | /bin/sh -i 2>&1 | nc -l -p 23 192.168.0.2 > /f
Для подключения с удаленного устройства:
nc 192.168.0.2 23
Примеры разметки диска целиком:
fdisk -l
Device Boot Start End Sectors Size Id Type /dev/vda1 * 2048 4194303 4192256 2G 83 Linux
Device Start End Sectors Size Type /dev/vda1 2048 83967 81920 40M EFI System /dev/vda2 83968 4194270 4110303 2G Linux filesystem
Узнать тип загрузчика UEFI/BIOS можно по наличию/отсутствию каталога /sys/firmware/efi
.
Подготовить и смонтировать в /media
корень будущей системы (с возможным вложенным монтированием)
ESP-раздел сейчас не нужен, он будет создан позже, поэтому в простом случае для UEFI-системы:
mkfs.ext4 -F -m 0 /dev/vda2 mount /dev/vda2 /media
Опционально, в случае экстремальной нехватки оперативной памяти, создать файл подкачки, например:
dd if=/dev/zero of=/media/swap bs=1M count=256 chmod 0600 /media/swap mkswap /media/swap swapon /media/swap free
Указать размещение main-репозитория системы, например:
A=https://download.astralinux.ru/astra/stable/1.8_x86-64/main-repository
Заменить текущий debootstrap версией из репозитория:
wget $A/dists/1.8_x86-64/main/binary-amd64/Packages.gz P=$(zcat Packages.gz | grep "debootstrap.deb" | cut -d ' ' -f 2) wget $A/$P udpkg -i debootstrap* udpkg -i /cdrom/pool/main/a/attr/libattr1-udeb* debootstrap --version
И, наконец, установить минимальную базовую систему:
debootstrap --no-check-gpg --variant=minbase 1.8_x86-64 /media $A
Минимальная базовая система не содержит ядра (kernel) и загрузчика (grub). Их следует доустановить, переключившись (chroot) в только что собранную ОС.
Почистить и смонтировать виртуальные каталоги:
umount /media/sys/firmware/efi/efivars /media/boot/efi /media/sys /media/run /media/proc /media/dev for m in dev proc run sys tmp; do rm -rfv /media/$m/*; done for m in dev proc run sys; do mount -o bind /$m /media/$m; done
Переключиться в минимальную базовую систему (chroot):
HOME=/root SHELL=/bin/bash chroot /media cd; pwd
В зависимости от типа выбрать пакеты загрузчика:
GRUB="grub-efi efibootmgr dosfstools" # UEFI GRUB="grub-pc" # BIOS
Установить ядро, загрузчик и самое необходимое:
apt-get -y clean apt-get -y update apt-get -y --no-install-recommends --no-install-suggests install busybox dbus linux-6.1-generic lsb-release parsec ssh zstd $GRUB
Дополнительные драйверы/прошивки установить при необходимости (для виртуальной машины может не потребоваться вообще):
apt-get -y clean apt-get -y update apt-get -y --no-install-recommends --no-install-suggests install linux-firmware
Изменить [удалить] пароль root:
passwd [-d] root
Опционально, разрешить:
echo "PermitRootLogin yes" > /etc/ssh/sshd_config.d/99-SetupPermitRootLogin.conf
Используя systemd-networkd настроить будущую сеть, например:
cat > /etc/systemd/network/enp1s0.network << EOF [Match] Name=enp1s0 [Network] Address=192.168.0.2/24 Gateway=192.168.0.1 #DHCP=ipv4 EOF systemctl enable systemd-networkd
Создать /etc/fstab
с параметрами монтирования корневого раздела, например:
eval $(blkid -o export $(grep -w '/' /proc/mounts | awk '{print $1}')) echo "UUID=$UUID / $TYPE discard 0 1" > /etc/fstab
Для UEFI создать ESP-раздел, например:
ESP=/dev/vda1 mkfs.fat -F 32 $ESP eval $(blkid -o export $ESP) echo "UUID=$UUID /boot/efi $TYPE umask=0077 0 2" >> /etc/fstab mkdir -pv /boot/efi mount -av
Для UEFI смонтировать виртуальную файловую систему:
mount -t efivarfs none /sys/firmware/efi/efivars
Для UEFI (опционально) навести порядок в загрузочном меню, удалив «лишнее»:
efibootmgr efibootmgr -B -b 0 . . . efibootmgr
Наконец, установить загрузчик, например:
update-grub grub-install --removable # для UEFI grub-install /dev/vda # для UEFI и BIOS
И перезагрузить устройство:
exit sync swapoff -a umount /media/sys/firmware/efi/efivars /media/boot/efi /media/sys /media/run /media/proc /media/dev /media reboot
Если были произведены соответствующие настройки (см. выше), то после перезагрузки устройство будет доступно по сети (ssh) пользователю root.
Первоначальная настройка системы (практически все - опционально):
Создать файл подкачки, например размером 4GB:
dd if=/dev/zero of=/swap bs=1M count=4096 chmod -v 0600 /swap mkswap -f /swap swapon /swap echo "/swap swap swap defaults 0 0" >> /etc/fstab
Создать магическую группу astra-admin с GID=1001 и правом sudo:
groupadd --gid 1001 astra-admin echo "%astra-admin ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/astra-admin chmod 0440 /etc/sudoers.d/astra-admin
Отключить IPv6 на интерфейсе, например:
echo "LinkLocalAddressing=no" >> /etc/systemd/network/enp1s0.network echo "IPv6AcceptRA=no" >> /etc/systemd/network/enp1s0.network
Настроить DNS-клиент, например:
echo "nameserver 192.168.0.1" > /etc/resolv.conf
Отключить установку рекомендуемых и предлагаемых пакетов:
apt-config dump | grep ::Install- | tr 1 0 > /etc/apt/apt.conf.d/99RecommendsSuggests apt-config dump | grep ::Install-
Скорректировать /etc/apt/sources.list
, например:
cat > /etc/apt/sources.list << EOF deb https://download.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware deb https://download.astralinux.ru/astra/stable/1.8_x86-64/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware EOF apt clean apt update
Установить обязательные и # прочие пакеты:
apt install astra-safepolicy locales netbase # fdisk less mc iproute2 iputils-ping qemu-guest-agent
В минимальной сборке - английский язык и не используется русификация консоли:
sed -i 's/.*en_US.UTF-8.*/en_US.UTF-8 UTF-8/gI' /etc/locale.gen locale-gen localectl set-locale en_US.UTF-8 localectl set-x11-keymap "us,ru" "pc105" "." "grp:alt_shift_toggle" echo "KEYMAP=us" > /etc/vconsole.conf localectl
Перелогиниться для применения всех настроек.
Отключить некоторые службы и добиться, например:
systemctl list-unit-files --state=enabled auditd.service enabled enabled getty@.service enabled enabled parsec.service enabled enabled ssh.service enabled enabled swap-wiper.service enabled enabled systemd-network-generator.service enabled enabled systemd-networkd-wait-online.service enabled disabled systemd-networkd.service enabled enabled systemd-networkd.socket enabled enabled astra-safepolicy.target enabled enabled 10 unit files listed.
systemctl list-unit-files --state=enabled --global 0 unit files listed.
Конкретизировать загрузочный таргет:
systemctl set-default multi-user.target
Настроить grub:
sed -i 's/.*GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/g' /etc/default/grub sed -i 's/.*GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT="mitigations=off quiet"/g' /etc/default/grub update-grub
Настроить синхронизацию времени, например с помощью systemd:
apt install systemd-timesyncd sed -i 's/#NTP=.*/NTP=ru.pool.ntp.org/g' /etc/systemd/timesyncd.conf timedatectl set-timezone Europe/Moscow timedatectl
Указать имя хоста:
hostnamectl set-hostname localhost
Создать локального администратора и заблокировать root:
adduser --add-extra-groups administrator adduser administrator astra-admin rm -fv /etc/ssh/sshd_config.d/99-SetupPermitRootLogin.conf usermod --password '*' root
Обязательно установить (минимальный) уровень безопасности и перезагрузить устройство:
astra-modeswitch set 0 reboot
$ cat /etc/astra/build_version 1.8.1.16 $ /sbin/astra-modeswitch getname base(orel) $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS vda 252:0 0 2G 0 disk └─vda1 252:1 0 2G 0 part / $ df -h / Filesystem Size Used Avail Use% Mounted on /dev/vda1 2.0G 1017M 945M 52% / $ free -m total used free shared buff/cache available Mem: 457 76 306 0 85 380 Swap: 0 0 0 $ sudo journalctl -b -p err -- No entries -- $ sudo systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION 0 loaded units listed.
Подготовка диска к клонированию:
sed -i "s/^Address=/#Address=/g" /etc/systemd/network/* rm -rfv /etc/ssh/ssh_host_* /var/lib/dbus/machine-id /var/log/journal truncate -s 0 /etc/machine-id history -c; rm -fv /root/.bash_history; poweroff