Подготовка загрузочного образа
См. Часть 2
Введение
Клиент RDP — это программное обеспечение, которое позволяет подключиться к терминальному серверу с использованием протокола удалённого рабочего стола (Remote Desktop Protocol).
Технология RDP позволяет применять малопроизводительные компьютеры в качестве терминалов (так называемых тонких клиентов). Все необходимые функции, включая рабочую систему, офисные программы и современный браузер, будут выполняться на сервере.
В интернете есть различные программные продукты, реализующие RDP-клиент. Однако готовых решений, которые можно было бы установить на USB-накопитель, не так много. А те, что есть, имеют ряд ограничений в использовании.
Поэтому создадим свой легковесный образ на на основе Debian 12, используя проверенные пакеты. Готовый образ можно будет записать как на USB-флешку, так и на жесткий диск. А в перспективе такой образ можно будет загружать на тонкий клиент через сеть.
Постановка задачи
В наличии есть компьютеры, которые можно использовать в качестве тонкого клиента с типовыми характеристиками:
4 Гб оперативной памяти
BIOS с поддержкой UEFI
старый медленный жесткий диск или его отсутствие
Кроме того, в наличии есть USB-накопители объёмом 4 Гб.
Существует несколько способов создания загрузочной флешки.
В первом случае можно установить операционную систему Debian непосредственно на USB-накопитель и затем настроить её.
Второй способ предполагает создание образа диска, на который устанавливается и настраивается операционная система. Затем этот образ можно перенести на USB-накопитель.
Второй способ более удобен, так как работа с образом происходит быстрее, чем со старой флешкой. Кроме того, он позволяет быстро создавать резервные копии образа и при необходимости возвращаться к сохранённому образу.
Для работы с образом будет применяться виртуальная среда QEMU. В качестве файлового образа - формат qcow2
, который поддерживает сжатие.
План действий
Первая часть (подготовка загрузочного образа):
загрузить установочный образ Debian (iso);
создать образ виртуальной машины (qcow2);
установить систему;
установить базовые пакеты;
настроить систему;
записать образ на USB-носитель.
Вторая часть (графическое исполнение):
установить пакеты
настроить разрешения для учётной записи user
настроить графическую среду
создать скрипт для авторизации
настроить автозагрузку графической системы
записать образ на USB-носитель.
В статье приведены примеры консольных команд, которые необходимо выполнять в зависимости от задачи в хостовой или гостевой системе. Чтобы различать эти команды, перед ними будет отображаться приглашение:
$
— команды, выполняемые в хостовой системе.root>
— команды, выполняемые в гостевой системе от имени root.user>
— команды, выполняемые в гостевой системе от имени user.
Хостовая система — система, на которой запускаются виртуальные машины.
Гостевая система — система, которая работает внутри виртуальной машины.
Установочный образ Debian 12
На момент создания этой статьи для загрузки доступна версия Debian 12.11.0.
Для скачивания можно перейти на страницу загрузки: https://www.debian.org/download.
Прямая ссылка. Размер установочного образа - 670 Мб.
Файловый образ и виртуальная машина
1. Создание файлового образа
Для подготовки виртуального диска потребуется эмулятор QEMU. В современных версиях Debian его можно установить командой:
$ sudo apt install qemu-system-x86
После установки QEMU создадим файловый образ виртуального диска объёмом 3 ГБ с использованием формата qcow2
:
$ qemu-img create -f qcow2 image.qcow2 3G
В результате будет создан файл image.qcow2
, размером 197 Кб.
2. Запуск виртуальной машины
Для запуска виртуальной машины используем следующую команду:
$ qemu-system-x86_64 \
-m 2048M \
-bios OVMF.fd \
-drive file=image.qcow2
Разберём ключевые параметры:
-m 2048M
— выделяет виртуальной машине 2 ГБ оперативной памяти.-bios OVMF.fd
— включает поддержку UEFI вместо устаревшего BIOS.OVMF.fd
это образ прошивки UEFI, поставляемый в составе пакета QEMU.
Он позволяет гостевой системе сохранять переменные NVRAM.-drive file=image.qcow2
— подключает ранее созданный образ виртуального диска. В этот диск будет установлена гостевая операционная система.
Результат:

