Поскольку set
имеет вывод, а which set
ничего не возвращает, вы знаете, что это часть используемой оболочки, скорее всего, bash.
man bash упоминает его много раз, но проще дать ссылку на него в онлайновой документации.
Эта встроенная функция настолько сложна, что заслуживает отдельного раздела. set позволяет вам изменять значения опций оболочки и устанавливать позиционные параметры, или отображать имена и значения переменных оболочки переменных.
set имеет спецификацию вызова:
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument …]
set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument …]
так что если вы хотите найти его в man в командной строке, вы можете искать с
/set.*abef
Предполагая, что вы используете grub2, самый важный файл конфигурацииgrub.cfg
(обычно находится в каталоге /boot/grub
для систем на основе BIOS и /boot/efi/EFI/<os name>/
для систем efi ). Когда компьютер запускается, grub следует инструкциям из этого файла. Это всего лишь текстовый файл, поэтому вы можете редактировать его вручную или использовать какой-либо автоматический инструмент (сценарий оболочки )grub-mkconfig
(, также известный как grub2-mkconfig
), который создает конфигурацию в соответствии с правилами, определенными в файле /etc/default/grub
и /etc/grub.d/
. каталог.
В любом случае, если вы изменили корневой раздел, нужно позаботиться о нескольких вещах. Во-первых, на параметры ядра Linux :grub напрямую не влияет корневой раздел, но ему нужно передать правильный путь к ядру, поэтому ищите строку, подобную этой
linux /vmlinuz-4.19.5 root=/dev/sda1
и измените его на /dev/sda2
.
Его также можно передать в виде UUID:
linux /vmlinuz-4.19.5 root=UUID=abcdefgh-ijkl-mnop-qrst-uvwxyz
Вы можете проверить корневой UUID с помощью команды grub:
grub-probe --target=fs_uuid /
Второе, что нужно проверить/изменить, это сам файл ядра. Он может находиться на отдельном разделе (, обычно /boot
), или на корневом (/
). В последнем случае вам нужно искать строку
set root='hd0,gpt1'
и измените gpt1
на gpt2
. (Здесь я предположил, что у вас есть только один диск hd0
и вы используете таблицу разделов GUID, стандарт в настоящее время ).
В зависимости от вашей конфигурации вам также может понадобиться изменить UUID файловой системы и строку подсказки, чтобы найти правильный путь к ядру.Это может выглядеть так
search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt1' --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1 abcd-efgh
search --no-floppy --fs-uuid --set=root abcd-efgh
Новый UUID, который вы уже знаете, используйте grub-probe --target=hints_string /
, чтобы найти правильное значение строки подсказок -.