установка пакетов с USB в автономную систему MX Linux

Вы можете попробовать запустить приведенный ниже скрипт с LiveCD (возможно обновленных версий по ссылке ). Сценарий пытается частично автоматизировать процесс за вас. Он был написан и протестирован для диска NVMe, поэтому вам может потребоваться немного изменить ситуацию, если вы используете диск SATA/IDE с путем /dev/sd*. Если вы не используете EFI, вы можете удалить любую строку, содержащую efiили EFI, запустив sed -i -e '/efi/d' -e '/EFI/d' crypt-fix.shпосле сохранения сценария на свой компьютер. В конце концов, для этого придется добавить некоторую логику обнаружения.

https://gist.github.com/dragon788/e777ba64d373210e4f6306ad40ee0e80

крипта -fix.sh

#!/bin/bash
# Call with `sudo bash DEBUG=1./crypt-fix.sh` for verbose output
[ -n "$DEBUG"] && set -x
# Prompt user for device from /dev/sd* /dev/nvme* /dev/mmc* prefixes?
# For /dev/sda probably sda1 is EFI and sda2 is boot and sda3 is encrypted
DEVICE=/dev/nvme0n1
EFIPATH="${DEVICE}p1"
BOOTPATH="${DEVICE}p2"
CRYPTPATH="${DEVICE}p3"
TARGETPATH=/mnt
# Need root for mounting stuff
if ! (( $EUID == 0 )); then echo "Please run with `sudo $0`"; fi

clear_mounts () {
# Clears mounts in case of interrupt or upon exit to allow running script multiple times
umount $TARGETPATH/boot/efi
umount $TARGETPATH/boot
umount $TARGETPATH/proc
umount $TARGETPATH/dev
umount $TARGETPATH
vgchange -an
cryptsetup close temp_name
cryptsetup close $CRYPTNAME
set +x
}
trap clear_mounts INT EXIT

cryptsetup open $CRYPTPATH temp_name
vgchange -ay
# Can't get this until LVM devices are scanned above
ROOTPATH=$(ls /dev/mapper/* | grep root)
# Make sure nothing else is mounted on our $TARGETPATH
umount $TARGETPATH
wait
mount $ROOTPATH $TARGETPATH
# Find the name that is required for `update-initramfs` to properly update things
CRYPTNAME=$(cat $TARGETPATH/etc/crypttab | awk '/^[ ]*[^#]/ { print $1; exit }')
umount $TARGETPATH
vgchange -an
cryptsetup close temp_name
# This proper name is required for `update-initramfs` to properly update things
cryptsetup open $CRYPTPATH $CRYPTNAME
wait
vgchange -ay
ROOTPATH=$(ls /dev/mapper/* | grep root)
mount $ROOTPATH $TARGETPATH
mount $BOOTPATH $TARGETPATH/boot
mount $EFIPATH $TARGETPATH/boot/efi
mount -t proc proc $TARGETPATH/proc
mount -o bind /dev $TARGETPATH/dev
# Have also seen people mounting dev/pts and run and sys, they don't appear to be necessary

chroot $TARGETPATH update-initramfs -c -k all
echo "Completed crypt-fix, try rebooting and you should get prompted for your passphrase after grub"

0
13.06.2021, 01:52
1 ответ

Предисловие

Честно говоря, это требует больших усилий, и обычно вы так не делаете . Просто есть лучшие способы работы с автономными системами :

.

Вместо этого вы обычно настраиваете систему со всеми нужными вам пакетами, затем делаете образ «чистой» системы, отключаете ее от интернета и только потом расшифровываете зашифрованный раздел с данными или подключаете жесткий диск с разумной информацией, если вы строите системы с воздушным -зазором в целях безопасности.

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

Если вы считаете, что вам действительно необходимо установить программное обеспечение на машину с воздушным -зазором

апт -офлайн

Поскольку MX основан на debian, к нему применимы все возможности, которые вы можете делать с помощью debian.

apt-offline— это инструмент для установки обновлений безопасности для автономных компьютеров. Грубо говоря, это работает как:

(offline)> sudo apt-offline set --install-packages PACKAGE_NAME --update apt-offline.sig

, а затем на онлайн-машине после переносаapt-offline.sig

 (online) supo apt-offline get --bundle bundle.zip apt-offline.sig 

после переноса bundle.zipна автономную машину:

 (offline) sudo apt-offline install bundle.zip 

Проблемы / Решение вручную

Это не решает проблему установки самого apt-offline, и нельзя быть уверенным, что такой маленький молодой дистрибутив, как ваш, постоянно проверяет, работает ли это. Так что, скорее всего, вам придется делать что-то вручную :

.

Здесь нет сверхпростого пути, потому что ваша автономная система даже не может определить, какие пакеты ей потребуются — они уже изменились в онлайн-репозитории, а вместе с ними и взаимные зависимости.

Итак, я вижу единственный способ:

  1. на автономной машине экспортировать список установленных пакетов:

    sudo dpkg --список | вырезать '-d '-f2 > список _из _packages.txt

  2. Запишите этот список на USB-накопитель и перенесите его на компьютер, подключенный к сети.

  3. На компьютере с Windows настройте виртуальную машину с MX Linux точно в вашей версии. Это очень легко сделать с VirtualBox, и, в качестве альтернативы, я бы предположил, что даже WSL (2 ), с которым поставляется Windows10, может запускать контейнер с MX Linux внутри.

  4. На этой виртуальной машине установите те же пакеты, что и на этой автономной машине:

    sudo xargs apt install -y < список _из _packages.txt

  5. теперь загрузите пакеты, которые вы хотите установить (скажем,libreoffice) в ВМ:

    sudo apt install --загрузить только --и libreoffice

  6. теперь скопируйте загруженные пакеты, то есть полное содержимое папки /var/cache/apt/archivesна флешку.

  7. Запустите sudo apt install -y libreofficeна онлайн-компьютере (, который уже загрузил все файлы

  8. На автономном компьютере

    cd /путь/к/вашей/флешке/папке/содержащей/файлы sudo dpkg -я *.deb

  9. Готово. В следующий раз вы можете начать с шага 5, потому что на автономном компьютере теперь должны быть точно такие же файлы, как и на онлайн-компьютере.

1
28.07.2021, 11:25

Теги

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