倒腾硬盘上的资料

我用的电脑上本来有两块硬盘,一块大一点儿的为主盘,/ /boot /usr /var全挂在上面,剩余的空间分成/big1 /big2等大分区存储数据,另外一块小一点的为副盘,主要挂/home,小一点的这块盘是从以前安装ubuntu的电脑的主盘,电脑升级以后,直接调整了一下就挂在/home下用了。

但是最近同事们嫌我这快小一点的硬盘噪音太大了,吵得慌,于是另外找了一块旧硬盘,发现还是有声音,接着再找一块稍微新一点的盘,这回没声音了,但这块硬盘在也用着呢,换下来的话还要找块硬盘顶上,于是,硬盘及需要倒腾的内容如下: 硬盘A 现用主盘,挂着/ /boot /usr /var等,不动 硬盘B 现用副盘,挂着/home,准备撤下,但数据要保留 硬盘C 噪音小一点的旧硬盘,准备用来装硬盘D上的原有数据。 硬盘D 没有噪音的旧硬盘,准备用来更换硬盘B,原有数据备份到硬盘C中。 调整之前电脑1上安装ubuntu系统,挂硬盘A、B,电脑2上安装windows,挂硬盘D; 调整之后电脑1上安装ubuntu系统,挂硬盘A、D,电脑2上安装windows,挂硬盘C。 有点乱,所以要先交代清楚,分区格式之间的不同就不说了,说出来更乱。

首先把硬盘D的东西倒到硬盘C中,直接把硬盘C挂在主机2上,识别出来之后分区,然后把硬盘D上除C:盘之外的内容都拷贝上,C:盘的内容无法直接复制,下载一个ghost,然后用外置光驱启动,运行ghost,采用分区对分区的复制方式把c:盘的内容复制到了硬盘C上。

至此,主机2上的工作基本做完,把硬盘D拆下,把硬盘C换上应该就能够启动原来的系统了。但是由于在ghost的时候需要进cmos修改启动顺序,却又不知道cmos密码,于是——放电,一放电电脑日期成了2000年,ghost之后启动windows xp就卡死在登录屏幕了,无奈只得重装。虽然是自己忘记了修改cmos时间导致的,但winxp的这点限制实在不爽,用户要为反盗版付出多大代价?还不是羊毛出在羊身上?

接下来要在主机1上把硬盘B的内容倒到硬盘D中,但主机2是dell的品牌机,自带硬盘为sata接口,而硬盘B、D都是普通ide接口,只有一条ide连接线,两块硬盘就都连在这一条线上。启动主机1上原来的系统,发现在检查光驱文件分区的时候卡住不动了,原来在fstab中hda还是光驱,现在换成硬盘了,所以启动的时候报错。关机-摘下硬盘D-启动-更改fstab-关机-安上硬盘D,这才好,然后对硬盘D重新分区、拷贝数据。

数据转换完成之后,摘掉硬盘B——可以退伍了,装上硬盘D,fstab按照新的分区划分进行更新,然后重启系统。本来以为一切都没事了,谁知居然提示没有可引导的分区!这会是什么原因呢?硬盘A是在安装ubuntu时进行分区的,/boot也在上面,硬盘D原来是dos的可引导分区,现在删掉换成ext3分区了,难道我摘下的硬盘B反而是引导分区,就因为上一次安装ubuntu时已经设定好了?不管什么原因,现在当务之急是光盘启动,安装grub。在这一点上ubuntu的livecd光盘反倒不太好用,启动过程太漫长了,grub安装参见恢复 Ubuntu 6.06 的 grub 菜单,命令大概为:

mkdir fakeroot mount /dev/sda2 fakeroot ls -l /dev/sda chroot fakeroot mount /dev/sda1 /boot mount /dev/sda3 /usr mknod /dev/sda b 8 0 grub-install /dev/sda

由于原先grub的menu.lst什么的都在,所以安装比较顺利,grub提示有两块硬盘0,0为hdb硬盘D,1,0为sda硬盘A。重启,顺利见到了grub的启动菜单,选择后居然又无法启动,提示文件找不到?能够看到菜单说明grub安装是正常的,文件找不到说明linux内核文件的位置配置不对,经过反复尝试,发现把root(1,0)更改为root(0,0)就能够正常启动了,这个和grub提示的硬盘情况略有不同,原因我也不知道。启动之后修改menu.lst中,把(1,0)全部替换为(0,0),以后启动就完全正常了,看来sata、ide硬盘共存的情况下,先后顺序有可能会变化。

工作基本上都完成了,唯一的遗憾是在备份原先挂/home的硬盘B的数据时,只是用了个cp * -rv,所有的隐藏文件,就是以点.开头的文件都没有拷贝过来,导致所有的设置全部丢失。耗时一天,总结一下,有几点需要注意:

  • cmos放电之后,记得立刻更改cmos日期,否则会导致winxp无法启动(只能重装解决?),linux应该不存在这个问题。
  • 原先挂载光驱的地方如果要换成硬盘,提前把fstab中的光驱挂载项删除,不然启动时会在检查文件系统时卡壳。
  • grub安装不难,首先保证grub安装上,然后有问题再调整linux内核镜像的地址,在sata和ide硬盘共存的情况下注意排列顺序。
  • cp *是不会拷贝dot开头的隐藏文件的,有可能的话,还是cp 上一级目录比较保险,或者补上一个cp .*。
  • 不是用useradd -m创建的用户home目录,里面没有.bash_profile文件,会导致ssh登录到这个主机时.bashrc不起作用,解决方法为复制过来一个即可。

One thought on “倒腾硬盘上的资料”

Leave a Reply

Your email address will not be published. Required fields are marked *