суббота, 21 марта 2026 г.

Как сделать свой "живой" образ DVD live boot в Дебиан ?

 В Debian (и в Ubuntu) есть замечательный пакет Remaster-iso, состоящий из 3 программ: 

  1.  remaster-extract
  2.  remaster-squash-editor
  3.  remaster-compose

Первая разворачивает в директории (необходимо предварительно создать директорию iso-extract) root директорию из iso образа 

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

mount --bind /dev ~/iso-extract/dev
mount --bind /run ~/iso-extract/run
mount --bind /proc ~/iso-extract/proc
mount --bind /dev ~/iso-extract/dev 
mount --bind /sys ~/iso-extract/sys
chroot ~/iso-extract/ /bin/bash 

После чего, в гостевой системе можно доустанавливать нужные компоненты либо через команду apt (стандартные приложения) либо редактировать какие-либо файлы в гостевой root-директории: я, например, устанавливаю свой принтер через установку драйверов, и редактируя гостевой файл /lib/udev/rules.d/60-libsane1.rules, плюс для просмотра тв с тюнера T230, в /lib/firmware ставлю два файла: dvb-demod-si2168-b40-01.fw  и dvb-tuner-si2158-a20-01.fw. 
Те файлы, которые должны будут находиться на получившемся live в пользовательской директории, в проекте  (гостевом chroot) должны находиться в /etc/skel - иначе, при загрузке с live будут проблемы с конфликтом прав доступа директорий /home/user - который создаётся при загрузке и той директорией (и которую НЕ НУЖНО СОЗДАВАТЬ) для того, чтобы разместить пользовательские файлы. Для того, чтобы воспроизвести на гостевой системе, ту систему, которая на жёстком диске, я запрашиваю список установленных пакетов основной системы:

dpkg-query -W -f='${Package}\n'

Далее получившийся список, редактирую оставляя только необходимые пакеты, и стирая все зависимости (они всё равно будут установлены в процессе), и у меня получился такой список,  позволяющий получить образ, размером примерно соответствующий размеру DVD болванки:

 7zip
abiword
abiword-common
abiword-plugin-grammar
alsa-utils
audacious
audacious-plugins
audacious-plugins-data
claws-mail
claws-mail-i18n
copyq
copyq-plugins
cups
cups-browsed
cups-client
cups-common
cups-core-drivers
cups-daemon
cups-filters
cups-filters-core-drivers
cups-ipp-utils
cups-ppdc
cups-server-common
curl
dvb-tools
dvd+rw-tools
fbreader
fceux
fdisk
featherpad
featherpad-l10n
feh
ffmpeg
ffmpegthumbnailer
ffmpegthumbs
file
firefox-esr
firefox-esr-l10n-ru
five-or-more
fontconfig
fontconfig-config
fonts-cantarell
fonts-dejavu
fonts-dejavu-core
fonts-dejavu-extra
fonts-dejavu-mono
fonts-droid-fallback
fonts-elusive-icons
fonts-font-awesome
fonts-freefont-ttf
fonts-hack
fonts-lato
fonts-liberation
fonts-liberation-sans-narrow
fonts-mathjax
fonts-noto
fonts-noto-cjk
fonts-noto-cjk-extra
fonts-noto-color-emoji
fonts-noto-core
fonts-noto-extra
fonts-noto-mono
fonts-noto-ui-core
fonts-noto-ui-extra
fonts-noto-unhinted
fonts-opensymbol
fonts-quicksand
fonts-symbola
fonts-urw-base35
fonts-wine
four-in-a-row
fuse-emulator-common
fuse-emulator-sdl
fuse-emulator-utils
fuse3
gaupol
gawk
gcal
gcal-common
gdebi
gdebi-core
gdisk
git
git-man
gnumeric
gnumeric-common
gnumeric-doc
gnupg
gnupg-l10n
gnupg-utils
growisofs
grub-common
grub-efi-amd64
grub-efi-amd64-bin
grub-efi-amd64-signed
grub-efi-amd64-unsigned
grub2-common
gsettings-desktop-schemas
gstreamer1.0-alsa
gstreamer1.0-clutter-3.0
gstreamer1.0-gl
gstreamer1.0-gtk3
gstreamer1.0-gtk4
gstreamer1.0-libav
gstreamer1.0-libcamera
gstreamer1.0-nice
gstreamer1.0-packagekit
gstreamer1.0-pipewire
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-base
gstreamer1.0-plugins-base
gstreamer1.0-plugins-good
gstreamer1.0-plugins-good
gstreamer1.0-plugins-ugly
gstreamer1.0-x
gstreamer1.0-x
gtk2-engines
gtk2-engines-murrine
gtk2-engines-pixbuf
guvcview
gvfs
gvfs-backends
gvfs-common
gvfs-daemons
gvfs-fuse
gvfs-libs
gwenview
gwenview-doc
gzip
hdparm
httrack
i3
i3-wm
i3blocks
i3lock
i3status
im-config
imagemagick
imagemagick-7-common
imagemagick-7.q16
mc
mc-data
mousepad
mplayer
mpv
pavucontrol
pci.ids
pciutils
pcmanfm
pipewire
pipewire-alsa
pipewire-audio
pipewire-bin
pipewire-pulse
print-manager
qbittorrent
qemu-block-extra
qemu-system-common
qemu-system-data
qemu-system-gui
qemu-system-modules-opengl
qemu-system-modules-spice
qemu-system-x86
qemu-utils
qmmp
qpdf
qpdfview
qpdfview-djvu-plugin
qpdfview-pdf-poppler-plugin
qpdfview-ps-plugin
qpdfview-translations
rtorrent
udev
udisks2
unar
vlc
vlc-bin
vlc-data
vlc-l10n
vlc-plugin-access-extra
vlc-plugin-base
vlc-plugin-bittorrent
vlc-plugin-fluidsynth
vlc-plugin-jack
vlc-plugin-notify
vlc-plugin-pipewire
vlc-plugin-qt
vlc-plugin-samba
vlc-plugin-skins2
vlc-plugin-svg
vlc-plugin-video-output
vlc-plugin-video-splitter
vlc-plugin-visualization
vobcopy
vorbis-tools
x11-apps
x11-common
x11-session-utils
x11-utils
x11-xkb-utils
x11-xserver-utils
x11proto-dev
x11vnc
x264
xapp-sn-watcher
xapps-common
xarchiver
xauth
xbitmaps
xbrlapi
xcvt
xdg-dbus-proxy
xdg-desktop-portal
xdg-desktop-portal-gtk
xdg-desktop-portal-kde
xdg-desktop-portal-lxqt
xdg-desktop-portal-xapp
xdg-user-dirs
xdg-user-dirs-gtk
xdg-utils
xfburn
xfconf
xfdesktop4
xfdesktop4-data
xfonts-100dpi
xfonts-75dpi
xfonts-base
xfonts-encodings
xfonts-scalable
xfonts-utils
xfwm4
xfwm4-theme-breeze
xiccd
xinit
xkb-data
xkbset
xml-core
xorg-docs-core
xorg-sgml-doctools
xorriso
xsane
xsane-common
xscreensaver
xscreensaver-data
xscreensaver-gl
xserver-common
xserver-xephyr
xserver-xorg
xserver-xorg-core
xserver-xorg-input-all
xserver-xorg-input-libinput
xserver-xorg-input-wacom
xserver-xorg-legacy
xserver-xorg-video-all
xserver-xorg-video-amdgpu
xserver-xorg-video-ati
xserver-xorg-video-fbdev
xserver-xorg-video-intel
xserver-xorg-video-nouveau
xserver-xorg-video-qxl
xserver-xorg-video-radeon
xserver-xorg-video-vesa
xserver-xorg-video-vmware
xsettingsd
zbar-tools
zim
zim-tools
zip
zlib1g
zlib1g
zlib1g-dev
zstd
blueman
network-manager-applet
nodm
xdg-user-dirs
xdg-user-dirs-gtk 
system-config-printer
system-config-printer-common
system-config-printer-udev
wine32 (dpkg --add-architecture i386)
wine64

