StartExec vpn systemd

Ниже описан способ создания живого USB-накопителя Debian с постоянным сохранением. Это позволит установить отсутствующие пакеты, которые с этого момента будут доступны при каждой загрузке в реальном времени с использованием файла persistence. Поскольку мы -создаем содержимое файловой системы живого ISO-образа в файловой системе с возможностью чтения -и записи, мы можем изменить конфигурацию загрузчика, чтобы включить сохранение и установить раскладку клавиатуры при загрузке.

Описанные здесь шаги были протестированы для работы с Debian stretch и buster для создания динамического образа Debian stretch.

Требуется много шагов, но кажется, что этот метод все еще достаточно эффективен.

Заявление об отказе от ответственности:Вы потеряете данные на целевом USB-накопителе, и если вы ошибетесь с приведенными ниже командами, впоследствии вам может быть очень жаль. Я не несу ответственности за ваши действия.

Чувство удачи

Если вам сегодня особенно повезло, вы можете попробовать bash-скрипт , автоматизирующий этот процесс. Укажите путь к образу ISO в качестве первого параметра и имя блочного устройства USB-накопителя в качестве второго. Обратите внимание, что этот сценарий безумно опасен и что вам не следует запускать его, не прочитав и не разобравшись с ним.

TL;DR

Получите живой ISO-образ Debian,затем сделайте следующее:

umount /dev/sdX*
parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 3GiB
parted /dev/sdX --script mkpart persistence ext4 3GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on

mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3

mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso

