Я хочу, чтобы 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 профилей запуска: Чистый, Восстановление, Полное, Общедоступное, Самое Быстрое.
Можно запустить следующий скрипт на запуске:
#!/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.
С помощью @Lekensteyn я сделал версию, в которой вы можете выбрать профиль в 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/
.´)
Перезагрузиться и выбрать один из профилей. Затем запустите в терминале:
cat /proc/cmdline
Вы должны получить что-то вроде:
BOOT_IMAGE=/boot/vmlinuz-2.6.... root=... productivity-profile=2
... где число в конце строки должно быть выбранным профилем. [ 1128]
Затем используйте этот скрипт для запуска скриптов запуска:
#!/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