- PVSM.RU - https://www.pvsm.ru -
Клиент 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.11.0.
Для скачивания можно перейти на страницу загрузки: https://www.debian.org/download [1].
Прямая ссылка [2]. Размер установочного образа - 670 Мб.
Для подготовки виртуального диска потребуется эмулятор QEMU. В современных версиях Debian его можно установить командой:
$ sudo apt install qemu-system-x86
После установки QEMU создадим файловый образ виртуального диска объёмом 3 ГБ с использованием формата qcow2:
$ qemu-img create -f qcow2 image.qcow2 3G
В результате будет создан файл image.qcow2, размером 197 Кб.
Для запуска виртуальной машины используем следующую команду:
$ 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 — подключает ранее созданный образ виртуального диска. В этот диск будет установлена гостевая операционная система.
Результат:
Чтобы начать установку гостевой операционной системы, необходимо расширить команду запуска 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-привода.
После запуска виртуальной машины с подключённым 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 на виртуальный диск необходимо установить и настроить базовые компоненты. Это позволит подготовить её к удобной работе и установке графической системы.
Многие пакеты при установке добавляют файлы локализации (переводы интерфейса), которые могут занимать десятки и более мегабайт. В нашем случае, когда важны компактность и производительность, эти файлы — избыточны.
Первым делом установите утилиту localepurge, которая автоматически блокирует установку языковых файлов:
root> apt install -y localepurge
Во время установки появится диалог, предлагающий выбрать, какие локали оставить. Отметьте только необходимые:

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

Чтобы упростить взаимодействие с гостевой системой, установите SSH-сервер:
root> apt install -y ssh
По умолчанию SSH-доступ для пользователя root запрещён. Чтобы разрешить вход, добавьте строку в файл конфигурации /etc/ssh/sshd_config:
PermitRootLogin yes
На этом установка базовых пакетов закончена. Необходимо выключить гостевую систему чтобы настроить запуск виртуальной машины с новыми параметрами:
root> poweroff
Поскольку виртуальную машину предстоит запускать многократно в процессе настройки, удобно создать скрипт для автоматизации этого процесса:
#!/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 -p 2222 root@localhost
Если SSH-клиент не принимает сертификат с localhost, то удалите старый сертификат :
$ ssh-keygen -R '[localhost]:2222'
Для терминального доступа:
Отличным выбором станет Remmina — клиент удалённого доступа с поддержкой SSH, RDP, VNC и других протоколов. Он предоставляет графический интерфейс, вкладки, сохранение сессий и удобное управление.
Для файлового обмена (SFTP):
Midnight Commander или FAR Manager (far2l)
По умолчанию установщик добавляет CD-ROM как источник пакетов в файл /etc/apt/sources.list
За ненадобностью необходимо закомментировать или удалить строку:
# deb cdrom:[Debian GNU/Linux ...
После обновить список пакетов:
root> apt update
Чтобы убрать загрузочное меню GRUB и ускорить загрузку, в файле /etc/default/grub необходимо установить переменную:
GRUB_TIMEOUT=0
Примените изменения:
root> update-grub
После установки 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 для удаления.
В современных системах 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.
В процессе работы система использует временные каталоги, накапливая кэши, логи и промежуточные файлы. Со временем их объём может достигать нескольких сотен мегабайт.
Чтобы сократить использование дисковой системы и повысить производительность, перенесём временные каталоги в оперативную память с помощью виртуальной файловой системы 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-носителя
Ускорение операций ввода-вывода
Автоматическая очистка при перезагрузке
При установке 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/.bashrc добавить строку:
PS1='root> '
Теперь при каждом запуске терминала приглашение будет отображаться как:
root>
Чтобы сразу после входа в систему запускать файловый менеджер, настроим автозапуск, добавив в файл /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, и вы вернётесь в командную строку.
Данный шаг не обязателен и приведён для примера.
Отредактируйте шаблон сервиса getty@.service. В файле /usr/lib/systemd/system/getty@.service необходимо заменить значение ExecStart. Старое лучше закомментировать. Оно нам ещё понадобится. Добавьте новую строку:
ExecStart=-/sbin/agetty -a root - $TERM
После внесения правок перезагрузите систему:
root> reboot
После загрузки вы автоматически окажетесь в терминале под root, с запущенным mc и кратким приглашением командной строки.
На этом этапе образ системы уже настроен, но занимает больше места, чем необходимо. Виртуальный диск в формате qcow2 динамически расширяется, но не "сжимается" автоматически — даже после удаления файлов свободное пространство остаётся забитым мусором, что мешает эффективному сжатию.
Чтобы уменьшить размер итогового образа, выполним обнуление свободного места, а затем — конвертацию с компрессией.
Текущий размер файла 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 ГБ — более чем достаточно.
Перед сжатием необходимо заполнить нулями всё свободное место на диске. Это позволяет qcow2 эффективно сжать неиспользуемые блоки.
Выполните в гостевой системе:
root> dd if=/dev/zero of=/root/zero ; rm -f /root/zero ; shutdown -h now
if=/dev/zero — источник нулевых байтов
of=/root/zero — файл, который будет расти до заполнения диска
После завершения того когда закончится место файл удаляется и система выключается
После выключения виртуальной машины выполните на хосте:
$ qemu-img convert -p -O qcow2 -c image.qcow2 new.qcow2
-p — отображение прогресса
-O qcow2 — выходной формат
-c — включает сжатие (с помощью zlib)
И вернуть старое название файла:
$ mv new.qcow2 image.qcow2
Итоговый размер образа: всего 350 МБ — более чем в 7 раз меньше исходного.
Рекомендую сразу же сделать архивную копию образа.
Если вы используете 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
Теперь образ готов к записи на флешку.
Чтобы увидеть список подключённых устройств на хостовой машине выполнить:
$ 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 [3] размером 350 МБ — готов к модификации и резервированию
Рабочий загрузочный USB-носитель с Debian 12, сетью и минимальной конфигурацией
Система с поддержкой установки пакетов из интернета
Во второй части руководства будет дана информация как установить графический режим, RDP-клиент и как средствами операционной системы организовать простое диалоговое окно для подключения к удалённому рабочему столу.
Автор: dign
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/qemu/427447
Ссылки в тексте:
[1] https://www.debian.org/download: https://www.debian.org/download
[2] ссылка: https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.11.0-amd64-netinst.iso
[3] image.qcow2: https://disk.yandex.ru/d/_JsUe_KPHqZEPQ
[4] Источник: https://habr.com/ru/articles/935022/?utm_source=habrahabr&utm_medium=rss&utm_campaign=935022
Нажмите здесь для печати.