热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

GRUB惊魂

GRUB惊魂--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
  作者:blue_stone

  前天下了个kde4的liveCD, 在kvm虚拟机里边玩了一下, 感觉还可以, 就打算进一步体验体验, 于是给虚拟机增加了一个硬盘, 然后用liveCD里边的命令吧kde4给装到了虚拟的硬盘中. 虚拟硬盘上建立了2个分区, 一个用作/boot, 一个用作lvm, lvm中建立两个lv, 一个用于swap, 一个用户root. 安装过程一切顺利, 使用起来也很方便. 虽然是在虚拟机里边的硬盘,但比起用LiveCD要强多了(可能是心理感觉), 至少不提示剩余空间不足了.

  我的物理机器磁盘分了8个分区, sda1用做Windows XP的第系统分区, sda2是扩展分区, sda3是一个250M的分区, 用作Debian Linux的boot分区, sda4用作别的Linux的root分区, sda5,sda7用作Windows XP的文件分区.sda6是一个swap分区, sda8是一个pv, 用于Debian Linux的rootvg, 包含了rootlv, swaplv, homelv. sda4上原来安装了一个ubuntu, 刚刚被我删掉, 正好可以用来安装新的KDE4.

  说干就干, 关闭kvm虚拟机, 将物理硬盘作为sdb添加到kvm虚拟机中, 从liveCD引导, 进入命令行, 挂载新旧root分区分别到/tmp/oldroot, /tmp/newroot, 然后运行:

  cd /tmp/newroot
  tar -cpf - -C /tmp/oldroot . |tar -xpf -

  大概花了十多分钟, 数据复制完毕.修改/etc/fstab中root分区的配置信息, 然就将虚拟硬盘上的/boot分区挂载, 复制所有到新root分区的/boot目录下. 这样系统的所有数据就都复制到了物理硬盘的sda4分区上.

  关闭kvm虚拟机, 在Debian中挂载/dev/sda4到/vm, , chroot /vm后试图运行mkinitrd, 报错, 所以决定使用原来的initrd文件启动系统, 在Debian的menu.lst上添加相应条目后重启系统, 但无法进入. 使用debian的kernel(也是2.6.25的), 并指定root=/dev/sda4启动新安装的KDE4, 运行mkinitrd生成新的initrd文件, 就可以使用KDE4自带的内核启动系统了.

  KDE4基于SUSE11, 带有yast, 一个很经典的系统配置工具. 有新锤子在手, 自然想东敲敲西打打. 在使用yast配置grub的时候, 终于祸从锤子出了: 我顺手运行了一下安装boot loader, 结果yast吧grub安装到了sda1上, 也就是Windows XP的系统分区上, 当我试图mount /dev/sda1时报不能识别的分区类型, 而同样是ntfs的/dev/sda5却可以正常挂载.

  进入Debian, 启动vmware, 建立一个虚拟机,硬盘使用物理硬盘, 从xp和win2003安装光盘引导试图进入恢复模式时提示找不到硬盘驱动器. 把物理硬盘添加到一个已经安装好的windows2003虚拟机后, 启动虚拟机, 硬盘认到了, 运行diskprobe时报错, 无奈, 放弃vmware.

  进入Debian, 启动kvm虚拟机, 硬盘使用物理硬盘, cd-rom使用xp的引导盘, 进入挽救模式, 硬盘竟然可以识别, 但是运行dir却什么东西也没有. 进入D:后运行dir却可以正常显示/dev/sda5上的数据, 心一下子凉了一半, 难道我的数据竟然要丢失了?? 死马当活马医生吧, 运行fixboot时提示要修复H:上的引导记录, 有点奇怪, H:是什么东东. 在linux下运行fdisk -l发现/dev/sda4被标记为active, 在挽救模式下运行diskpart也验证了我的观点, H:就是/dev/sda4, 这是因为在windows, 磁盘排序是按照主分区的顺序排, 如果遇到了扩充分区, 就把扩充分区包含的分区全部排进去, 然后接着排剩下的主分区. C:对应sda1, D:对应sda5, 而H:对应sda4. 关闭kvm虚拟机, 运行fdisk, 将sda1设置为boot后重启kvm, 运行fixboot时就提示修复C:上的引导分区了, 运行fixboot后运行fixmbr, 顺便连mbr也给清除了. 重启kvm虚拟机, 从硬盘启动, BIOS过后一阵黑屏幕, 这说明mbr清除成功了, 如果清除不成功的话, 应该出现grub菜单, 马上强制重启kvm虚拟机, 自检过后按F8, 终于出现盼望已久的windows菜单. 说明sda1上的boot记录已经被修复. 关闭kvm虚拟机后, 挂载sda1成功, 并且可以正常查看挂载后的目录, 文件一个未少.

  在Debian中运行grub-install /dev/sda将grub安装到mbr中, 使用kvm虚拟机验证了一下, 然后重启机器, Windows可以正常进入.

  附记:

  1 本文中由于要对物理硬盘进行操作, 所以把物理硬盘给vmware或kvm虚拟机用, 并且有同时在虚拟机中和真实操作系统中对磁盘进行操作(如fdisk), 这样做很危险, 稍有不慎, 就可能导致数据丢失. 但是对于同一个分区或mbr, 同一时间只有一个系统(host os或虚拟机)在对其做写操作, 还是比较安全的.

  2 KDE4 liveCD是一个安装了kde4的suse11, 我的debian是sid的, 内核版本为2.6.25
推荐阅读
  • 主流操作系统简介
    主流操作系统简介子墨居士操作系统理论定义为管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分࿰ ... [详细]
  • i3 处理器_旧机型安装 Linux_64位操作系统
    1.确认CPU是否支持64位首先确认CPU为64位cpu,intelcpu应支持EM64T指令集,amdcpu应支持x86-64指令集; ... [详细]
  • Ubuntu简介Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在” ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 下载地址http:www.kbengine.org这货不错安装在Linux上安装(CentosDebianUbuntuetc.)服务端,请在终端输入:pythonkbenginek ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • 系统安装Debian系统的安装方式和Ubuntu系统的安装方式几乎是一样的,毕竟Ubuntu系统是基于Debian的,就如同CentOS基于Redhat ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • 你知道GPL吗?GPL 没落了吗?
    不久之前我看到了RedMonk的StephenOGrady发了一个关于开源协议的有趣的推特,那个推特里面有这张图。RedmonkBlackDuckLicensing ... [详细]
  • 1.在OpenStack圈子中,有这么一句名言:不要让朋友在生产环境中运行DevStack。但是初学者在没有掌握OpenStackCLI的情况下用devstack安装测试环境还是不 ... [详细]
author-avatar
少少_LV
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有