Какое ядро перезагрузка загружает?

Я думаю, что многое из него имеет отношение к рекламе производительности. Приложение, записанное на скомпилированном языке (C, C++...), собирается работать чертовски много лучше, чем один записанный на языке сценария (жемчуг, Python...).

Но это также набрасывается на совместимость. Приложение, записанное в языке сценариев, также, вероятно, будет более портативным через архитектуру и OSs с мало ни к какой модификации.

5
16.02.2011, 22:15
2 ответа

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

/etc/default/kexec 

и установка:

  LOAD_KEXEC=false 

С другой стороны, чтобы сохранить kexec активный и иметь его перезагрузка в ядро по Вашему выбору, попробуйте командную строку как это для загрузки желаемого ядра:

 kexec -l /boot/vmlinux --append=root=/dev/hda1 --initrd=/boot/initrd

затем, когда 'kexec-e' позже выполняется, настроенное ядро в kexec строке также будет выполнено. Поскольку я полагаю, что сценарий перезагрузки в конечном счете просто называет 'kexec-e', я полагаю, что изменение ядра должно вступить в силу затем.

4
27.01.2020, 20:39
  • 1
    Просто хотел добавить, что необходимо, вероятно, добавить параметры от командной строки текущего ядра от/proc/cmdline после флага-l. –  apoorv020 17.02.2011, 15:26

Я нашел довольно изящное сообщение здесь. Это содержит сценарий для вызова kexec вручную. Перерегистрация сценария здесь:

    UNAMER=`uname -r` # this checks the version of the kernel 
            #just to save typing

    #This just puts all of the parameters for loading in one place

KPARAMS="-l " # tells kexec to load the kernel

# --append tells the kernel all of its parameters
# cat /proc/cmdline gets the current kernel's command line
KPARAMS=$KPARAMS"--append=\"`cat /proc/cmdline`\" "

# this tells the kernel what initrd image to use
KPARAMS=$KPARAMS"--initrd=/boot/initrd.img-$UNAMER "

# this tells the kexec what kernel to load
KPARAMS=$KPARAMS"/boot/vmlinuz-$UNAMER"

    # Message should end with a newline since kFreeBSD may
    # print more stuff (see #323749)
    log_action_msg "Will now restart"

    if [ -x `locate kexec | grep sbin` ]; then # check for the kexec executable
            kexec $KPARAMS  # load the kernel with the correct parameters
            sync            # sync all of the disks so as not to lose data
            umount -a       # make sure all disks are unmounted
            kexec -e        # reboot the kernel
    fi

    #This next line should never happen.

    reboot -d -f -i
2
27.01.2020, 20:39
  • 1
    Для создания этой работы в Ubuntu необходимо заменить locate с which управляйте и также удалите log_action_msg строка. –  ARH 22.02.2015, 19:32

Теги

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