LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 791|回复: 5

使用 dd 批量安装 gentoo 系统

[复制链接]
发表于 2009-3-23 14:59:07 | 显示全部楼层 |阅读模式
最近需要更新几台老系统,找了一下资料,总结一下我的快速安装系统的方法,希望对大家有些帮助。
也希望其他人有更好的方法可以提供出来给我参考一下。
我管理着几十台gentoo系统。每次安装系统都花费不少时间。


一.源机器分区情况:

  hda1 为:boot(启动分区)

  hda2 为:swap(交换分区)

  hda3 为:boot (根 / 分区)

  hda4 为:data (数据盘)



  #fdisk -l /dev/hda

Disk /dev/hda: 11.8 GB, 11811160064 bytes

15 heads, 63 sectors/track, 24411 cylinders

Units = cylinders of 945 * 512 = 483840 bytes

Disk identifier: 0x0eb4a58f



   Device Boot      Start         End      Blocks   Id  System

/dev/hda1   *           1         621      293391   83  Linux

/dev/hda2             622        1680      500377+  82  Linux swap / Solaris

/dev/hda3            1681       10147     4000657+  83  Linux

/dev/hda4           10148       24411     6739740   83  Linux







#cat /etc/fstab

/dev/hda1            /boot         ext2          noauto,noatime       1 2

/dev/hda3            /             ext3          noatime              0 1

/dev/hda2            none          swap          sw                            0 0

/dev/hda4       /data       ext3       noatime          0 1



备份源机器分区(交互分区不用备份):

1.备份启动分区(boot)到数据盘

  dd if=/dev/hda1 | gzip >/data/hda1.gz

2.备份根分区(/) 到数据盘

  dd if=/dev/hda3 | gzip >/data/hda3.gz







二,目标机器:

  1.使用启动盘启动系统

  2.分区:把 boot swap /  这3个分区分成跟源机器一样的大小。

          还有分出一个数据盘来存放 源机器备份下来的文件。

    #mke2fs /dev/hda1

    #mke2fs -j /dev/hda3

    #mke2fs -j /dev/hda4

    #mkswap /dev/hda2 && swapon /dev/hda2

    #mkdir /data

    #mount /dev/hda4 /data

    #cat /etc/fstab

/dev/hda1            /boot         ext2          noauto,noatime       1 2

/dev/hda3            /             ext3          noatime              0 1

/dev/hda2            none          swap          sw                            0 0

/dev/hda4       /data       ext3       noatime          0 1





3.把源机器的备份文件拉到数据盘

  #scp root@192.168.230.132 /data/

  #scp root@192.168.230.132 /data/



4.恢复系统:

  #gzip -dc /data/hda1.gz | dd of /dev/hda1

  #gzip -dc /data/hda3.gz | dd of /dev/hda3



5.grub 使用 dd 恢复系统会造成错误,不能启动,所以必须重新配置一下grub

  #mount /dev/hda3 /mnt/gentoo

  #mount /dev/hda1 /mnt/gentoo/boot

  #mount -t proc proc /mnt/gentoo/proc

  #mount -o bind /dev /mnt/gentoo/dev

  #chroot /mnt/gentoo /bin/bash

  #env-update && source /etc/profile

  >>> Regenerating /etc/ld.so.cache...



# grub

Probing devices to guess BIOS drives. This may take a long time.



grub> root (hd0,0)

Filesystem type is ext2fs, partition type 0xfd



grub> setup (hd0)

Checking if "/boot/grub/stage1" exists... yes

Checking if "/boot/grub/stage2" exists... yes

Checking if "/boot/grub/e2fs_stage1_5" exists... yes

Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.

succeeded

Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/boot/grub/stage2 /boot/

grub/menu.lst"... succeeded

Done.



grub> quit



到此为止,系统已经完全恢复好,重新启动系统。



6.(注意)dd 恢复系统也会造成网卡不能启动:



  启动网卡错误表现:

