--- /usr/sbin/live-install.old 2013-04-15 15:26:59.000000000 +0400 +++ /usr/sbin/live-install 2013-05-08 18:25:06.752000000 +0400 @@ -22,13 +22,17 @@ BOOT_DEVICE=$1 ROOT_DEVICE=$2 -mkfs.ext4 $ROOT_DEVICE > /dev/null -TMPDIR=`/bin/mktemp -d` -mount $ROOT_DEVICE $TMPDIR -mountpoint -q "$TMPDIR" || exit +if grep -q "^$ROOT_DEVICE " /proc/mounts; then + TMPDIR=`grep "^$ROOT_DEVICE " /proc/mounts |awk '{print $2}'` +else + mkfs.ext4 $ROOT_DEVICE > /dev/null + TMPDIR=`/bin/mktemp -d` + mount $ROOT_DEVICE $TMPDIR + mountpoint -q "$TMPDIR" || exit +fi cd $TMPDIR -cp -a /bin /boot /etc /lib* /root /sbin /usr /var /home . +rsync -a /bin /boot /etc /lib* /root /sbin /usr /var /home ./ mkdir dev media mnt proc srv sys tmp selinux cgroup run cat /usr/share/live-install/dev.cpio.bz2 | bunzip | cpio -i > /dev/null rm -f etc/rc.d/rc.local @@ -57,6 +61,24 @@ $ROOT_DEVICE / ext4 relatime 1 1 EOF +grep " $TMPDIR/" /proc/mounts | while read DEV MPOINT FSTYPE Z Z Z; do + MPOINT=`echo $MPOINT | sed -e "s|$TMPDIR||"` + case $MPOINT in + /usr) + FSOPTS="nodev,relatime" ;; + /var) + FSOPTS="nosuid,relatime" ;; + /home) + FSOPTS="nosuid,relatime" ;; + *) + FSOPTS="relatime" ;; + esac + + echo -e "$DEV\t$MPOINT\t$FSTYPE\t$FSOPTS\t1 2" >> etc/fstab +done + +mdadm -Ebsc partitions >> etc/mdadm.conf + for script in `ls /usr/share/live-install/scripts.d/` do . /usr/share/live-install/scripts.d/$script @@ -66,7 +88,16 @@ chroot . installkernel --nolaunch "$(uname -r)" chroot . extlinux -i /boot/extlinux -chroot . dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/mbr.bin of=$BOOT_DEVICE +if echo $BOOT_DEVICE |grep -q /dev/md; then + mdadm --detail $BOOT_DEVICE |grep active.*/dev/ |awk '{print substr($7, 1, length($7)-1)}' | \ + while read REAL_BOOT_DEVICE; do + echo install mbr into $REAL_BOOT_DEVICE + chroot . cat /usr/lib/syslinux/mbr.bin > $REAL_BOOT_DEVICE + done +else + echo install mbr into $BOOT_DEVICE + chroot . cat /usr/lib/syslinux/mbr.bin > $BOOT_DEVICE +fi chroot . rpm -e $LIVEPKGS chroot . chkconfig sshd on chroot . chkconfig acpid on @@ -75,6 +106,8 @@ umount sys umount dev +awk '{print $2}' /proc/mounts |grep "^$TMPDIR/" |sort -r |while read FS; do umount $FS; done + cd / -umount $ROOT_DEVICE -rm -rf $TMPDIR +umount $ROOT_DEVICE && rm -rf $TMPDIR +