3. Подготовка виртуальной машины к установке ОС
Чтобы начать установку гостевой операционной системы, необходимо расширить команду запуска QEMU, добавив параметры, обеспечивающие производительность и доступ к установочному носителю:
$ qemu-system-x86_64 \
-m 2048M \
-enable-kvm \
-cpu host \
-smp 2 \
-machine type=q35 \
-bios OVMF.fd \
-cdrom debian-12.11.0-amd64-netinst.iso \
-drive file=image.qcow2
Разберём новые параметры:
-enable-kvm
— активирует KVM (Kernel-based Virtual Machine), используя аппаратную поддержку виртуализации (Intel VT-x / AMD-V).
Без этого параметра QEMU будет работать в режиме программной эмуляции, что резко снижает производительность — установка может занять часы вместо нескольких минут.-cpu host
— настраивает виртуальный процессор так, чтобы он максимально соответствовал физическому CPU хоста. Это улучшает производительность за счёт использования всех доступных инструкций и оптимизаций.-smp 2
— задаёт использование двух ядер процессора. Это ускоряет выполнение многозадачных операций во время установки и дальнейшей работы системы.-machine type=q35
— использует модель виртуальной машины с набором чипсета Intel Q35. Она обеспечивает лучшую производительность и поддержку UEFI, PCIe и других современных технологий.
Важно: на некоторых системах этот тип может вызывать проблемы. Рекомендуется при первом запуске протестировать работу без этого параметра, а затем добавить его при успешной загрузке.-cdrom debian-12.11.0-amd64-netinst.iso
— подключает установочный ISO-образ Debian в качестве виртуального CD/DVD-привода.
Установка Debian 12 на виртуальной машине
После запуска виртуальной машины с подключённым ISO-образом Debian начнётся процесс установки. Чтобы получить минимального размера и легко в настраиваемую систему, важно правильно выбрать параметры на каждом этапе.
Ниже — ключевые шаги и рекомендации по настройке:
В меню установки вместо
Graphical install
выбратьInstall
.

Язык интерфейса:
Русский
.Раскладка клавиатуры:
Английская американская
.Выбрать любое имя компьютера, отличное от предлагаемого.
Например:rdp-client
илиusb-desktop
.Простой пароль для учётной записи
root
. Например: 123456. После настройки системы рекомендуется изменить его на более надёжный.Добавить пользователя
user
. Пароль: 123456.
Эта учётная запись будет использоваться в графическом режиме.Разметка дисков:
Вручную
.Укажите диск:
SCSI1 (0,0,0) (sda)
.Создайте новую пустую таблицу разделов (тип —
GPT
).

-
Создать два раздела:
системный раздел
EFI
, 50 Мбкорневой раздел,
ext4
, параметры монтирования:noatime
,nodiratime
,discard
Эти параметры оптимизируют файловую систему для SSD и USB-носителей.
Файловая системаext4
является достаточно быстрой и надёжной. Из альтернативных вариантов предлагаю файловую системуbrtfs
. Она позволяет в два-три раза ужать файлы в корневом разделе. Но для этого необходимо будет выполнить дополнительные действия.

Игнорируем создание раздела подкачки (
swap
). В системе на USB это не нужно.Выбираем репозиторий (зеркало архива Debian):
Российская федерация
>deb.debian.org
В окне выбора программного обеспечения снять все галочки. Это гарантирует минимальную установку системы. Все необходимые компоненты будут установлены вручную на следующих этапах.


По окончании установки и перезапуска виртуальной машины отобразится меню GRUB.
Размер файла image.qcow2
может увеличится до 3 Гб. Перед настройкой гостевой системы рекомендую создать архивную копию образа.
Установка необходимых пакетов в гостевую систему
После установки системы Debian 12 на виртуальный диск необходимо установить и настроить базовые компоненты. Это позволит подготовить её к удобной работе и установке графической системы.
1. Установка localepurge — экономия места за счёт локализаций
Многие пакеты при установке добавляют файлы локализации (переводы интерфейса), которые могут занимать десятки и более мегабайт. В нашем случае, когда важны компактность и производительность, эти файлы — избыточны.
Первым делом установите утилиту localepurge
, которая автоматически блокирует установку языковых файлов:
root> apt install -y localepurge
Во время установки появится диалог, предлагающий выбрать, какие локали оставить. Отметьте только необходимые:

en
en_US
en_US.UTF-8
ru
ru‑RU
ru‑RU.UTF-8
2. Установка Midnight Commander (mc)
Для удобной навигации по файловой системе и редактирования конфигурационных файлов установите Midnight Commander:
root> apt install -y mc
Запустить его можно командой:
root> mc

