вместо приветствия..
Давно знаю ваш форум. Решил вместо вопросов и просьб делиться информацией. Надеюсь это кому нибудь пригодится. И вероятно продолжу публикации.
статья несколько сырая. но вполне рабочий вариант.
предполагается, что пользователь линуксом владеет на уровне - «arch инвалид» «arch пользователь».
на момент публикации. версия - 06.08.2025
ps
если чего-то не хватает или есть ошибки - дайте знать. дополню/улучшу.
Экспертная установка openSUSE Tumbleweed 🦎
Ниже — пошаговая инструкция по установке openSUSE Tumbleweed «с нуля» без YaST, с учётом UEFI-загрузки и GPT-разметки.
Скачивание и подготовка Live-образа
Сначала скачайте последнюю Live-ISO openSUSE Tumbleweed и запишите её на флешку. Нам нужен именно любой openSUSE live ISO, так как нам потребуется zypper
.
# любым способом скачайте openSUSE live-ISO...
sudo dd if=./openSUSE-Tumbleweed*.iso of=/dev/sdX bs=4M status=progress oflag=sync
Разметка диска (GPT + UEFI/BIOS)
Загрузившись выполним разметку диска.
Здесь и далее предполагается, что целевой диск — /dev/sda
.
ps
если вы хотите зашифрованный системный LUKS диск. пожалуйста спуститесь чуть ниже и выполните то, что там предлагается.
parted /dev/sda
# UEFI -------------------------------
(parted) mklabel gpt
# (По желанию) отдельный /boot:
parted /dev/sda mkpart ESP fat32 1MiB 301MiB
parted /dev/sda set 1 boot on
parted /dev/sda set 1 esp on
parted /dev/sda mkpart primary ext4 320MiB 100%
# BIOS -------------------------------
parted /dev/sda mklabel gpt
# Зарезервируйте область для GRUB:
parted /dev/sda mkpart primary 1MiB 2MiB
parted /dev/sda set 1 bios_grub on
# (По желанию) отдельный /boot:
parted /dev/sda mkpart primary ext4 2MiB 320MiB
# и в таком случае boot у вас именно /dev/sda2
parted /dev/sda set 2 boot on
parted /dev/sda mkpart primary ext4 320MiB 100%
немного про flag Boot on
Флаг boot on
в parted делает следующее:
• На MBR-дисках он включает так называемый “bootable” (или “active”) бит в таблице разделов. BIOS при старте проверяет, что на разделе установлен этот бит, и пытается с него загрузиться.
• На GPT-дисках в разных версиях parted этот флаг может переводиться либо в BIOS-совместимый “bios_grub”-флаг (для загрузки через GRUB-bios), либо просто дублировать “legacy boot”-атрибут, но никак не заменяет “esp”-флаг под EFI.
Если вам нужна именно загрузка по UEFI, то основное — это тип раздела EFI System Partition (GUID EF00) и флаг esp
(или “boot” в сочетании со “esp”, в parted он часто только дублирует атрибут “ESP”).
Делаем swap-файл
# новомодная утилита для создания файл-дисков (loop devices)
fallocate -l 2G /swapfile
# или
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# ---> на этапе fstab добавьте это
# --->
# /swapfile none swap defaults 0 0
Форматируем разделы
mkfs.vfat -F32 -n EFI /dev/sda1
mkfs.ext4 -L boot /dev/sda2 # если gpt+bios
mkfs.ext4 -L root /dev/sdX3
Монтируем
mkdir -p /mnt/os
mount /dev/sdX3 /mnt/os
mkdir -p /mnt/os/boot/efi
mount /dev/sdX1 /mnt/os/boot/efi
LUKS зашифрованный диск
# чтож нам нужен cryptSetup внутри live среды...
zypper in cryptsetup
# Инициализируйте LUKS-контейнер на разделе
cryptsetup luksFormat /dev/sda3
# Откройте (раскройте) контейнер и привяжите его к виртуальному устройству
cryptsetup open /dev/sda3 cryptroot
mkfs.ext4 /dev/mapper/cryptroot
# --> во время установки вы должны установить cryptsetup внутрь новой системы
# --> то, что сказано ниже в этом разделе выполните после этапов установки opensuse, но еще до перезагрузки в новую систему
# Добавьте запись в /etc/crypttab для автоматического открытия при загрузке.
cryptroot /dev/sda3 none luks
# - **cryptroot** — имя маппера,
# - **/dev/sda3** — устройство,
# - **none** — ключ из stdin (пароль),
# - **luks** — тип.
# Обновите fstab, чтобы монтировать корневой раздел из /dev/mapper/cryptroot. Например:
/dev/mapper/cryptroot / ext4 defaults 0 1
# поправьте grub `/etc/default/grub`)
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:cryptroot root=/dev/mapper/cryptroot rw"
# обнови grub2
grub-mkconfig -o /boot/grub/grub.cfg
# По умолчанию dracut автоматически подхватит модуль шифрования. Если вы хотите явно задать параметры, создайте файл /etc/dracut.conf.d/crypt.conf
install_items+="/etc/crypttab"
add_dracutmodules+=" crypt"
# Или можно указать команду для открытия:
dracutmodules+="crypt"
kernel_cmdline="cryptdevice=/dev/sda3:cryptroot"
Установка базовой системы
# Добавляем репозиторий и импортируем ключи:
zypper --root /mnt/os ar --refresh \
https://download.opensuse.org/tumbleweed/repo/oss/ oss
zypper --root /mnt/os --gpg-auto-import-keys ref
# минимальная установка
zypper --root /mnt/os in --no-recommends \
kernel-default \
grub2 \
zypper bash shadow util-linux \
vim man \
NetworkManager \
wpa_supplicant kernel-firmware-atheros wireless-tools iw \
ca-certificates-mozilla openssl gnutls-utils \
iproute2 curl wget nano procps \
systemd-resolved \
kernel-firmware-sound \
dracut \
sudo \
nftables \
#cryptsetup
# Подключаем системные pseudo-FS для chroot
for d in proc sys dev run; do
mount --bind /$d /mnt/os/$d
done
Chroot
cp /etc/resolv.conf etc/
chroot /mnt/os /bin/bash
export PS1="(chroot) $PS1"
passwd # про пароль не забываем
firmware
прежде мы сразу установим некоторые firmware так как вероятно вы не сможете выйти в интернет особенно если у вас wifi карта.
расшифровка | |
---|---|
kernel-firmware-i915 | Микрокод и прошивки для встроенных видеоядeр Intel (семейства i915): UHD, Iris, HD Graphics. |
kernel-firmware-amdgpu | Прошивки для новых видеокарт AMD на основе драйвера amdgpu (RX 400/500, Vega, Navi и т.д.). |
kernel-firmware-radeon | Прошивки для старых и некоторых промежуточных видеокарт AMD/ATI, использующих драйвер radeon . |
kernel-firmware-sound | Прошивки для звуковых чипов разных производителей (Realtek, Conexant, Intel SST, Cirrus Logic и др.). |
kernel-firmware-atheros | Базовые прошивки для старых Wi-Fi-адаптеров Atheros. |
kernel-firmware-ath10k | Прошивки для беспроводных чипов Atheros ath10k (Qualcomm QCA988x, QCA6174 и др.). |
kernel-firmware-ath11k | Прошивки для новых беспроводных чипов Atheros/Qualcomm семейства ath11k . |
kernel-firmware-ath12k | Прошивки для самых свежих беспроводных SoC Qualcomm семейства ath12k . |
kernel-firmware-brcm | Прошивки для некоторых беспроводных устройств Broadcom (не входит в ваш список, но часто встречается). |
kernel-firmware-intel | Прошивки Intel для встроенного Wi-Fi/Bluetooth (семейства Intel Wireless, Bluetooth LE и т.д.). |
Мета-пакет firmware
- объединяет большинство отдельных
kernel-firmware-*
пакетов. - Обеспечивает максимальную совместимость с устройствами «из коробки», но требует несколько сотен мегабайт дискового пространства.
lspci | grep -i network # узнать модельку сетевой карты
lspci # узнать остальные железки
zypper in --no-recommends kernel-firmware-i915
..
kernel-firmware-sound
kernel-firmware-atheros
kernel-firmware-ath10k, kernel-firmware-ath11k, kernel-firmware-ath12k
kernel-firmware-amdgpu
kernel-firmware-radeon
# есть мета пакет firmware - может установить его, но скушает места на диске оно знатно.
Настраиваем fstab
UEFI
# Раздел под корень
LABEL=root / ext4 noatime,discard 0 1
# Swap-файл или раздел
/swapfile none swap sw 0 0
# EFI System Partition
LABEL=EFI /boot/efi vfat umask=0077,shortname=winnt 0 2
# [?]
# LABEL=… — метка, заданная через parted name X <метка>.
# Параметр discard позволяет SSD работать эффективнее, но может замедлить
# некоторые файловые операции.
GPT+BIOS
# Отдельный /boot (если он есть)
LABEL=boot /boot ext4 defaults,noatime 0 2
# Корневой раздел
LABEL=root / ext4 noatime 0 1
# SWAP
/swapfile none swap sw 0 0
есть привычнее UUID
# Узнайте UUID раздела:
blkid /dev/sda1
# далее в fstab вместо LABEL, подставляет примерно так:
UUID=1122-3344-5566-7788-99AABBCCDDEEFF / ext4 defaults,noatime 0
BoolLoader
efi-gpt
dracut -f
# Эта команда создаст новый образ initramfs для текущего ядра и перезапишет существующий, если он есть.
mkdir /boot/EFI
mount /dev/sda1 /boot/EFI #Mount FAT32 EFI partition
sudo zypper install --no-recommends grub2-x86_64-efi shim efibootmgr dosfstools mtools os-prober ntfs-3g
# -----------
grub2-x86_64-efi – GRUB для UEFI-систем на 64-битных платформах.
shim – промежуточный загрузчик для поддержки Secure Boot.
efibootmgr – инструмент для управления записями в UEFI Boot Manager.
dosfstools и mtools – для работы с FAT-разметкой (EFI).
os-prober – автоматическое обнаружение других ОС при генерации конфига GRUB.
ntfs-3g – драйвер для чтения/записи NTFS.
# ----------
grub2-install \
--target=x86_64-efi \
--efi-directory=/boot/efi \
--bootloader-id=opensuse \
--recheck
grub2-mkconfig -o /boot/grub2/grub.cfg
# - `--target=x86_64-efi` — архитектура платформы (64-бит UEFI).
# - `--efi-directory=/boot/efi` — точка монтирования ESP.
# - `--bootloader-id=opensuse` — название, под которым запись появится в меню UEFI.
# - `--recheck` — повторное сканирование устройств, даже если уже установлено.
bios-gpt
dracut -f
# Эта команда создаст новый образ initramfs для текущего ядра и перезапишет существующий, если он есть.
grub2-install /dev/vda
grub2-mkconfig -o /boot/grub2/grub.cfg
прежде чем…
пожалуйста спустить ниже до раздела Firmware
и установите необходимые firmware для вашей сетевой карты так как могут возникнуть проблемы с выходом в интернет.
remount
passwd # если забыли пароль установить..
exit
for d in dev sys proc run; do
umount -l /mnt/os/$d
done
umount /mnt/os/boot/efi
umount /mnt/os
reboot
post-Install
network
# запускаем заветный NetworkManager
systemctl enable NetworkManager
systemctl enable wpa_supplicant
systemctl status NetworkManager
будет рассмотрена настройка сети для Ethernet так и для WiFi.
turn on
# включаем карточку
nmcli device connect eth0 # для Ethernet достаточно
nmcli device radio wifi on # для WIFI нужно сначать активировать wifi
в случае с Ethernet по DHCP автоматически подтянется ip адрес, соотвествующая маска, шлюз по умолчанию. Если это не так, то вероятно вам следует долистать чуть ниже части про WiFi и вручную задать настройки.
Diagnostics
nmcli connection show # все сохранённые connections
nmcli connection show --active # активные connections
nmcli device show eth0 # подробный статус интерфейса
ip addr show eth0 # ip адресс
ip route # табличка маршрутизации
если у Вас wifi то придётся в начале подключиться к соотвествующей сети. в случае NetworkManager backend-ом выступает wpa_supplicant (хотя есть аналог - iwd).
WIFi
systemctl status NetworkManager
iw dev # ищем свою карточку
# делаем scan сетей
nmcli device wifi rescan ifname wlp8s0
nmcli device wifi list
# -------------------------------------
# подключаемся
# -------------------------------------
# проще всего так
nmcli device wifi connect "SSID" password "password" ifname wlan0
# если точка доступа hidden
sudo nmcli device wifi connect "SSID" password "password" ifname wlan0 hidden yes
# прописывание ручками wifi подключение
nmcli connection add type wifi con-name "mywifi" ifname wlan0 ssid "SSID"
# -- if hidden SSID
nmcli connection add type wifi ifname wlan0 con-name mywifi ssid SSID wifi.hidden yes
nmcli connection modify "mywifi" wifi-sec.key-mgmt wpa-psk
nmcli connection modify "mywifi" wifi-sec.psk "password"
manual IP
nmcli connection modify mywifi ipv4.method manual ipv4.addresses "192.168.1.50/24" ipv4.gateway "192.168.1.1" ipv4.dns ""
nmcli connection modify mywifi ipv6.method disable
nmcli connection modify mywifi autoconnection no
nmcli connection up "mywifi"
nmcli connection show --active
DNS
рекомендуется настроить stub resolver systemd-resolved
, который легко настроить и уже поддерживает DoH (DNS over HTTPS).
# конечно стоит убрать старые параметры (только если у вас resolver не на роутере висит или если вручную указали обычный DNS сервер к примеру 1.1.1.1 / 8.8.8.8)
rm /etc/resolv.conf
# собственно настройка
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
nano -w /etc/systemd/resolved.conf
[Resolve]
DNS=1.1.1.1#cloudflare-dns.com
# перезапускаем и проверяем
systemctl restart systemd-resolved
systemctl status systemd-resolved
resolveconf
curl gnu.org # пропубуем..
добавляем пользователя
# добавляем пользователя
useradd -m -G users,audio,video youruser
visudo # добавь пользователя в sudo
passwd youruser
минимизация зависимостей
# Минимизируйте зависимости при установки zypper-ом
sed -i 's/^solver.onlyRequires.*/solver.onlyRequires = true/' \
/etc/zypp/zypp.conf
репозитории
# 1. Удалим старые репозитории (чтобы не дублировать):
zypper rr $(zypper lr | awk '/^ [0-9]+/ {print $1}')
# 2. Добавим официальные репозитории openSUSE Tumbleweed:
zypper ar -f https://download.opensuse.org/tumbleweed/repo/oss/ repo-oss
zypper ar -f https://download.opensuse.org/tumbleweed/repo/non-oss/ repo-non-oss
zypper ar -f https://download.opensuse.org/update/tumbleweed/oss/ repo-update-oss
zypper ar -f https://download.opensuse.org/update/tumbleweed/non-oss/ repo-update-non-oss
# 3. Добавим Packman (медиа, проприетарные firmware, кодеки):
zypper ar -f https://ftp.gwdg.de/pub/linux/packman/suse/openSUSE_Tumbleweed/ packman
# 4. (Опционально) Добавим ещё пару популярных репозиториев:
# – KDE: # для последних KDE-пакетов
zypper ar -f https://download.opensuse.org/repositories/KDE:/Frameworks5/openSUSE_Tumbleweed/ kde-frameworks
# – Graphics: # для графических библиотек
zypper ar -f https://download.opensuse.org/repositories/Graphics/openSUSE_Tumbleweed/ graphics
# 5. Обновим метаданные и систему:
zypper refresh
zypper dup --from repo-update-oss --from repo-update-non-oss
# Теперь можно ставить пакеты из Packman и других репозиториев.
Xorg + i3wm
вместо wm можете установить вначале xinit, xterm и укажите в .xinitrc лишь xterm, чтобы убедиться что xorg у вас заработал.
# Добавляем необходимые репозитории (если ещё не сделано)
# — OSS и Packman уже должны быть подключены.
# Устанавливаем X-сервер, видео- и ввод-драйверы, утилиты и шрифты:
zypper in \
xorg-x11-server \
xorg-x11-driver-video \
xorg-x11-driver-input \
xinit \
xterm \
xorg-x11-fonts \
xorg-x11-utils \
ttf-dejavu \
noto-fonts
# Устанавливаем сам i3 и пару сопутствующих пакетов:
zypper in i3 i3status dmenu
# Апплеты и обои:
zypper in feh # для установки обоев
zypper in lxappearance # для управления темами GTK/QT
# Настраиваем ~/.xinitrc
#!/bin/bash
feh --bg-scale ~/Pictures/wallpaper.jpg &
exec i3
startx
# (Опционально) Авто-логин и лайтдм
# Если хочется графический экран входа, можно поставить
# zypper in lightdm lightdm-gtk
# и включить:
# systemctl enable lightdm
#
# Тогда вместо startx вы получите привычный GUI-логин.
Wayland + Sway
OSS и Packman должны быть подключены заранее.
Устанавливаем Wayland-сервер, compositor и утилиты
zypper in \
wayland \
sway \
wlroots \
swayidle \
swaylock \
foot \ # терминал для Wayland
wlogout \ # утилита выхода/перезагрузки
grim \ # скриншоты
slurp \ # выбор области для скриншота
mako \ # уведомления
xdg-desktop-portal-wlr \
xdg-utils \
wl-clipboard # буфер обмена между Wayland и X11
Шрифты и фоны
zypper in \
ttf-dejavu \
noto-fonts \
feh # для установки обоев (можно оставить, даже под Wayland)
Настройка конфигурации sway
mkdir -p ~/.config/sway cp /etc/sway/config ~/.config/sway/config
Запуск среды
sway
Через графический дисплейный менеджер
zypper in gdm systemctl enable gdm
pipewire
# 1. Устанавливаем PipeWire и сопутствующие пакеты
zypper in \
pipewire \
pipewire-alsa \
pipewire-pulseaudio \
wireplumber \
# не забудьте перезагрузиться. так как сразу звук не появится.
# 2. Включаем PipeWire и WirePlumber
systemctl --user enable --now pipewire.socket pipewire.service
systemctl --user enable --now wireplumber.service
# 3. Проверяем, что PipeWire работает вместо PulseAudio
pactl info | grep "Server Name"
# Должно быть что-то вроде: Server Name: PulseAudio (on PipeWire x.y.z)
Selinux
По умолчанию в openSUSE (в том числе в Tumbleweed) защищающая подсистема — это AppArmor, и она установлена и активирована «из коробки». При «экспертной» инсталляции через zypper in
AppArmor тоже подтягивается автоматически как зависимость ядра и утилит безопасности:
• Пакет apparmor
(включая систему профилей)
• Модули ядра kernel-default
компилируются с поддержкой AppArmor
• Автоматически создаётся сервис apparmor.service
Если вы хотите вместо AppArmor использовать SELinux, придётся вручную установить и настроить SELinux-пакеты, отключив AppArmor. Примерный список шагов:
# 1. Отключить AppArmor (до chroot или в chroot-среде):
systemctl disable --now apparmor.service
# Удаляем или маскируем модуль ядра AppArmor
echo "install apparmor /bin/true" > /etc/modprobe.d/apparmor.conf
# 2. Установка пакетов SELinux
zypper refresh
zypper in \
selinux-policy-default \
selinux-tools \
libselinux1 \
libsemanage1 \
libselinux-utils \
setroubleshoot-server
# -> selinux-policy-default – базовая политика
# -> selinux-tools – утилиты управления (getenforce, setenforce)
# -> setroubleshoot-server – анализ и отчёты о нарушениях
# nano etc/selinux/config:
SELINUX=enforcing
SELINUXTYPE=default
# Инициализируйте контексты файлов:
fixfiles onboot
# Это создаст системный скрипт, который при первом перезапуске автоматически выполнит restorecon -R /.
# Обновление параметров загрузчика
# Добавьте в параметр ядра selinux=1 security=selinux и отключите AppArmor через grub.
# Откройте /etc/default/grub и найдите строку
GRUB_CMDLINE_LINUX_DEFAULT="…"
# Измените её на:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash selinux=1 security=selinux apparmor=0"
# Перегенерируйте конфигурацию GRUB и обновите загрузчик:
grub2-mkconfig -o /boot/grub2/grub.cfg
# ну и...
reboot
getenforce
Firewall!
минильная конфигурация с использованием чистого nftables. Firewalld это замечательно, но вероятно в нашей минимальной установке это будет несколько лишним тянуть server-like firewall.
# /etc/nftables/rules/main.nft
table inet filter {
chain input {
type filter hook input priority 0;
policy drop;
# Разрешить loopback
iif "lo" accept
# Разрешить уже установленное соединение
ct state established,related accept
# Разрешить ssh с подсети 192.168.1.0/24
ip saddr 192.168.1.0/24 tcp dport ssh accept
}
}
После сохранения:
systemctl reload nftables
systemctl status nftables
# применить
nft -f file.nft
шпаргалки
Zypper
небольшая шпаргалка как пользоваться zypper
zypper refresh
zypper lr # список репозиториев
zypper update
zypper search <ключевое_слово>
zypper info <имя_пакета>
zypper verify # поиск зависимостей
zypper dup # обновление системы
zypper list-updates # доступные обновления
zypper se --installed-only # то что установлено
zypper ps # информация о системе
zypper clean # очистка кеша