Вероятно, вам не нужен grub
. Дело в том, что ваша прошивка UEFI - это ваш системный загрузчик - он уже есть. Когда вы загружаетесь через grub
, то на самом деле загрузчики chainload - это ненужная избыточность. Я использую rEFInd
- это только boot manager - он просто позволяет выбрать, что загружать, а затем перенаправляет обратно в прошивку и прошивка делает загрузку. Это не более чем меню.
Это хорошо, потому что ядро linux само по себе EFI исполняемый двоичный файл - вы можете загрузить linux без какого-либо менеджера загрузки/загрузчика, просто выполнив его из прошивки. Я бы тоже порекомендовал эту опцию, но она не так гибка, как промежуточный менеджер меню вроде rEFInd
, потому что вы должны полагаться на разработчиков микропрограмм для обеспечения такого интерфейса - и это может быть не так уж и просто. Но если вам интересно заглянуть в интерфейс efibootmgr
- это потребует установки постоянных переменных прошивки.
Ниже приведено руководство по использованию сначала dd
, а затем gdisk
, чтобы убедиться, что у вас есть загрузочный системный раздел EFI.
Для того, чтобы таблица разделов была полностью ясна перед началом, вы должны записать на этот диск несколько очень ранних блоков:
dd ibs=4M count=1 if=/dev/zero of=/dev/${USB_DISK}
Теперь мы попадаем в gdisk
. Замените все, что /dev/....
файл устройства, на котором находится ваш usb диск для /dev/${USB_DISK}
:
gdisk /dev/${USB_DISK}
GPT fdisk (gdisk) version 0.8.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries.
Command (? for help): ?
Используйте ?
, чтобы меню сначала просмотрело все опции, но сначала нужно записать чистую таблицу разделов GPT: o
:
...
Proceed? (Y/N): y
Далее вам понадобится EFI-системный раздел. Используйте команду n
для создания n
ew раздела. В нижеприведенных подсказках, где вы не видите введенного ключа, я просто нажал ENTER
, чтобы согласиться со значением по умолчанию:
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-1331166, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-1331166, default = 1331166) or {+-}size{KMGTP}: 500M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00
Если вы нажмете L
в последнем приглашении выше, вы получите список всех доступных типов разделов, но что вам нужно, так это ввести ef00
для efi системного раздела. Сделайте n
снова столько раз, сколько нужно для создания других разделов, которые могут понадобиться для /
или подкачки, или чего угодно. Опять же, используйте L
для просмотра различных типов, но по умолчанию 8300 должен работать для всех, кроме swap.
Взгляните на новую таблицу разделов с помощью p
, затем следуйте за ней с помощью w
, если вам нравится, чтобы она выглядела так, чтобы записать ожидаемые изменения:
...
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
Теперь создайте толстую
файловую систему на вашем EFI-разделе. -n
называет раздел. Я люблю использовать ESP
:
mkfs.vfat -n ESP /dev/${USB_DISK}1
mkfs.fat 3.0.26 (2014-03-07)
Используйте mkfs.${желаемый_файл_системы}. /dev/${USB_DISK}[num]
для всех остальных разделов, которые вам могут понадобиться. Лучше всего, если вы используете эту файловую систему --help
, чтобы узнать, как указать метку GPT для раздела.
Получите refind.bin.*.zip
и найдите здесь , затем распакуйте его на диск и установите системный загрузчик:
mkdir /tmp/refind
unzip ~/Downloads/refind-bin-0.7.9.zip -d $_
...
$_/ref*/install.sh --usedefault /dev/${USB_DISK}
Not running as root; attempting to elevate privileges via sudo....
Installing rEFInd on Linux....
UnmountEsp = 1
Copied rEFInd binary files
Copying sample configuration file as refind.conf; edit this file to configure
...
Теперь у вас есть системный загрузчик. После установки linux-системы на диск вам нужно будет сделать следующее:
mkdir -p /mnt/bootdisk/
mount /dev/${USB_DISK}1 /mnt/bootdisk
mkdir -p /mnt/bootdisk/EFI/kali_linux/
cp ${kali_root}/boot/vmlinuz-* \
/mnt/bootdisk/EFI/kali_linux/
cp ${kali_root}/boot/initrd-* \
/mnt/bootdisk/EFI/kali_linux/
printf %s\\n "LABEL=${GPT_LABEL} /esp vfat defaults 0 1" \
"/esp/EFI/kali_linux /boot none bind,defaults 0 0" \
| sudo tee -a /etc/fstab
mkdir /esp
mount -a
Это почти готово. Вам нужно будет немного настроить rEFInd
. Замените метку GPT вашей корневой файловой системы на ${GPT_LABEL}
ниже:
echo '"Kali" "root=LABEL=${GPT_LABEL} rootwait"'\
>/mnt/bootdisk/EFI/kali_linux/refind_linux.conf
Это должно дать вам загрузочную систему. Пожалуйста, просмотрите главный refind.conf
в .../BOOT
- он очень хорошо прокомментирован и сам по себе довольно много документов. Вы также захотите зайти на rodsbooks.com и прочитать там документы.
umask
работает, только если он запускается встроенной командой.
Не вызывайте скрипт по имени, а вызовите .script
, чтобы он был выполнен текущим процессом оболочки.
Если вас смущает значение, выводимое как 0022
вместо 022
, то разницы нет, эти значения идентичны.
Попробуйте использовать POSIX umask -S
, чтобы получить более понятный вывод.