骑士注册 登录
Linux 中国◆开源社区 返回首页

7th的个人空间 https://linux.cn/space/10161 [收藏] [复制] [分享] [RSS]

日志

RHEL/CENTOS急救之BOOT分区迁移

已有 4895 次阅读2013-10-09 23:54 |个人分类:LINUX记录|

起因:使用kvm安装了一个虚拟机,发现没有剩下的分区来做实验,结果就开始想要腾出一个分区。装的时候只分来/boot(/dev/vda1)/ (/dev/vda3)swap(/dev/vda2)三个分区(swap就算了留着做实验用,那就只能动/boot分区了)

分区挂载情况:

root@rhel6 ~]# df -h

文件系统容量已用可用已用%% 挂载点

/dev/vda3 20G 3.5G 15G 19% /

tmpfs 499M 0 499M 0% /dev/shm

/dev/vda1 194M 29M 156M 16% /boot

 

 

[root@rhel6 ~]# cat /etc/fstab:

#

# /etc/fstab

# Created by anaconda on Mon Oct 7 15:02:13 2013

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=82ea6657-8716-47df-8b43-23adb5d8eaa4 / ext4 defaults 1 1

UUID=82ea6657-8716-47df-8b43-23adf5efdeab5 /boot ext4 defaults 1 1

/dev/vda2 swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

 

JUST DO IT !!!!!!!!

Linux是怎么开机的?

系统启动流程图

(图是网上找的哈)

BootLoader会去加载/boot/grub/grub.conf这个文件

修改前的grub.conf

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/vda3

# initrd /initrd-[generic-]version.img

#boot=/dev/vda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

#hiddenmenu

title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)

root (hd0,0)

Kernel/vmlinuz-2.6.32-358.el6.x86_64roroot=UUID=82ea6657-8716-47df-8b43-23adb5d8eaa4rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-358.el6.x86_64.img

 

(hd0,0)表示分区的位置,第一个0表示是第几块硬盘,第二个0表示第几个分区,现在要将boot放到/ 分区下,而/ 分区是在vda3 所以硬件改是(hd0,2)

修改成:

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/vda3

# initrd /initrd-[generic-]version.img

#boot=/dev/vda

default=0

timeout=5

splashimage=(hd0,2)/boot/grub/splash.xpm.gz

#hiddenmenu

title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)

root (hd0,2)

kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=82ea6657-8716-47df-8b43-23adb5d8eaa4 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet

initrd /boot/initramfs-2.6.32-358.el6.x86_64.img

 

boot分区里面的文件拷贝出来:

[root@rhel6 ~]# umount /booot

[root@rhel6 ~]# mkdir /boot_source

[root@rhel6 ~]# mount /dev/vda1 /boot_sourcej

[root@rhel6 ~]# mv /boot_source/* /boot/

修改fstab文件,不要让/dev/vda1自动挂载到/boot

[root@rhel6 ~]# vim /etc/fstab:

#

# /etc/fstab

# Created by anaconda on Mon Oct 7 15:02:13 2013

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

UUID=82ea6657-8716-47df-8b43-23adb5d8eaa4 / ext4 defaults 1 1

#UUID=82ea6657-8716-47df-8b43-23adf5efdeab5 /boot ext4 defaults 1 1

/dev/vda2 swap swap defaults 0 0

tmpfs /dev/shm tmpfs defaults 0 0

devpts /dev/pts devpts gid=5,mode=620 0 0

sysfs /sys sysfs defaults 0 0

proc /proc proc defaults 0 0

 

一切准备就绪,重启,结果就悲催了:

难道是grub.conf修改错误了,手动输入:

 

结果还是不行,查看报错原来是BootLoader的问题。虽然配置文件修改了,但是BootLoader还是会去hd0,0这配置文件。因此需要重装grub,创建分区的MAP

现在系统没有办法启动来,只能用光盘(ISO镜像急救了)

continue可以进入到一个急救的shell,提示现在的系统是被挂载到/mnt/sysimage

 

start shell:

一定要切换/

bash-4.1 # chroot /mnt/sysimage

sh-4.1 # grub-install /dev/vda

sh-4.1 # exit

bash-4.1 # reboot

 

 

重启后,系统会去检测,等待就可以了,检测完成后会自动重启:

 

 

 

有时候boot分区损坏需要修复也差不多是这个思路,grub生成MAP可以使用grub-install ,initrramfs可以使用mkinitrd命令生成,但是内核vmlinuz就需要重新去编译内核了。

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。