Получается образ с предустановленным тайловым менеджером i3, правда без какого-либо меню, но можно вызвать консоль приложений кнопкой Win+D, либо PCMANFM (с собственным меню приложений) кнопкой Win+Enter, VLC запускается кнопкой Win+T, в качестве дисплейного менеджера в моей установке - nodm, с, по умолчанию, принятым логином 'user', но думаю, заменить на что-нибудь другое но то же легковесное....
В будущую пользовательскую директорию в /etc/skel/.config/user-dirs.dirs
заношу строки:  

XDG_DESKTOP_DIR="$HOME/Рабочий стол"
XDG_DOWNLOAD_DIR="$HOME/Загрузки"
XDG_TEMPLATES_DIR="$HOME/Шаблоны"
XDG_PUBLICSHARE_DIR="$HOME/Общедоступные"
XDG_DOCUMENTS_DIR="$HOME/Документы"
XDG_MUSIC_DIR="$HOME/Музыка"
XDG_PICTURES_DIR="$HOME/Изображения"
XDG_VIDEOS_DIR="$HOME/Видео"

 Чтобы xdg-user-dirs запускался автоматические, добавляю в /etc/skel/.config/user-dirs.dirs, строки:

[Desktop Entry]
Type=Application
Name=User folders update
TryExec=xdg-user-dirs-update
Exec=xdg-user-dirs-update
StartupNotify=false
NoDisplay=true

X-GNOME-Autostart-Phase=Initialization
X-KDE-autostart-phase=1

 в etc/xdg/autostart/xdg-user-dirs-kde.desktop, строки:

[Desktop Entry]
Type=Application
Name=User folders update
TryExec=xdg-user-dirs-update
Exec=xdg-user-dirs-update
StartupNotify=false
NoDisplay=true
X-KDE-autostart-phase=1

Для чего, думаю, объяснять не нужно :)

На этом формирование гостевой live системы завершаю, выхожу из chroot, командой exit/ после чего remaster-squashfs-editor предлагает записать изменения в дополнительную файловую систему (основная master пока не затрагивается). ВНИМАНИЕ: ЛЮБОЙ ДРУГОЙ СИМВОЛ КРОМЕ 'Y' ПРИВЕДЁТ К ОТКАЗУ ОТ ЗАПИСИ. После нажатия (какое бы решение ни было) будет 'good by' - разница только с записью или без. На этом этапе можно уже создавать iso образ, командой remaster-compose, просто дополнительная файловая система будет грузиться дополнительно к основной, что будет несколько дольше (но не намного, не критично) но меню remaster-squashfs-editor предлагает возможность объединения файловых систем в одну - последнее 4 меню - "New filesystem'.

Стоит только добавить: за основу беру так называемый - стандартный вариант Debian - в моём случае  debian-live-13.4.0-amd64-standard.iso, который ещё не имеет предустановленного графического слоя, и загружается прямо в текстовый терминал, предлагая доустановить необходимые приложения в соответствии с потребностями, но и он без множества пользовательских программ занимает 1,90Гб, что весьма немало :(