GRUB2 - создайте вторую загрузочную запись с различными параметрами командной строки ядра в GRUB_CMDLINE_LINUX_DEFAULT

Система -> Администрирование -> Источники программного обеспечения -> Обновления (вкладка) -> Проверить наличие обновлений: [Ежедневно | Каждые два дня | Еженедельно | Каждые две недели]

0
задан 30 June 2019 в 22:33

2 ответа

Два способа:

  1. Быстрый, простой и с графическим интерфейсом: установите grub-customizer.

sudo apt update && sudo apt install grub-customizer

  1. Перейдите в /etc/grub.d/proxifiedScripts и добавьте пользовательскую запись с именем custom1 (вы можете скопировать конфигурацию из записи по умолчанию в / boot / grub / grub .cfg)

    cd /etc/grub.d/proxifiedScripts sudo leafpad custom1 & amp;

Например, запись custom1 может выглядеть следующим образом, и вы можете настроить параметры загрузки по умолчанию в строке, которая начинается с linux

menuentry "Custom Gnu/Linux"{
    load_video
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5' [YOUR CORRESPONDING ROOT LOCATION]
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=[YOUR CORRESPONDING ROOT LOCATION] --hint-efi=[YOUR CORRESPONDING ROOT LOCATION] --hint-baremetal=ahci0,msdos5  [UUID of / partition]
    else
      search --no-floppy --fs-uuid --set=root [UUID]
    fi
    echo    'Loading Linux custom1 ...'
    linux   /boot/[your vmlinuz] root=UUID=[UUID] ro initrd=/install/gtk/initrd.gz quiet splash acpi_osi=linux
    echo    'Loading initial ramdisk ...'
    initrd  /boot/[your initrd.img]
}

Затем вам нужно отредактировать (или создать, если его там нет) 40_custom_proxy в /etc/grub.d/ t

#!/bin/sh
#THIS IS A GRUB PROXY SCRIPT
'/etc/grub.d/proxifiedScripts/custom1' | /etc/grub.d/bin/grubcfg_proxy "-*
-#text
+'Custom1 Gnu/Linux'~f993006fab178e9acbf3ae439d2495c0~

и, наконец, запустите sudo grub-mkconfig и sudo update-grub

Однако я бы порекомендовал вариант 1, так как он чище, быстрее и проще.

0
ответ дан 30 June 2019 в 22:33

Я решил эту проблему, перезапустив /etc/grub.d/10_linux из /etc/grub.d/40_linux и выбрав пункт меню.

Первая часть - /etc/grub.d/40_linux

#!/bin/sh
. /etc/default/grub
export GRUB_DISABLE_RECOVERY=true
export GRUB_DISABLE_SUBMENU=y
export GRUB_CMDLINE_LINUX_DEFAULT=$GRUB_CMDLINE_LINUX_DEFAULT_ALT
/etc/grub.d/10_linux | python3 /usr/local/bin/extract-menuentry.py

Итак, я могу перезапустить 10_linux с помощью альтернативной командной строки.

Вставьте GRUB_CMDLINE_LINUX_DEFAULT_ALT в / etc / default / grub. (В моем случае, «aufs = tmpfs»)

И написал скрипт на python, чтобы выбрать пункт меню. (в моем случае это /usr/local/bin/extract-menuentry.py).

#!/usr/bin/env python3
import os, sys, re

menuentry_start = "menuentry"

def extract_menuentry(infile):
  in_menuentry = False
  for line in infile.readlines():
    if in_menuentry:
      if line.strip() == "}":
        in_menuentry = False
        print(line.rstrip())
        pass
      else:
        print(line.rstrip())
        pass
      pass
    else:
      if line.startswith(menuentry_start):
        in_menuentry = True
        match = re.search(r"menuentry '[^']+' (.*)", line)
        print("menuentry '%s' %s" % (os.environ.get('GRUB_ALT_NAME', 'Ubuntu alt'), match.group(1)))
        pass
      pass
    pass
  pass


if __name__ == "__main__":
  extract_menuentry(sys.stdin)
  pass
0
ответ дан 30 June 2019 в 22:33

Другие вопросы по тегам:

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