Ниже описан способ создания живого USB-накопителя Debian с постоянным сохранением. Это позволит установить отсутствующие пакеты, которые с этого момента будут доступны при каждой загрузке в реальном времени с использованием файла persistence. Поскольку мы -создаем содержимое файловой системы живого ISO-образа в файловой системе с возможностью чтения -и записи, мы можем изменить конфигурацию загрузчика, чтобы включить сохранение и установить раскладку клавиатуры при загрузке.
Описанные здесь шаги были протестированы для работы с Debian stretch и buster для создания динамического образа Debian stretch.
Требуется много шагов, но кажется, что этот метод все еще достаточно эффективен.
Заявление об отказе от ответственности:Вы потеряете данные на целевом USB-накопителе, и если вы ошибетесь с приведенными ниже командами, впоследствии вам может быть очень жаль. Я не несу ответственности за ваши действия.
Если вам сегодня особенно повезло, вы можете попробовать bash-скрипт , автоматизирующий этот процесс. Укажите путь к образу ISO в качестве первого параметра и имя блочного устройства USB-накопителя в качестве второго. Обратите внимание, что этот сценарий безумно опасен и что вам не следует запускать его, не прочитав и не разобравшись с ним.
Получите живой 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
Подготовьте файловую систему сохраняемости с требуемым файлом конфигурации. Функция сохранения не будет работать без этого файла.
echo "/ union" > /tmp/usb-persistence/persistence.conf
Установите 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 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 исходного живого 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 ПК будет сканировать разделы 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, хотя безопасная загрузка по-прежнему отключена на моей машине.
Как я вижу на их странице поддержки , вы должны просто использовать openvpn
, а не какую-либо команду nordvpn
. И я был бы сильно удивлен любой конструкцией такого типа :/usr/bin/"nordvpn c Estonia"
, так как это означает, что имя команды в /usr/bin
будет nordvpn c Estonia
, что очень, очень не соответствует стандарту -. Они просто дают вам свой сертификат и позволяют использовать его с вашим openvpn
. Вот пример с их сайта:
sudo openvpn /etc/openvpn/ovpn_udp/us2957.nordvpn.com.udp.ovpn