Ваша старая настройка prefix
была prefix=(hd0,msdos1)/grub2
. Это говорит мне о том, что у вас есть отдельная файловая система /boot
в разделе (hd0,msdos1)
, потому что старый префикс не упоминает /boot
и , он работал , пока вы не внесли свои изменения.
Обратите внимание, что GRUB одновременно обращается только к одной файловой системе. :Он не знает и не заботится о том, что (hd0,msdos1)
обычно монтируется под /boot
в Linux. Ему нужна только часть пути, которая фактически является частью этой файловой системы, так как GRUB фактически рассматривает /boot
как корневой каталог для своих собственных нужд. Вот что означает переменная root=hd0,msdos1
. И именно поэтому старый префикс имеет путь просто /grub2
, а не /boot/grub2
.
Указав новый префикс как (hd0,msdos1)/boot/grub2
, вы фактически сказали GRUB взглянуть на то, что будет /boot/boot/grub2
в Linux.
Если вы сделали что-то вроде mv /boot/grub2 /boot/newname
, теперь вы должны использовать set prefix=(hd0,msdos1)/newname
, чтобы префикс отражал новое имя каталога grub2
.
Если вы переместили каталог grub2
из файловой системы /boot
, у вас возникнет более серьезная проблема, поскольку в образе ядра GRUB установлено только минимальное количество модулей для доступа к каталогу grub2
:, если новый location находится на томе LVM или имеет другой тип файловой системы, чем ваша файловая система /boot
, вполне вероятно, что GRUB не сможет его прочитать. Если это то, что вы сделали, вам нужно загрузиться в режиме восстановления с установочного носителя RHEL 7.6, а затем использовать grub-install
для переустановки GRUB, чтобы полностью адаптировать его к новому местоположению :он сначала выберет необходимые модули и запустите grub-mkimage
, чтобы создать новый файл образа ядра GRUB с правильными модулями, затем вставьте его в MBR и блоки диска между MBR и началом первого раздела.
Дополнительную информацию о структуре GRUB см. в предыдущем ответе, который я написал о GRUB .
Что касается apt
стороны дела, то я ничего не знаю; на самом деле apt
и dpkg
делают все возможное, чтобы гарантировать, что система остается в согласованном состоянии, и что, насколько это возможно, изменения, сделанные в выборе пакета , являются «постоянными» (. ] по крайней мере до следующего apt
или dpkg
вызова ).
Есть кое-что, что вы можете сделать, чтобы часть пути :установить пакет, а затем пометить его как установленный автоматически(apt-mark auto
). Таким образом, если ничто другое не зависит (даже слабо )от пакета, он будет удален при следующем запуске apt autoremove
.
Не знаю насчет «какого-либо инструмента командной строки», но кто знает, может быть что-то там есть. Можно подумать, что debootstrap
в chroot на основеtmpfs
-считается временной установкой, но я не думаю, что это действительно то, что вы ищете!