- 浏览: 1488020 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (525)
- SEO (16)
- JAVA-EE-Hibernate (6)
- JAVA-EE-Struts (29)
- JAVA-EE-Spring (15)
- Linux (37)
- JAVA-SE (29)
- NetWork (1)
- CMS (14)
- Semantic Research (3)
- RIA-Flex (0)
- Ajax-Extjs (4)
- Ajax-Jquery (1)
- www.godaddy.com (0)
- SSH (34)
- JavaScript (6)
- SoftwareEngineer (9)
- CMMI (0)
- IDE-Myeclipse (3)
- PHP (1)
- Algorithm (3)
- C/C++ (18)
- Concept&Items (2)
- Useful WebSite (1)
- ApacheServer (2)
- CodeReading (1)
- Socket (2)
- UML (10)
- PowerDesigner (1)
- Repository (19)
- MySQL (3)
- SqlServer (0)
- Society (1)
- Tomcat (7)
- WebService (5)
- JBoss (1)
- FCKeditor (1)
- PS/DW/CD/FW (0)
- DesignPattern (11)
- WebSite_Security (1)
- WordPress (5)
- WebConstruction (3)
- XML|XSD (7)
- Android (0)
- Project-In-Action (9)
- DatabaseDesign (3)
- taglib (7)
- DIV+CSS (10)
- Silverlight (52)
- JSON (7)
- VC++ (8)
- C# (8)
- LINQ (1)
- WCF&SOA (5)
- .NET (20)
- SOA (1)
- Mashup (2)
- RegEx (6)
- Psychology (5)
- Stock (1)
- Google (2)
- Interview (4)
- HTML5 (1)
- Marketing (4)
- Vaadin (2)
- Agile (2)
- Apache-common (6)
- ANTLR (0)
- REST (1)
- HtmlAnalysis (18)
- csv-export (3)
- Nucth (3)
- Xpath (1)
- Velocity (6)
- ASP.NET (9)
- Product (2)
- CSS (1)
最新评论
-
lt26w:
理解成门面模式应该比较容易明白吧
FacadePattern-Java代码实例讲解 -
lt26w:
看下面的例子比较明白.
FacadePattern-Java代码实例讲解 -
javaloverkehui:
这也叫文档,别逗我行吗,也就自己看看。
HtmlCleaner API -
SE_XiaoFeng:
至少也应该写个注释吧。
HtmlCleaner API -
jfzshandong:
...
org.springframework.web.filter.CharacterEncodingFilter 配置
grub2基础教程-修订版
smallapple
目录
一、 grub2 新特性
1
、
grub2
和
grub
有很多不同的地方
:
a
)图形接口
b
)使用了模块机制,通过动态加载需要的模块来扩展功能
c
)支持脚本语言,例如条件判断,循环、变量和函数
d
)支持
rescue
模式,可用于系统无法引导的情况
e
)国际化语言。包括支持非
ASCII
的字符集和类似
gettext
的消息分类,字体,图形控制台等等
f
)有一个灵活的命令行接口。如果没有配置文件存在,
GRUB
会自动进入命令模式
g
)针对文件系统、文件、设备、驱动、终端、命令、分区表、
os loder
的模块化、层次化、基于对象的框架
h
)支持多种文件系统格式
i
)可访问已经安装的设备上的数据
j
)支持自动解压
2
、设备的命名
grub2
同样以
fd
表示软盘,
hd
表示硬盘(包含
IDE
和
SCSI
硬盘)。设备是从
0
开始编号,分区则是从
1
开始,主分区从
1-4
,逻辑分区从
5
开始,而
grub
分区编号是从
0
开始的。下面给出几个例子 :
(fd0)
:表示整个软盘
(hd0,1)
:表示
BIOS
中的第一个硬盘的第
1
个分区
(hd0,5)/boot/vmlinuz
:表示
BIOS
中的第一个硬盘的第一个逻辑分区下的
boot
目录下的
vmlinuz
文件
1 、安装 ubuntu9.10 时, grub 默认安装在第一硬盘( hd0 )的 mbr ,其实就是把引导文件 boot.img 写入硬盘的 mbr ,当然,用户也可以选择不写入硬盘 mbr 而是写入 linux 分区的引导扇区。启动时根据 mbr 所提供信息找到启动分区后,加载分区内的 grub 核心文件 core.img 和配置文件 grub.cfg ,进入选择菜单画面,在菜单画面,按上下箭号选择需要系统菜单项,按 Enter 进入选项。
按 e 进入己选择菜单的编辑状态,在编辑状态下,由上下左右箭号来移动光标, enter 键换行, ctrl+x 以编辑的内容启动, ctrl+c 进命令行状态,按 Esc 退出,回到菜单项。
在需要使用额外的内核参数启动时,比如要加上 acpi=off 时,把光标移动到 linux 这一行最后,在 splash 后加上一空格再输入 acpi=off ,然后按 ctrl+x 启动。
按 c 进入命令行状态,按 Tab 键可查看所有可用的命令。
在命令行状态,可以根据需要加载或移除相应模块,也可用来启动在菜单没有显现的的系统。
比如,在第一硬盘的第一分区上装有 windows xp 系统,但在菜单上没显示出来,我们可以命令行状态下输入命令启动:
grub>set root=(hd0,1)
grub>chainloader +1
grub>boot
又比如启动第二硬盘第一逻辑分区上的 ubuntu 系统:
grub>set root=(hd1,5)
grub>linux /boot/vmlinuz-xxx-xxx root=/dev/sdb5
grub>initrd /boot/initrd.img-xxx-xxx
grub>boot
其中内核 vmlinuz 和 initrd.img 的版本号可用按 Tab 键自动查看。
2 、下面介绍下在 grub2 中一些常用的命令
1)help
查看命令用法,如
help search
:查看
search
命令详细用法
2)set
设置变量值,如
set default=0
set timeout=5
set root=(hd0,3) 等等
需要调用变量 AA 的值时,使用 ${AA} ,如 set root=(hd1,1) ,则 ${root}=(hd1,1)
3)default
定义默认引导的操作系统。 0 表示第一个操作系统, 1 表示第 2 个,依此类推
4)timeout
定义在时间内用户没有按下键盘上的某个按键,自动引导 default 指定的操作系统。
5)root
指定用于启动系统的分区。
6)insmod 和 rmmod
加载或移除某模块,如
insmod jpeg
insmod png
insmod ntfs
rmmod png
等
7)drivemap
drivemap
兼容
grub
的
map
,主要用于只能从第一硬盘
(hd0)
引导启动的系统如
win2000 xp 2003
,比如要添加第二硬盘第一分区上的
xp
系统:
menuentry "Windows XP" {
set root=(hd1,1)
drivemap -s (hd0) ${root}
chainloader +1
}
8)ls
列出当前的所有设备。如
(hd0)
,
(hd0,1)
,
(hd0,5)
,
(hd1)
,
(hd1,1)
,
(hd1,2)
等
ls -l
详细列出当前的所有设备。对于分区,会显示其
label
及
uuid
。
ls /
列出当前设为
root
的分区下的文件
ls (hd1,1)/
列出
(hd1,1)
分区根目录的文件
9)search
search -f /ntldr
列出根目录里包含
ntldr
文件的分区,返回为分区号
search -l LINUX
搜索
label
是
LINUX
的分区。
search --set -f /ntldr
搜索根目录包含
ntldr
文件的分区并设为
root
,注意如果多个分区含有
ntldr
文件,
set 失去作用。
10)loopback
loopback
命令可用于建立回放设备,如
loopback lo0 (hd1,1)/abc.iso
可以使用
lo0
设备来访问
abc.iso
里的内容,比如说,可以从
abc.iso
里的软盘映像中启动
loopback lo0 (hd1,1)/aa.iso
linux (lo0)/memdisk
initrd (lo0)/abc.img
要删除某一回放设备,可以使用
-d
参数:
loopback -d lo0
11)pager
分页显示。
set pager=1
显示满一页时暂停,按
space
继续
set pager=0
取消分页显示
12)linux
用
linux
命令取代
grub
中的
kernel
命令
13)chainloader
调用另一个启动器,如
chainloader (hd0,1)+1
调用第一硬盘第一分区引导扇区内的启动器,可以是 windows 或 linux 的启动器
三、 grub2 配置文件详解
grub2 改用 grub.cfg 为配置文件,配置文件包含以下基本内容:(红色为解释部分)
### BEGIN /etc/grub.d/00_header ###
load_env
#
加载变量,如果在grubenv
保存变量,则启动时装载
set default="0"
#
设置默认引导项,默认值为0
insmod ext2
#
插入文件系统支持的模块,除了用作启动的分区外,其他分区格式可在menuentry
底下再添加
set root=(hd0,8)
#
指定系统root
分区,也就是 /
分区
search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b
#指定uuid=2d61e5f9-1d2a-4167-a6f1-b991ba00878b的分区为root分区,如果前面的分区号(hd0,8)的#uuid与这里的uuid一致,这两句作用一样,如果不一致,则指定uuid的起作用。
if loadfont /usr/share/grub/unicode.pf2 ; then
#
设置终端字体,unicode.pf2
支持中文字符显示
set gfxmode=640x480
#
设置显示分辨率,默认为640x480
,可用800x600
,1024x768
,建议跟你想设定的图片大小一致
insmod gfxterm
#
插入终端模块gfxterm
,支持中文字符显示和支持24
位图像
insmod vbe
#
插入vbe
模块,GRUB2
引入模块化机制,要使用它,需要在这里加入
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
#
设定grub2
终端为gfxterm
fi
fi
set timeout=10
#
设定默认启动前等待时间,默认为10
秒
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
#
设定菜单字体及背景颜色
set menu_color_highlight=black/blue
#设定选择项字体及背景颜色
#
如果使用默认,背景将完全被蓝色挡住了,需要修改blue
为black
,背景图片才能显示
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
#10_linux为系统自动添加的当前root分区linux引导项
#
每个菜单项要包括menuentry
双引号" "
和大括号{ }
才完整,否则不显示菜单
menuentry "Ubuntu, Linux 2.6.31-10-generic" {
set quiet=1
insmod ext2
set root=(hd0,8)
search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b
#
这句与set root=(hd0,8)
效果一样,可删除其一,二者不一致以这句为准
linux /boot/vmlinuz-2.6.31-10-generic root=UUID=2d61e5f9-1d2a-4167-a6f1-b991ba00878b ro quiet splash
#
不喜欢看到一长串的, roo=UUID=***
可用root=/dev/sda8(/
分区的分区号)
代替
initrd /boot/initrd.img-2.6.31-10-generic
}
…
### END /etc/grub.d/10_linux ###
#20_memtest86+
为系统自动添加的内存测试菜单项
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
#30_os-prober
或30_others
为系统自动查找并添加其他系统菜单项,按windows
,linux
,macos
顺序
#
查找并添加,支持windows 7
识别
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_otheros ###
# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
menuentry "Microsoft Windows XP Professional" {
set root=(hd0,1)
search --no-floppy --fs-uuid --set e852-230b
drivemap -s (hd0) $root
#
对以ntldr
引导的系统如win2000
,xp
,win2003
,因其引导机制只能从第一硬盘启动,系统会自动添加#
映射命令,对vista
和win7
就没有这句命令
chainloader +1
}
### END /etc/
grub.d/30_otheros ###
#40_custom
为自定义的启动项,如启动cdlinux
### BEGIN /etc/grub.d/40_custom ###
menuentry "CDLinux"{
set root=(hd0,8)
linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8
initrd /CDlinux/initrd
}
### END /etc/grub.d/40_custom ###
定制个性化的配置文件,可以加入背景图片,使用中文字符,让启动画面独具特色,而不是单调的黑、白、蓝三色。下面是一张经美化启动画面:
四、脚本修改
系统安装完成后,用户就会发现 /boot/grub/grub.cfg 文件只有 root 权限可读,如果要直接修改 grub.cfg 文件,要先修改其权限。好不容易把 grub.cfg 修改好了,系统内核或 grub 升级时,会自动执行 update-grub , grub.cfg 文件就会被打回原形,如何保证修改后的配置文件能一直保留下来呢?
其实不用修改grub.cfg ,只要把个性化配置写入/etc/default/ 目录下的grub 和/etc/gurb.d 目录下的脚本文件,以后不管升级内核或者是升级grub 所执行的update-grub ,都会按要求创建个性化的grub.cfg 。
1 、首先看下 /etc/default/grub ,先从应用程序-附件里打开终端,输入
sudo gedit /etc/default/grub
用户密码
看看打开的文件可作什么修改:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
GRUB_DEFAULT=0 ->设置默认启动项,按menuentry顺序。比如要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项。
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true ->隐藏菜单,grub2不再使用,不管
GRUB_TIMEOUT="3" ->设置进入默认启动项的等候时间,默认值10秒,按自己需要修改
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" ->添加内核启动参数,这个为默认
GRUB_CMDLINE_LINUX="noresume" ->手动添加内核启动参数,比如 acpi=off noapic等可在这里添加
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console ->设置是否使用图形介面。去除前面#,仅使用控制台终端,不使用图形介面
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480 设定图形介面分辨率,如不使用默认,把前面#去掉,把分辨率改为800x600或1024x768
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true ->设置grub命令是否使用UUID,去掉#,使用root=/dev/sdax而不用root=UUDI=xxx
# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true" ->设定是否创建修复模式菜单项
2、再看下/etc/grub.d目录下的脚本文件:
00_header,05_debian_theme,10_linux,20_memtest86+,30_os-
prober,40_custom这五个脚本对应grub.cfg上的各个部分,有的版本的grub可能把30_os-prober分出另一部分为
30_os-others,这并不影响。怎样修改这些脚本文件才能保证不会破坏update-grub的运行,又能让生成的grub.cfg合乎意愿呢?
其实很简单,只要在脚本文件中找到
cat << EOF
********
********
********
EOF
这类语句,EOF中间的文本会直接写入grub.cfg中相应位置,所以个性化的语句添加在这地方就可以了。
其他使用变量的语句不要随变做修改,除非你清楚修改后会有什么结果。
1)看看00_header,一样在终端中打开sudo gedit /etc/grub.d/00_header,找到这部分
load_env ->加载由save_env保存在grubenv的变量
set default="${GRUB_DEFAULT}" ->使用/etc/default/grub中的设定值
if [ \${prev_saved_entry} ]; then
saved_entry=\${prev_saved_entry}
save_env saved_entry
prev_saved_entry= ->变里设置的变量由下句保存到grubenv
save_env prev_saved_entry
fi ->这里回车添加新行后可插入需要添加的模块
insmod jpeg ->添加背景图片格式支持,如jpeg,png,tga等。
insmod fat ->添加文件系统格式支持如fat,ntfs,也可在menuentry下添加
EOF
再看看最后这一段
if [ \${recordfail} = 1 ]; then
set timeout=-1 ->设定为若有启动失败记录,就显示菜单,需手动选择才能启动选择项
else
set timeout=${GRUB_TIMEOUT} ->使用/etc/default/grub中的设定值
fi ->这行后添加行
background_image (hd0,7)/boot/images/002.jpg ->添加背景图片的绝对路径
EOF
2)05_debian_theme修改字体及背景颜色
先打开文件 sudo gedit /etc/grub.d/05_debian_theme
看这里
set menu_color_normal=white/black ->设置菜单项的字体和背景颜色
set menu_color_highlight=black/white ->设置选择项的字体和背景颜色。
EOF
可供使用菜单颜色有:
black,blue,green,cyan,red,magenta,brown,light- gray,dark-gray,light-blue,light-green,light-cyan,light-red,light- magenta,yellow,white
3)10_linux这部分是自动搜索当前系统,建立当前系统的启动菜单,包括系统头,内核等信息,不要随便修改,要使用个性菜单名,比如中文菜单,可适当添加:
先打开文件 sudo gedit /etc/grub.d/10_linux,找到
menuentry "$1" { ->双引号内可添加个性化字符,$1变量也可改为定值,如改为menuentry "启动 Ubuntu Karmic" {
recordfail=1
save_env recordfail ->如不要保存启动失败记录的,这两句可删除
EOF
if [ "x$3" = "xquiet" ]; then
cat << EOF
set quiet=1
EOF ->启动画面不用splash,要用跳动字符的,这段可删除
个性化菜单项也可在这里修改,即上面的menuenrty "$1"不变,修改下面的数值:
linux_entry "${OS}, Linux ${version}" \ ->可改为 linux_entry "启动 Ubuntu, Linux ${version}"\
"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
quiet
if [ "x${GRUB_DISABLE_LINUX_RECOVERY}" != "xtrue" ]; then
linux_entry "${OS}, Linux ${version} (recovery mode)" \ ->可改为 linux_entry "启动 Ubuntu, Linux ${version} (修复模式)"\
"single ${GRUB_CMDLINE_LINUX}"
fi
注意只修改引号内的字符,前面的menuentry,linux_entry和后面的\不要做修改。
4)20_memtest86+自动添加内存测试启动项
打开文件 sudo gedit /etc/grub.d/20_memtest86+,找到
cat << EOF
menuentry "Memory test (memtest86+)" { ->双引号内可添加个性字符如menuentry "启动 内存测试"
linux16 $MEMTESTPATH
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 $MEMTESTPATH console=ttyS0,115200n8
}
EOF
上面有两内存测试项,可删除其中一个。
5)30_os-prober查找其他分区中存在的系统并建立菜单项,依次为windows,linux,macos。
对于单系统,默认会隐藏菜单,可在这里去掉隐藏
先打开文件 sudo gedit /etc/grub.d/30_os-prober
单ubuntu系统会自动隐藏菜单,要取消隐藏菜单,可把这部份的三个timeout=0改为和/etc/default/grub中的timeout一致,比如timeout=10。
cat <<EOF
if [ \${timeout} != -1 ]; then
if keystatus; then
if keystatus --shift; then
set timeout=-1
else
set timeout=0
fi
else
if sleep$verbose --interruptible 3 ; then
set timeout=0
fi
fi
fi
EOF
else
cat << EOF
if [ \${timeout} != -1 ]; then
if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
set timeout=0
fi
fi
EOF
下面这段自动查找并添加windows、linux和macos启动项,可在menuentry内修改个性字符
windows启动项
for OS in ${OSPROBED} ; do
......
if [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi
......
cat << EOF
menuentry "${LONGNAME} (on ${DEVICE})" { ->比如改为menuentry "启动 Windows XP" {
EOF
linux启动项
linux)
LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
......
if [ -z "${LLABEL}" ] ; then
LLABEL="${LONGNAME}"
fi
cat << EOF
menuentry "${LLABEL} (on ${DEVICE})" { ->比如改为menuentry "启动 Mandriva" {
EOF
macos启动项
macosx)
OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`"
cat << EOF
menuentry "${LONGNAME} (on ${DEVICE})" { ->比如改为menuentry "启动 MacOS" {
EOF
6)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 "启动 Veket" {
set root=(hd0,8)
linux /veket/vmlinuz root=/dev/ram0 PMEDIA=hd
initrd /veket/initrd.gz
}
menuentry "启动 CDLinux" {
set root=(hd0,8)
linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8
initrd /CDlinux/initrd
}
3、把各项脚本修改保存后,在终端执行
sudo update-grub
再执行
sudo gedit /boot/grub/grub.cfg
看看配置文件是不是和你想要的一样了。
如果有不够满意的地方,重新修改下脚本文件,再执行sudo update-grub
4、 ubuntu 和windows 双系统,怎样让系统默认为从windows 启动
在 /etc/grub.d目录中的脚本文件的文件名都是以数字开头,这确定了在执行update-grub时各文件内容被执行的顺序,我们只要把 30_os-prober这个文件名的数字30改为05到10之间的数字即可(没多少可选06、07、08、09),比如改为08_os-prober, 这样创建出来的grub.cfg内的菜单项,windows的排序就会自动在ubuntu之前。
五、使用grub2常见错误及修复方法
1 、双系统,重装windows 引起没有ubuntu 启动项
使用安装版的windows 重装windows 时会改写mbr ,造成grub 丢失,可以用grub4dos 引导进入ubuntu 后修复grub 或用livecd 启动后修复grub 。
1 )用grub4dos 修复ubuntu
先下载最新版的grub4dos ,下载地址 http://nufans.net/grub4dos/ ,如果是 xp 系统,把 grub4dos 压缩包内的 grldr 复制到 C 盘 根目录 下,修改 boot.ini ,在最后加上一行 c:\grldr = "grub4dos" ,
对 于vista/win7系统,把压缩包内的grldr.mbr和grldr复制到C盘根目录下,在C盘自己建立一个boot.ini文件,若有boot隐 藏分区的,先给boot分区分配盘符,再把grldr,grldr.mbr和boot.ini放在boot分区下,boot.ini内容如下:
Win7使用软改激活的请不要使用此方法,否则会造成win7不能启动。
然后在根目录新建一个menu.lst,内容为
timeout 0
default 0
title grub2
find --set-root /boot/grub/core.img
kernel /boot/grub/core.img
boot
(有/boot分区的改为
find –set-root /grub/core.img
kernel /grub/core.img)
重启后选择Grub4Dos会自动转入grub2,从grub2菜单项选择ubuntu启动后,在终端执行
sudo grub-install /dev/sda
将grub装入第一硬盘的mbr,如要装入第二硬盘的mbr把sda改为sdb,第三硬盘为sdc,类推。
至于要把 grub 装到 sda 或 sdb 或 sdc 的 mbr 上,需根据自己情况确定,看看要设置哪一块硬盘为启动盘,就把 grub 装到那块硬盘的 mbr 上。
2)用livecd修复grub
用ubuntu9.10的livecd启动后,打开终端
假如你的ubuntu的 / 分区是sda7,又假如 /boot分区是 sda6,用livecd启动,在终端下输入
sudo -i
mount /dev/sda7 /mnt
mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)
grub-install --root-directory=/mnt /dev/sda
和前面一样,要装入第二硬盘的把sda改为sdb。
如果grub.cfg己丢失,或grub.cfg出现错误,需要重建的继续执行下面操作:
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc
exit
3)用带grub启动的光盘或U盘修复
如果手上有grub启动的工具盘,用工具盘启动,在grub菜单上按c进入命令行状态,
在grub>提示符下输入
grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)
(hdx,y) (显示查找到的分区号)
grub>root (hdx,y)
grub>kernel /boot/grub/core.img (/boot分区的用 kernel /grub/core.img)
grub>boot
执行boot后能转入grub2菜单,启动ubuntu后,再在ubuntu终端下执行
sudo grub-install /dev/sda (或sdb,sdc等)修复grub。
如果ubuntu的启动分区使用ext4格式,要有支持ext4格式的grub才能修复。
4)没安装引导器的 grub4dos引导ubuntu的方法
按第一步的方法使用 boot.ini 建立grub4dos
引导项,自己编写 menu.lst,内容如下
timeout 3
default 0
title Ubuntu 9.10
root (hdx,y) --------> (hd0x,y) 为 /boot分区的分区号
kernel /vmlinuz-xxx-generic root=/dev/sdxy ------->/dev/sdxy 为 / 分区的分区号
initrd /initrd.img-xxx-generic
没 /boot 分区的用
timeout 3
default 0
title Ubuntu 9.10
root (hdx,y)
kernel /boot/vmlinuz-xxx-generic root=/dev/sdxy
initrd /boot/initrd.img-xxx-generic
<span st
发表评论
-
Linux内核源码包的安装及编译zz
2009-12-15 20:58 4266http://my.donews.com/ecco2005/2 ... -
Linux内核Makefile文件(二)
2009-12-15 19:34 2417=== 6 体系Makefile文 ... -
Linux内核Makefile文件(一)
2009-12-15 19:34 1834本文是/Documentation/kbuild/make ... -
Linux加载模块命令
2009-12-15 19:28 2678安装模块insmod *.ko卸载 ... -
linux内核模块编程
2009-12-15 19:25 3556主题: linux内核模块的程序结构--模块加载函数(必须), ... -
编译linux内核~
2009-12-05 22:04 1396小菜鸟第一次编译linux内核。截图太多 。。不方便上传 = ... -
Ubuntu9.10版本没有了menu.lst文件!
2009-12-05 18:00 3115囧~现在都在grub下面配置了。 不过麦斯之前的men ... -
关于信号量与线程互斥锁的区别与实现
2009-11-30 14:37 2390之前一直没有怎么 ... -
Linux信号量线程控制
2009-11-30 14:31 3654线程中互斥锁的使用,达到对共享资源互斥使用。除了使用互斥锁, ... -
信号量和自旋锁
2009-11-29 21:56 1626内核同步措施 ... -
Linux信号量semaphore编程实例
2009-11-29 21:20 6539本例示范Linux信号量的基本用法。该范例使用了两个线程分别对 ... -
Linux获取当前时间
2009-11-29 21:16 3637Linux获取当前时间 ... -
pthread库学习(2): 线程的同步,使用信号量
2009-11-29 20:55 2453先看下面这段程序,主线程创建了三个线程,每个线程中均有一个打印 ... -
信号量的基本思想
2009-11-29 20:17 1455信号量是1965荷兰Dijkstra 为了解决并发进程问题 ... -
多进程通信方式一:管道(PIPE)
2009-11-27 18:29 9074进程通信(IPC)的几种方式及比较 撰文:黄显国08 ... -
进程的管道通信
2009-11-27 18:12 2981实验四 进程的管道通信 ... -
Linux下线程的挂起和恢复
2009-11-27 15:42 3701POSIX的Linux操作系统没有提供线程挂起和恢复的例程,在 ... -
Linux 编程之生成静态连接库
2009-11-27 15:41 1386静态库及动态库的建立 ... -
LInux高级编程 - 线程(Threads)
2009-11-27 15:40 1855LInux高级编程 - 线程(Threads) ... -
Linux下c开发 之 线程通信
2009-11-27 15:39 19301.Linux“线程” 进程与 ...
相关推荐
本书介绍了grub2的新特性、grub2安装与启动、grub2配置文件详解、相关脚本修改、以及grub2常见错误和修复方法。
Grub2基础教程Grub2基础教程Grub2基础教程Grub2基础教程
一、grub2新特性 二、grub2安装与启动 三、grub2配置文件详解 四、脚本修改 五、使用grub2常见错误及修复方法
一、grub2新特性 1、grub2和grub有很多不同的地方: a)图形接口 b)使用了模块机制,通过动态加载需要的模块来扩展功能 c)支持脚本语言,例如条件判断,循环、变量和函数 d)支持rescue模式,可用于系统无法引导的情况 e)...
Grub2基础教程。 一、 grub2 新特性 二、 grub2 安装与启动 三、 grub2 配置文件详解 四、脚本修改 五、使用 grub2 常见错误及修复方法
想要搞清楚grub2,必看此章!详细介绍grub2的各种基本功能与用法!
grub2基础教程 by smallapple
GRUB基础教程.pdf
一、grub2新特性 二、grub2安装与启动 三、grub2配置文件详解 四、脚本修改 五、使用grub2常见错误及修复方法
基础及提高,看完后可以熟练使用grub工具。
系统引导管理器GRUB,基础教程方便使用
Linux基础教程 总目录 Ubuntu18.04LTS安装与优化 Linux基础 Markdown Vim 1. Ubuntu18.04LTS安装与优化 目录 准备 下载光盘映像 启动盘刻录 分区准备 进入BIOS 开始安装 优化 换源 系统美化 更换主题 更换桌面环境...
主讲Linux基本技能(Ubuntu初步、安装、Linux基础、Linux系统简介、命令行、Ubuntu系统简介、软件安装、Xwindow简介、系统管理、简明VIM教程、引导管理器Grub、FAQ)。随着Linux日益强大,越来越多的人接触Linux,但...
Linux 基础;Linux 系统简介;命令行;Ubuntu 系统简介;软件安装;Xwindows 简介;系统管理;系统信息;文件管理;权限管理;压缩解压;搜索;其他;用户管理;进程管理;磁盘和内存管理;网络和硬件管理;简明 VIM...
第2章 文件和磁盘管理. wmv 第3章 常见软件设置和硬件.wmy 第4章 用户和组管理.wmv 第5章 软件包管理.wmv 第6章GRUB引导器. wmv 第7章 Linux中的进程管理.wmy 第8章 远程登录管理.wmv 第9章 TCPIP网络基础. wmv 第10...
目 录 一、Linux基础 5 1.什么是Linux? 5 2.什么是自由软件、GNU和GPL? 5 3.从技术上说,Linux有什么优点? 5 4.我需要学习Linux吗? 5 5.Linux会取代Windows吗?...6.Linux与WindowsNT谁更好...十六、GRUB使用说明 131