#!/bin/bash #20060614 LiveCD2HDD.sh hse@ukr.net # Gentoo instalation script from DYSTRYK LiveCD. # You must mount yore disk to /mnt/gentoo befor run it! TARGET_SOURCE=/mnt/gentoo SOURCE=/mnt/livecd # беремо перший диск з списку: dev=`fdisk -l |grep 'Disk /dev/' |awk -F'/' '{print $3}' |cut -c1-3 |awk '{if (NR==1) print $1}'` bootdev=/dev/${dev}1 swapdev=/dev/${dev}2 rootdev=/dev/${dev}3 if [ ! -d $TARGET_SOURCE ] then # /etc/init.d/automounter stop ram=`cat /proc/meminfo |grep 'MemTotal:' |awk '{print $2}'` if (( $ram < 200000 )) then swap=256 else (( swap=2*$ram/1000 )) fi boot=32 root=`fdisk -l |grep 'Disk /dev/'|awk '{print $5}'` (( root=$root/1048576-$swap-$boot )) # for i in `fdisk -l |grep 'Disk /dev/' |awk -F'/' '{print $3}' |cut -c1-3` # do # if [ `fdisk -l |grep 'Disk /dev/' |awk -F'/' '{print $3}' |cut -c1-3` != "$i" ] # then # dev=`fdisk -l |grep 'Disk /dev/' |awk -F'/' '{print $3}' |cut -c1-3` if (( $root < 3000 )) then echo "" echo "Шкода, для кореневого диску не вистарчає місця" echo "" N1=1; N2=2; N3=3 echo "Пристрій Точка монтування Файлова система Розмір" echo "$bootdev /boot ext2 $boot Mb" echo "$swapdev swap swap $swap Mb" echo "$rootdev / xfs $root Mb" echo "" echo "$dev 3 / ext3 мінімальний розмір 3000 Mb" echo "Програма встановлення не може самостійно знайти" echo "достатньо місця на локальних дисках." echo "Розбийте відформатуйте та примонтуйте у /mnt/gentoo" echo "дерево каталогів Лінукс та запустіть цю програму знов." exit 1 fi echo "" echo " УВАГА УВАГА УВАГА" echo "" echo "Наступна операція знищить всі дані на диску /dev/$dev" echo "" echo "ЗНИЩУЮТЬСЯ ВСІ ДАНІ НА ЛОКАЛЬНОМУ ДИСКУ ! ! !" echo "Для відміни натисніть Ctrl + C" echo "" echo "ваш диск /dev/$dev буде розбито та відформатовано наступним чином:" echo "" echo "Пристрій Точка монтування Файлова система Розмір" echo "$bootdev /boot ext2 $boot Mb" echo "$swapdev swap swap $swap Mb" echo "$rootdev / xfs $root Mb" echo "" echo "Якщо вам це не подобається негайно натисніть Ctrl + C" echo "дaлі розбийте та відформатуйте диск(и)" echo "як ви хочете, а потім створіть з них дерево каталогів " echo "примонтувавши їх у каталозі /mnt/gentoo тобто /mnt/gentoo" echo "є новим коренем системи, та запустіть цю програму знов;" echo "після її завершення відкоректуйте $TARGET_SOURCE/etc/fstab" echo "$TARGET_SOURCE/boot/grub/grub.conf та належно встановіть GRUB" echo "" echo "Через 60 секунд дані на локальному диску /dev/$dev знищаться" echo "і почнеться процес встановлення Лінукс" echo "Для відміни встановлення натисніть Ctrl + C" echo "" echo "" sleep 60 echo -n "Зачекайте йде розбивка та форматування дисків... " (( swap=$swap+32 )) (( root=$root+$swap )) # parted -s /dev/$dev print # Umount all disks sync sleep 1 swapoff -a for k in 1 2 3 do for d in `mount |grep /dev/hd |awk '{print $1}'` `mount |grep /dev/sd |awk '{print $1}'` do umount 2>&1 > /dev/null $d 2>/dev/null done done # Remove exist partition for d in `fdisk -l |grep /dev/hdc |awk '{print $1}' |grep /dev/hdc |awk -F'/dev/hdc' '{print $2}'` do parted -s /dev/$dev rm $d done # parted -s /dev/$dev print # Create format and mount new disks parted -s /dev/$dev mkpartfs primary ext2 0 $boot sleep 1 parted -s /dev/$dev mkpartfs primary linux-swap $boot $swap sleep 1 parted -s /dev/$dev mkpart primary $swap $root sync sleep 1 mkfs.xfs -f /dev/hdc3 2>&1 > /dev/null parted -s /dev/$dev set 1 boot on parted -s /dev/$dev set 2 swap on # parted -s /dev/$dev print sync sleep 1 mkdir -p $TARGET_SOURCE mount $rootdev $TARGET_SOURCE/ mkdir $TARGET_SOURCE/boot mount $bootdev $TARGET_SOURCE/boot/ swapon $swapdev echo "OK!" fi echo "" echo "Через 10 секунд почнеться процес встановлення Лінукс" echo "в каталог /mnt/gentoo - корінь нової системи." echo "Для відміни встановлення натисніть Ctrl + C" echo "" sleep 10 echo -n "Йде копіювання файлів з LiveCD до HDD ... " cp -rf /mnt/cdrom/boot $TARGET_SOURCE/ cp -pRPd $SOURCE/* $TARGET_SOURCE/ rm -fr $TARGET_SOURCE/newroot echo " OK!" echo "" echo -n "Створення деяких файлів налаштування системи... " # Create fstab: cp /home/DYSTRYK/etc/fstab $TARGET_SOURCE/etc/ echo "$bootdev /boot ext2 noatime,nodev,nosuid,noexec,ro 1 1" >> $TARGET_SOURCE/etc/fstab echo "$swapdev none swap sw 0 0" >> $TARGET_SOURCE/etc/fstab echo "$rootdev / xfs defaults 0 0" >> $TARGET_SOURCE/etc/fstab # Create grub.conf cp /home/DYSTRYK/etc/grub.conf $TARGET_SOURCE/boot/grub/ cd $TARGET_SOURCE/boot/grub/ rm $TARGET_SOURCE/boot/grub/menu.lst ln -s grub.conf menu.lst case "$dev" in "hda") disk=hd0 ;; "hdb") disk=hd1 ;; "hdc") disk=hd2 ;; "hdd") disk=hd3 ;; "sda") disk=hd0 ;; "sdb") disk=hd1 ;; "sdc") disk=hd2 ;; "sdd") disk=hd3 ;; esac # Здається диск завжди буде hd0 ??? disk=hd0 cd $TARGET_SOURCE/boot N=3 for kernel in `ls kernel*` do version=`echo "$kernel" |awk -F'kernel' '{print $2}'` initramfs=initramfs$version echo "" >> $TARGET_SOURCE/boot/grub/grub.conf echo "title=$kernel SELinux Hardened" >> $TARGET_SOURCE/boot/grub/grub.conf echo " root ($disk,0)" >> $TARGET_SOURCE/boot/grub/grub.conf echo " kernel /boot/$kernel vga=791 splash=silent,fadein,theme:livecd-2006.0 fbcon=scrollback:128K quiet kdgraphics INPUT_EVDEV=y CONSOLE=/dev/tty1 root=/dev/ram0 init=/linuxrc real_root=$rootdev udev selinux=1 checkreqprot=1 permissive=1 enforcing=1" >> $TARGET_SOURCE/boot/grub/grub.conf echo " initrd /boot/$initramfs" >> $TARGET_SOURCE/boot/grub/grub.conf echo "" >> $TARGET_SOURCE/boot/grub/grub.conf echo "title=$kernel secure" >> $TARGET_SOURCE/boot/grub/grub.conf echo " root ($disk,0)" >> $TARGET_SOURCE/boot/grub/grub.conf echo " kernel /boot/$kernel vga=791 splash=silent,fadein,theme:livecd-2006.0 fbcon=scrollback:128K quiet kdgraphics INPUT_EVDEV=y CONSOLE=/dev/tty1 root=/dev/ram0 init=/linuxrc real_root=$rootdev udev selinux=1 checkreqprot=1 permissive=1 pax_softmode=1" >> $TARGET_SOURCE/boot/grub/grub.conf echo " initrd /boot/$initramfs" >> $TARGET_SOURCE/boot/grub/grub.conf echo "" >> $TARGET_SOURCE/boot/grub/grub.conf echo "title=$kernel" >> $TARGET_SOURCE/boot/grub/grub.conf echo " root ($disk,0)" >> $TARGET_SOURCE/boot/grub/grub.conf echo " kernel /boot/$kernel vga=791 splash=silent,fadein,theme:livecd-2006.0 fbcon=scrollback:128K quiet kdgraphics INPUT_EVDEV=y CONSOLE=/dev/tty1 root=/dev/ram0 init=/linuxrc real_root=$rootdev udev selinux=0 pax_softmode=1" >> $TARGET_SOURCE/boot/grub/grub.conf echo " initrd /boot/$initramfs" >> $TARGET_SOURCE/boot/grub/grub.conf echo "" >> $TARGET_SOURCE/boot/grub/grub.conf echo "title=$kernel NoInitrd" >> $TARGET_SOURCE/boot/grub/grub.conf echo " root ($disk,0)" >> $TARGET_SOURCE/boot/grub/grub.conf echo " kernel /boot/$kernel vga=791 root=$rootdev udev selinux=0 pax_softmode=1" >> $TARGET_SOURCE/boot/grub/grub.conf done echo "" >> $TARGET_SOURCE/boot/grub/grub.conf echo "title=Memtest86+" >> $TARGET_SOURCE/boot/grub/grub.conf echo " root ($disk,0)" >> $TARGET_SOURCE/boot/grub/grub.conf echo " kernel /boot/memtest86plus/memtest.bin" >> $TARGET_SOURCE/boot/grub/grub.conf echo "" >> $TARGET_SOURCE/boot/grub/grub.conf echo "title Change the colors" >> $TARGET_SOURCE/boot/grub/grub.conf echo "color green/black blink-green/blue" >> $TARGET_SOURCE/boot/grub/grub.conf echo " OK!" echo "" echo -n "всановлення GRUB для можливості завантаження системи з локального диску... " # Grub install: #grub-install $1 /sbin/grub --batch <<EOT 1>/dev/null 2>/dev/null root (hd0,0) setup (hd0) quit EOT echo "OK!" echo "" echo "Йде встановлення бази даних пакетів Генту з Інтернету ... " cd $TARGET_SOURCE/var/db # Downloading the portage snapshot. #lynx http://www.gentoo.org/main/en/mirrors.xml url="http://mirrors.sec.informatik.tu-darmstadt.de/gentoo/snapshots/" snapshot="portage-latest" wget -c $url$snapshot.tar.bz2 wget -c $url$snapshot.tar.bz2.md5sum # Cheking if ? `md5sum -c $snapshot.tar.bz2.md5 then md5sum -c $snapshot.tar.bz2.md5 # exit 1 fi # installing tar -xvjf $snapshot.tar.bz2 -C $TARGET_SOURCE/usr # Downloading the installed pkg tarboll. url="http://" pkg="pkg-*" wget -c $url$pkg.tar.bz2 wget -c $url$pkg.tar.bz2.md5sum # Cheking if ? `md5sum -c $pkg.tar.bz2.md5 then md5sum -c $pkg.tar.bz2.md5 # exit 1 fi # installing tar -xvjpf $pkg.tar.bz2 echo "" echo "" echo -n "Монтуання спецрозділів ... " cd $TARGET_SOURCE mount -o bind /sys $TARGET_SOURCE/sys mount -o bind /dev $TARGET_SOURCE/dev mount -t proc none $TARGET_SOURCE/proc echo " OK!" echo "" echo "Зараз виконується ./LiveCDchrootHDD.sh, до каталогу $TARGET_SOURCE для встановлення міток безпеки SELinux..." chroot $TARGET_SOURCE/ /home/DYSTRYK/bin/LiveCDchrootHDD.sh env-update source /etc/profile echo "OK!" echo "" echo -n "Розмонтуання розділів ... " umount $TARGET_SOURCE/sys umount $TARGET_SOURCE/dev umount $TARGET_SOURCE/proc umount $TARGET_SOURCE/boot sync sleep 1 umount $TARGET_SOURCE/ swapoff $swapdev echo " OK!" echo "" echo "Gentoo GNU/Linux з DYSTRYK LiveCD успішно встановлений, перезавантажте компютер та витягніть компакт диск ... " #reboot exit 0