我希望 kubuntu 在启动时询问我 - 我想要使用哪个配置文件。应该有一个默认答案,它会在 3 秒内自动运行。就像 Grub 询问您想要启动哪个操作系统一样。
有多个启动选项的理由:通常我默认启动很多东西:krusader、firefox、konsole、emacs……因此完全加载大约需要 1 分钟。但有时 - 我正在奔波,只需要做某件事 - 所以我只需要 krusader。我会制作几个启动脚本……所以我想知道 - 是否可以在启动时在它们之间进行选择?
也许可以使用 Grub 来实现...
编辑:
Grub 根本没有询问我启动配置文件 - 甚至不是“正常模式”或“恢复模式”。我让他用 Grub Editor(该软件包名为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秒内自动选择默认启动项”。
此后,蚓状解决方案 我已将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
由启动 bash 脚本拾取。
就是这样。现在我有 5 个启动配置文件:清洁、恢复、完整、公共、最快。
答案1
您可以在启动时运行以下脚本:
#!/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
在...的帮助下@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
...行尾的数字必须是所选的配置文件。
步骤 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