3. Установка SSH-сервера
Чтобы упростить взаимодействие с гостевой системой, установите SSH-сервер:
root> apt install -y ssh
По умолчанию SSH-доступ для пользователя root
запрещён. Чтобы разрешить вход, добавьте строку в файл конфигурации /etc/ssh/sshd_config
:
PermitRootLogin yes
На этом установка базовых пакетов закончена. Необходимо выключить гостевую систему чтобы настроить запуск виртуальной машины с новыми параметрами:
root> poweroff
Доступ к гостевой системе по SSH
Поскольку виртуальную машину предстоит запускать многократно в процессе настройки, удобно создать скрипт для автоматизации этого процесса:
#!/bin/bash
qemu-system-x86_64 \
-name "usb-debian" \
-m 2048M \
-enable-kvm \
-cpu host \
-smp 2 \
-machine type=q35 \
-bios OVMF.fd \
-net nic -net user,hostfwd=tcp::2222-:22 \
-drive file=image.qcow2 \
&
Пояснение новых параметров:
-name "usb-debian"
— задаёт имя окна QEMU, что упрощает идентификацию при работе с несколькими виртуальными машинами.-net nic -net user,hostfwd=tcp::2222-:22
— настраивает виртуальную сеть и пробрасывает порт 22 (SSH) гостевой системы на порт 2222 хоста. Это позволяет подключаться к гостю по SSH без необходимости настраивать сложные сетевые мосты.&
— запускает процесс в фоне, освобождая терминал для других команд. Необязательно, но удобно.
Чтобы скрипт был исполняемым не забываем добавить разрешение:
$ chmod +x myscript.sh
Подключение к гостевой системе по SSH
После загрузки гостевой ОС подключитесь к ней с хостовой системы через SSH:
$ ssh -p 2222 root@localhost
Если SSH-клиент не принимает сертификат с localhost, то удалите старый сертификат :
$ ssh-keygen -R '[localhost]:2222'
Рекомендуемые инструменты для работы
Для терминального доступа:
Отличным выбором станет Remmina — клиент удалённого доступа с поддержкой SSH, RDP, VNC и других протоколов. Он предоставляет графический интерфейс, вкладки, сохранение сессий и удобное управление.

Для файлового обмена (SFTP):
Midnight Commander или FAR Manager (far2l
)