#/etc/init.d/net.eth0 start

  *Starting eth0

  *   Bringing up eth0

  *     dhcp

  *       network interface eth0 does not exist

  *       Please verify hardware or kernel module (driver)



   查看 /var/log/kennel/Current 日志发现

   Mar 21 12:40:04 [kernel] pcnet32.c:v1.35 21.Apr.2008 tsbogend@alpha.franken.de

Mar 21 12:40:04 [kernel] pcnet32 0000:02:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18

Mar 21 12:40:04 [kernel] pcnet32: PCnet/PCI II 79C970A at 0x2000, 00:0c:29:94:de:df assigned IRQ 18.

Mar 21 12:40:04 [kernel] eth0: registered as PCnet/PCI II 79C970A

Mar 21 12:40:04 [kernel] pcnet32: 1 cards_found.

Mar 21 12:40:04 [kernel] Floppy drive(s): fd0 is 1.44M

Mar 21 12:40:04 [kernel] FDC 0 is a post-1991 82077

Mar 21 12:40:04 [kernel] udev: renamed network interface eth0 to eth1



interface eth0 to eth1 这里有个改名的日志(因为:系统从源电脑备份来的,网卡的mac 记录的是源电脑网卡的mac,跟目标电脑的网卡的mac不匹配,系统会自动识别网卡的mac,并在/etc/udev/rules.d/70-persistent-net.rules 文件中产生一条正确的记录)



A:解决方法一

ls /etc/init.d/

lrwxrwxrwx 1 root root     6 Mar 18 21:54 net.eth0 -> net.lo

-rwxr-xr-x 1 root root 30696 Apr 26  2008 net.lo

并没有 net.eth1 启动文件

#cd /etc/init.d/

#ln -s net.lo net.eth1



重新启动网卡

#/etc/init.d/net.eth1 start  (ok)



B:解决方法二

  编辑:/etc/udev/rules.d/70-persistent-net.rules

  查出ATTR{address} 跟源电脑网卡mac一样的 注掉,重新启动电脑,网卡就可以使用了。

  # This file was automatically generated by the /lib/udev/write_net_rules

# program run by the persistent-net-generator.rules rules file.

#

# You can modify it, as long as you keep each rule on a single line.



# PCI device 0x1022:0x2000 (pcnet32)

#查出ATTR{address} 跟源电脑网卡mac一样的 注掉

#SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:0c:29:95:53:ca", NAME="eth1"



# PCI device 0x1022:0x2000 (pcnet32)

SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:0c:29:94:de:df", NAME="eth0"



注:查看网卡的mac 可以简单的使用启动盘,启动系统查看。
发表于 2009-3-23 18:25:04 | 显示全部楼层
为何不使用 rsync 或者 tar ? dd 多费空间啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-23 20:36:58 | 显示全部楼层

你可以详细解说一下您使用 rsync 怎样安装吗?

Post by coderoar;1964556
为何不使用 rsync 或者 tar ? dd 多费空间啊。


rsync 传输确实挺快,但是我使用最小安装盘启动系统后,发现 没有 rsync 这个命令 ,你可以详细解说一下您使用 rsync 怎样安装吗?
回复 支持 反对

使用道具 举报

发表于 2009-3-23 22:53:27 | 显示全部楼层
原来是 minimal 安装盘啊,其实最好是LiveUSB,我就做了一个,平时修复系统老好了。

我的方法是把dd那一步换一下,用 sshfs 把根目录挂到目的机器上,然后 rsync --recursive --human-readable --links --perms --times --force --group --owner --devices --specials --whole-file --stats --verbose [source dir] [destination dir] 或者 (cd [src dir]&&tar cf - *)|(cd [dest dir]&&tar xvf -) 就好了。

tar的速度比rsync快,但是如果中途出错还是得rsync出场。
回复 支持 反对

使用道具 举报

发表于 2009-3-23 23:57:46 | 显示全部楼层
不会这么高深的,我就用Clonezilla
回复 支持 反对

使用道具 举报

发表于 2009-3-24 11:11:32 | 显示全部楼层
用 nc。不用中间文件。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表