несколько сценариев запуска?

Я хочу, чтобы kubuntu спросил меня при запуске - какой из профиля я хочу использовать. Должен быть ответ по умолчанию, который должен работать автоматически через 3 секунды. Как, если бы была Личинка, спрашивая Вас, какую операционную систему требуется запустить.

Рациональное, чтобы иметь несколько опций запуска: обычно у меня есть много вещей, запускающихся по умолчанию: участник общественной кампании, Firefox, консоль, emacs... Таким образом, полная загрузка занимает приблизительно 1 минуту. Но иногда - я нахожусь в бегах, и потребность только, чтобы сделать некоторую единственную вещь - таким образом, мне будет нужно только, говорит участник общественной кампании. I'd've сделал несколько сценариев запуска... Таким образом, я задаюсь вопросом - действительно ли возможно выбрать между ними при запуске?

Возможно, это могло быть сделано с Личинкой...

Править:

Личинка не сделала спросил меня о профиле запуска вообще - который даже не является "Нормальным режимом" или "Режимом Recovery". Я заставил его сделать это с Редактором Личинки (пакет называют kcm-grub2):

sudo sed -i '$ a\deb http://download.opensuse.org/repositories/home:ksmanis/xUbuntu_11.10/ /' /etc/apt/sources.list
wget -q http://download.opensuse.org/repositories/home:ksmanis/xUbuntu_11.10/Release.key -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install kcm-grub2

После установки и перезапуска, в System settings -> Startup and Shutdown новый объект появился: Grub2 Bootloader. Там - я проверил, "Автоматически выбирают запись загрузки по умолчанию через 3 секунды".

После этого после lumbric решения я скопировал gnu-linux menuentry запись в конец /etc/grub.d/40_custom, и добавьте "профиль производительности" там. Вот текст измененного 40_custom:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Full' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        set gfxpayload=$linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root 392f79ba-0f1f-422f-ac76-11860e0f4869
        linux   /boot/vmlinuz-3.0.0-16-generic root=UUID=392f79ba-0f1f-422f-ac76-11860e0f4869 ro   quiet splash vt.handoff=7 productivity-profile=1
        initrd  /boot/initrd.img-3.0.0-16-generic
}
menuentry 'Public' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        set gfxpayload=$linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root 392f79ba-0f1f-422f-ac76-11860e0f4869
        linux   /boot/vmlinuz-3.0.0-16-generic root=UUID=392f79ba-0f1f-422f-ac76-11860e0f4869 ro   quiet splash vt.handoff=7 productivity-profile=2
        initrd  /boot/initrd.img-3.0.0-16-generic
}
menuentry 'Fastest' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        set gfxpayload=$linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='(hd0,msdos1)'
        search --no-floppy --fs-uuid --set=root 392f79ba-0f1f-422f-ac76-11860e0f4869
        linux   /boot/vmlinuz-3.0.0-16-generic root=UUID=392f79ba-0f1f-422f-ac76-11860e0f4869 ro   quiet splash vt.handoff=7 productivity-profile=3
        initrd  /boot/initrd.img-3.0.0-16-generic
}

productivity-profile взят сценарием удара Запуска.

Именно. Теперь у меня есть 5 профилей запуска: Чистый, Восстановление, Полное, Общедоступное, Самое Быстрое.

1
задан 13 April 2017 в 15:25

2 ответа

Можно запустить следующий скрипт на запуске:

#!/bin/bash

echo 'Press a key...'
echo '[1] Full profile (default)'
echo '[2] whatever 2'
echo '[3] another one'

read -t 3 -n 1 -p "Choose profile: " profile

echo

case $profile in
   1)
      # Run script for profile 1
      ./script-profile1.sh
      ;;
   2)
      # Run script for profile 1
      ./script-profile2.sh
      ;;
   3)
      # Run script for profile 1
      ./script-profile3.sh
      ;;
   *)
      echo Invalid choice
      ;;
esac

Если Вы хотите, можно включать цикл, так, чтобы он спросил Вас снова в случае недопустимого выбора, или можно программировать его полностью на любимом языке программирования.

Но я соглашаюсь, было бы более хорошо выбрать профиль в начале процесса начальной загрузки. Вы могли включить компьютер, выбрать профиль и затем возвратиться, когда все запускается. Но я не знаю, как использовать параметры от GRUB.

2
ответ дан 13 April 2017 в 15:25

С помощью @Lekensteyn я сделал версию, в которой вы можете выбрать профиль в GRUB. Возможно, создание пользовательского меню еще можно улучшить.

Шаг 1: создание пользовательского меню GRUB

Вам необходимо создать пункты меню GRUB с дополнительным параметром. Вы можете следовать этой инструкции . Поэтому скопируйте запись по умолчанию из /boot/grub/grub.cfg (строки с menuentry ... { ... }) в /etc/grub.d/40_custom.

Затем отредактируйте (скопированная запись в /etc/grub.d/40_custom) строку, в которой написано linux /boot..., и добавьте в и и строку, разделенную пробелом:

productivity-profile=1

Вы также можете редактировать имя пункта меню, поэтому измените деталь menuentry 'Ubuntu, with... на что-то вроде menuentry 'Ubuntu (Profile 1), with....

Добавьте такой пункт меню для каждого из ваших профилей (с уникальным номером каждый).

Вы можете удалить разрешения на выполнение из других файлов в /etc/grub.d/, чтобы удалить эти пункты меню. Не забудьте запустить sudo update-grub потом.

Обратите внимание, что после обновления ядра вам придется изменить меню grub вручную, если вы будете следовать этим инструкциям! (Вы можете улучшить этот ответ и описать, как соответствующим образом редактировать сценарии в /etc/grub.d/ .´)

Шаг 2: проверить, был ли шаг 1 успешным

Перезагрузиться и выбрать один из профилей. Затем запустите в терминале:

cat /proc/cmdline 

Вы должны получить что-то вроде:

BOOT_IMAGE=/boot/vmlinuz-2.6.... root=...  productivity-profile=2

... где число в конце строки должно быть выбранным профилем. [ 1128]

Шаг 3: Примите скрипт под свои нужды и запустите его при запуске

Затем используйте этот скрипт для запуска скриптов запуска:

#!/bin/bash    

profile=$(cat /proc/cmdline |sed 's/.*productivity-profile=\([0-9]\).*/\1/g')

echo Running profile $profile ...

case $profile in
   1)
      # Run script for profile 1
      ./script-profile1.sh
      ;;
   2)
      # Run script for profile 1
      ./script-profile2.sh
      ;;
   3)
      # Run script for profile 1
      ./script-profile3.sh
      ;;
   *)
      echo Error
      ;;
esac
0
ответ дан 13 April 2017 в 15:25

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

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