Настройка гостевой системы
1. Удаление CD-ROM из источников пакетов
По умолчанию установщик добавляет CD-ROM как источник пакетов в файл /etc/apt/sources.list
За ненадобностью необходимо закомментировать или удалить строку:
# deb cdrom:[Debian GNU/Linux ...
После обновить список пакетов:
root> apt update
2. Отключение загрузочного меню GRUB
Чтобы убрать загрузочное меню GRUB и ускорить загрузку, в файле /etc/default/grub
необходимо установить переменную:
GRUB_TIMEOUT=0
Примените изменения:
root> update-grub
3. Удаление старых ядер Linux
После установки Debian оставляет два ядра — текущее и предыдущее. Cтарое ядро не нужно и занимает около 400 МБ на диске. Чтобы удалить все ядра, кроме текущего, выполните команду:
root> apt remove $(apt list --installed | sed 's/\/.*//' | grep linux-image | grep -v "$(uname -r)")
root> update-grub
Пояснение:
uname -r
— возвращает версию текущего активного ядра.apt list --installed | grep linux-image
— показывает все установленные образы ядер.grep -v "$(uname -r)"
— исключает текущее ядро из списка.sed 's/\/.*//'
— очищает вывод от версии и архитектуры, оставляя только имя пакета.Весь результат передаётся в
apt remove
для удаления.
4. Имя сетевого интерфейса
В современных системах Linux имена сетевых интерфейсов генерируются динамически на основе топологии оборудования. В результате на одной машине интерфейс может называться enp0s2
, на другой — ens18
. Данное поведение усложняет создание загрузочных образов с поддержкой сети, когда система должна работать на разных компьютерах. Чтобы избежать перенастраивания сети стоит вернуться к классическому именованию интерфейсов — eth0
.
Для этого необходимо изменить параметры загрузки ядра через GRUB. В файле /etc/default/grub
заменить строку:
GRUB_CMDLINE_LINUX=""
на
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
Примените изменения:
root> update-grub
В файле конфигурации сетевого интерфейса/etc/network/interfaces
переименовать имя интерфейса на eth0
. Для этого необходимо заменить строки:
allow-hotplug enp0s2
iface enp0s2 inet dhcp
на
allow-hotplugin eth0
iface eth0 inet dhcp
Система настроена на получение настроек от DHCP-сервера. Для работы этого более, чем достаточно.
По умолчанию в QEMU не поддерживается ICMP-трафик (команда ping
) из гостевой системы наружу. Это не означает, что сеть не работает — ICMP-пакеты блокируются на уровне виртуализации. Для проверки доступности сетевых ресурсов лучше проверять порты, например, утилитой netcat
.
5. Временные папки: использование RAM-дисков
В процессе работы система использует временные каталоги, накапливая кэши, логи и промежуточные файлы. Со временем их объём может достигать нескольких сотен мегабайт.
Чтобы сократить использование дисковой системы и повысить производительность, перенесём временные каталоги в оперативную память с помощью виртуальной файловой системы tmpfs
.
В файле конфигурации точек монтирования /ets/fstab
необходимо добавить строки:
tmpfs /tmp tmpfs defaults,noatime,rw 0 0
tmpfs /run tmpfs defaults,noatime,rw 0 0
tmpfs /var/tmp tmpfs defaults,noatime,rw 0 0
tmpfs /var/lock tmpfs defaults,noatime,rw 0 0
tmpfs /var/log tmpfs defaults,noatime,rw 0 0
tmpfs /var/lib/apt/lists tmpfs defaults,noatime,rw 0 0
tmpfs /var/cache tmpfs defaults,noatime,rw 0 0
Так же в этом файле закомментируем строку монтирования CDROM, если она есть:
#/dev/sr0 /media/cdrom0 iso9660 ro,noauto 0 0
Перед тем как включить tmpfs
, необходимо удалить содержимое перечисленных каталогов, кроме папки /run
:
root> rm -rf /tmp/*
root> rm -rf /var/tmp/*
root> rm -rf /var/lock/*
root> rm -rf /var/log/*
root> rm -rf /var/lib/apt/lists/*
root> rm -rf /var/cache/*
Чтобы дополнительно сэкономить место, можно удалить ненужные языковые файлы в /usr/share/locale
: кроме каталога русской локализации ru
и системного файла сопоставления @locale.alias
.
Важно после очистки каталогов сразу перегрузить гостевую систему:
root> reboot
После перезагрузки указанные каталоги будут размещены в оперативной памяти. Это даёт несколько преимуществ:
Снижение износа USB-носителя
Ускорение операций ввода-вывода
Автоматическая очистка при перезагрузке
6. Настройка GRUB для загрузки с USB-носителя
При установке Debian размещает UEFI-загрузчик по пути /boot/efi/EFI/debian/grubx64.efi
и прописывает путь в NVRAM материнской платы. Поэтому такая конфигурация не гарантирует загрузку на других компьютерах. Так как BIOS по умолчанию ищет загрузчик по другому пути - /boot/efi/EFI/BOOT/BOOTX64.EFI
, операционная система с USB-флешки не запустится.
Для размещения UEFI-загрузчика по каноническому пути необходимо выполнить команду:
root> grub-install --target=x86_64-efi --removable
Настройка профиля root и автологина
1. Настройка приглашения командной строки
В конец файла конфигурации оболочки /root/.bashrc
добавить строку:
PS1='root> '
Теперь при каждом запуске терминала приглашение будет отображаться как:
root>
2. Автозапуск Midnight Commander
Чтобы сразу после входа в систему запускать файловый менеджер, настроим автозапуск, добавив в файл /root/.profile
перед последней строкой команду mc
. Должно получится что-то типа:
if [ "$BASH" ]; then
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
mc
mesg n 2> /dev/null || true
Теперь после входа в терминал автоматически запустится Midnight Commander. Для выхода из mc
нажмите F10
, и вы вернётесь в командную строку.
3. Автоматический вход в консоль (autologin для root)
Данный шаг не обязателен и приведён для примера.
Отредактируйте шаблон сервиса getty@.service
. В файле /usr/lib/systemd/system/getty@.service
необходимо заменить значение ExecStart. Старое лучше закомментировать. Оно нам ещё понадобится. Добавьте новую строку:
ExecStart=-/sbin/agetty -a root - $TERM
4. Применение изменений
После внесения правок перезагрузите систему:
root> reboot
После загрузки вы автоматически окажетесь в терминале под root
, с запущенным mc
и кратким приглашением командной строки.
Сжатие образа и подготовка к записи на USB
На этом этапе образ системы уже настроен, но занимает больше места, чем необходимо. Виртуальный диск в формате qcow2
динамически расширяется, но не "сжимается" автоматически — даже после удаления файлов свободное пространство остаётся забитым мусором, что мешает эффективному сжатию.
Чтобы уменьшить размер итогового образа, выполним обнуление свободного места, а затем — конвертацию с компрессией.
1. Анализ использования диска
Текущий размер файла image.qcow2
— 2742 МБ. Однако реальное использование файловой системы значительно меньше.
Проверим, сколько места занято в гостевой системе:
root> df -h -BM /dev/sda*
Результат:
Файловая система 1M-блоков Использовано Доступно Использовано% Смонтировано в
udev 956M 0M 956M 0% /dev
/dev/sda1 47M 12M 35M 26% /boot/efi
/dev/sda2 2903M 907M 1830M 34% /
Система использует всего 907 МБ. Под установку графической среды и RDP-клиента доступно 1,8 ГБ — более чем достаточно.
2. Обнуление свободного пространства
Перед сжатием необходимо заполнить нулями всё свободное место на диске. Это позволяет qcow2
эффективно сжать неиспользуемые блоки.
Выполните в гостевой системе:
root> dd if=/dev/zero of=/root/zero ; rm -f /root/zero ; shutdown -h now
Пояснение:
if=/dev/zero
— источник нулевых байтовof=/root/zero
— файл, который будет расти до заполнения дискаПосле завершения того когда закончится место файл удаляется и система выключается
3. Сжатие образа на хосте
После выключения виртуальной машины выполните на хосте:
$ qemu-img convert -p -O qcow2 -c image.qcow2 new.qcow2
Пояснение параметров:
-p
— отображение прогресса-O qcow2
— выходной формат-c
— включает сжатие (с помощью zlib)
И вернуть старое название файла:
$ mv new.qcow2 image.qcow2
Итоговый размер образа: всего 350 МБ — более чем в 7 раз меньше исходного.
Рекомендую сразу же сделать архивную копию образа.
4. Особенности для файловой системы Btrfs
Если вы используете btrfs
вместо ext4
, рекомендуется дополнительная оптимизация перед обнулением на стороне гостевой системе:
#!/bin/bash
# Дефрагментация файловой системы
btrfs filesystem defragment -r -v -czstd /
# Создание временной папки без сжатия
mkdir -p ~/temp
btrfs property set ~/temp compression none
# Заполнение нулями
dd if=/dev/zero of=~/temp/zero bs=4M
# Очистка
rm -f ~/temp/zero
shutdown -h now
Запись образа на USB-носитель
Теперь образ готов к записи на флешку.
Чтобы увидеть список подключённых устройств на хостовой машине выполнить:
$ sudo fdisk -l
В моём случае это /dev/sdb
.
Записать на флешку:
sudo qemu-img convert -p image.qcow2 -O raw /dev/sdb
Перед использованием на реальном оборудовании протестируйте загрузку с флешки в QEMU:
qemu-system-x86_64 \
-name "usb-debian" \
-m 2048M \
-enable-kvm \
-cpu host \
-smp 2 \
-machine type=q35 \
-bios OVMF.fd \
-drive file=/dev/sdb \
&
Если система загружается — значит, образ записан корректно.
Для тестирования на компьютере необходимо в BIOS выключить Secure Boot
(безопасная загрузка).
Итог
К настоящему моменту у нас есть:
Компактный образ image.qcow2 размером 350 МБ — готов к модификации и резервированию
Рабочий загрузочный USB-носитель с Debian 12, сетью и минимальной конфигурацией
Система с поддержкой установки пакетов из интернета
Во второй части руководства будет дана информация как установить графический режим, RDP-клиент и как средствами операционной системы организовать простое диалоговое окно для подключения к удалённому рабочему столу.
Комментарии (4)
JohnSmith_007
07.08.2025 14:16Афтар с таким "тощим" клиентом Вы очень многа кушать (тоесть зажрались) !
CyrK
07.08.2025 14:16Как правильно сказали выше, для rdp клиента лучше использовать специализированные дистрибутивы.
VenbergV
Более 15 лет для работы по RDP используем Thinstation.
Текущий размер рабочего образа 25Мегабайт. Запускается на Intel Pentium 4, Pentium D с 256-512Мегабайт памяти. Загрузка PXE с любого tftp. Т.е. загрузочный образ помещается во многие модели маршрутизаторов.