Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
#!/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 |grep ": OK"` == "" ]]
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 |grep ": OK"` == "" ]]
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