cp -ar /tmp/live-iso/* /tmp/usb-live

echo "/ union" > /tmp/usb-persistence/persistence.conf

grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX

dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2

mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg

sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg

sed --in-place '0,/boot=live/{s/\(boot=live.*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg

sed --in-place '0,/boot=live/{s/\(boot=live.*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg

umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso

Подробно и с пояснениями

Вам потребуется выполнить большинство следующих команд с повышенными привилегиями, т. е. используя sudoв большинстве систем GNU/Linux.

Скачать

Загрузите живой ISO-образ Debian с выбранным вами оконным менеджером:

https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/

Мы будем называть загруженный ISO-образ просто «live.iso».

Определить целевой диск

Найдите устройство, которое является вашим USB-накопителем, с помощью lsblk. Мы назовем это /dev/sdX.

Размонтировать

Размонтируйте существующие разделы на вашем диске, используяumount /dev/sdX*

Создание разделов

Нам нужен загрузочный раздел EFI для ПК с UEFI для загрузки с USB-накопителя. Затем нам нужен достаточно большой раздел для хранения исходного содержимого живого образа файловой системы ISO. Для этого раздела должен быть установлен флаг legacy_boot. Затем мы добавляем постоянный раздел, используя все оставшееся место на USB-накопителе. Вы можете сделать это с помощью любого инструмента для разметки с поддержкой GPT (с флагом legacy_boot). Вот пример использованияparted:

parted /dev/sdX --script mktable gpt
parted /dev/sdX --script mkpart EFI fat16 1MiB 10MiB
parted /dev/sdX --script mkpart live fat16 10MiB 3GiB
parted /dev/sdX --script mkpart persistence ext4 3GiB 100%
parted /dev/sdX --script set 1 msftdata on
parted /dev/sdX --script set 2 legacy_boot on
parted /dev/sdX --script set 2 msftdata on

При этом создается таблица разделов GPT и защитная таблица разделов MBR.

Создание файловых систем

Нам нужна FAT в EFI и живом разделе, и мы хотим ext4в разделе сохраняемости, и нам нужна метка persistenceдля работы функции сохранения.

mkfs.vfat -n EFI /dev/sdX1
mkfs.vfat -n LIVE /dev/sdX2
mkfs.ext4 -F -L persistence /dev/sdX3

Подключение ресурсов

Нам потребуется смонтировать исходный ISO-образ и целевые разделы во временных точках монтирования.

mkdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
mount /dev/sdX1 /tmp/usb-efi
mount /dev/sdX2 /tmp/usb-live
mount /dev/sdX3 /tmp/usb-persistence
mount -oro live.iso /tmp/live-iso

Установить действующую систему

Скопируйте активное содержимое файловой системы ISO в раздел LIVE.

cp -ar /tmp/live-iso/* /tmp/usb-live

persistence.conf

Подготовьте файловую систему сохраняемости с требуемым файлом конфигурации. Функция сохранения не будет работать без этого файла.

echo "/ union" > /tmp/usb-persistence/persistence.conf

Grub для поддержки UEFI

Установите grub2 для поддержки загрузки UEFI (для этого требуется пакет grub-efi-amd64-binв Debian ). Мы заставляем grub-installзаменить , а не использовать безопасную загрузку UEFI, которая, по-видимому, не работает с опцией --removable.

grub-install --no-uefi-secure-boot --removable --target=x86_64-efi --boot-directory=/tmp/usb-live/boot/ --efi-directory=/tmp/usb-efi /dev/sdX

Syslinux для поддержки старых версий BIOS

Установите загрузчик syslinux gptmbr.binна диск (загрузите syslinux или установите пакетsyslinux-common). Затем установите syslinux на живой раздел.

dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr/gptmbr.bin of=/dev/sdX
syslinux --install /dev/sdX2

Исправление Isolinux

Повторно используйте конфигурацию isolinux исходного живого ISO для работы с syslinux.

mv /tmp/usb-live/isolinux /tmp/usb-live/syslinux
mv /tmp/usb-live/syslinux/isolinux.bin /tmp/usb-live/syslinux/syslinux.bin
mv /tmp/usb-live/syslinux/isolinux.cfg /tmp/usb-live/syslinux/syslinux.cfg

Параметры ядра

Теперь, когда мы скопировали живые системные файлы в реальную файловую систему для чтения -записи, мы можем манипулировать конфигурацией grub и syslinux.

Добавьте параметр ядра сохраняемости в menu.cfgи grub.cfg. В обоих файлах добавьте ключевое слово persistenceв конце соответствующей первой строки с boot=live.

sed --in-place '0,/boot=live/{s/\(boot=live.*\)$/\1 persistence/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg

Установите параметр ядра раскладки клавиатуры -. В обоих файлах добавьте ключевые слова в конце соответствующей первой строки с boot=live.

sed --in-place '0,/boot=live/{s/\(boot=live.*\)$/\1 keyboard-layouts=de locales=en_US.UTF-8,de_DE.UTF-8/}' /tmp/usb-live/boot/grub/grub.cfg /tmp/usb-live/syslinux/menu.cfg

Всплеск личинки

Исправить заставку grub (необязательно; мы переместили его в другой каталог ).

sed --in-place 's#isolinux/splash#syslinux/splash#' /tmp/usb-live/boot/grub/grub.cfg

Размонтирование и очистка

umount /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso
rmdir /tmp/usb-efi /tmp/usb-live /tmp/usb-persistence /tmp/live-iso

Почему это должно работать как для UEFI, так и для BIOS

При запуске в режиме UEFI ПК будет сканировать разделы FAT, которые мы определили в таблице разделов GPT. Первый раздел FAT содержит загрузчик UEFI grub, который найден, потому что он расположен по пути, указанному UEFI для съемных дисков (переключатель --removableна grub-installсделал это ). Для этого не требуется загрузочная запись UEFI, нам нужно только заставить ПК попытаться загрузиться с USB-накопителя. Этот grub настроен на то, чтобы взять его оттуда (, загрузить grub.cfg, показать меню и т. д.).

При запуске в режиме BIOS и выборе загрузки с USB-накопителя ПК выполнит код загрузчика gptmbr.bin, который мы записали в защитную MBR USB-накопителя. Этот загрузчик ищет раздел GPT, помеченный флагом legacy_boot, и загружает syslinux из этого раздела. Затем Syslinux берет на себя (загрузку menu.cfg, отображение меню и т. д. ).

Зашифрованное сохранение

Вместо того, чтобы использовать обычный ext4 в постоянном разделе, можно сначала зашифровать постоянный раздел с помощью LUKS (с помощью cryptsetup), а затем отформатировать его с помощью ext4 (, используя соответствующую метку ). Однако, как сказано в документации , работающая система должна включать пакет cryptsetup. В противном случае зашифрованный раздел не может быть расшифрован действующей системой. Это означает, что сначала нужно создать собственный живой ISO. Однако это выходит за рамки этого ответа.

История

Параметр --no-uefi-secure-bootранее не был частью вызова grub-install. У меня флешка работала нормально, но это остановилось с Debian buster, хотя безопасная загрузка по-прежнему отключена на моей машине.

1
09.11.2019, 02:10
1 ответ

Как я вижу на их странице поддержки , вы должны просто использовать openvpn, а не какую-либо команду nordvpn. И я был бы сильно удивлен любой конструкцией такого типа :/usr/bin/"nordvpn c Estonia", так как это означает, что имя команды в /usr/binбудет nordvpn c Estonia, что очень, очень не соответствует стандарту -. Они просто дают вам свой сертификат и позволяют использовать его с вашим openvpn. Вот пример с их сайта:

sudo openvpn /etc/openvpn/ovpn_udp/us2957.nordvpn.com.udp.ovpn
0
27.01.2020, 23:57

Теги

Похожие вопросы