Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: HQ в Dec 17, 2012, 18:40



Титла: ZFS install скрипт фром скрач :)
Публикувано от: HQ в Dec 17, 2012, 18:40
Добър вечер!
Опитвам се да си направя bash script в който да вкарам командите от този сайт ($2) и да си улесня инсталацията пък и да вкарвам допълнителни неща без писане на едни и същи неща по 100 пъти .

Ето го и скрипта :
Код:
export POOL=tank
echo 'the poolname is set to '$POOL
export DISK=da0
echo 'the disk to install is set to '$DISK

#STEP 2
echo 'step 2'
gpart create -s gpt $DISK;
gpart add -b 34 -s 94 -t freebsd-boot $DISK;
gpart add -t freebsd-zfs -l disk0 $DISK;
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 $DISK;
sleep 5

#STEP 3
echo 'step 3'
zpool create $POOL /dev/gpt/disk0;
sleep 5

#STEP 4
echo 'step 4'
zpool set bootfs=$POOL $POOL;
zfs set checksum=on $POOL;
zfs set mountpoint=/mnt $POOL;
sleep 5

#STEP 5
echo 'step 5'
zpool export $POOL;
zpool import -o cachefile=/var/tmp/zpool.cache $POOL;
sleep 5

#STEP 6
echo 'step 6'

zfs create $POOL/usr;
zfs create $POOL/usr/home;
zfs create $POOL/var;
zfs create -o compression=on -o exec=on -o setuid=off $POOL/tmp;
zfs create -o compression=on -o setuid=off $POOL/usr/ports;
zfs create -o compression=off -o exec=off -o setuid=off $POOL/usr/ports/distfiles;
zfs create -o compression=off -o exec=off -o setuid=off $POOL/usr/ports/packages;
zfs create -o compression=on -o exec=on -o setuid=off $POOL/usr/src;
zfs create -o compression=on -o exec=off -o setuid=off $POOL/var/crash;
zfs create -o exec=off -o setuid=off $POOL/var/db;
zfs create -o compression=on -o exec=on -o setuid=off $POOL/var/db/pkg;
zfs create -o compression=off -o exec=off -o setuid=off $POOL/var/empty;
zfs create -o compression=on -o exec=off -o setuid=off $POOL/var/log;
zfs create -o compression=on -o exec=off -o setuid=off $POOL/var/mail;
zfs create -o exec=off -o setuid=off $POOL/var/run;
zfs create -o compression=on -o exec=on -o setuid=off $POOL/var/tmp;
sleep 5

#STEP 7
echo 'step 7'

zfs create -V 1G $POOL/swap;
zfs set org.freebsd:swap=on $POOL/swap;

# !!! zfs set checksum=off $POOL/swap;
sleep 5

#STEP 8
echo 'step 8'

chmod 1777 /mnt/tmp;
cd /mnt ; ln -s usr/home home;
chmod 1777 /mnt/var/tmp;
sleep 5

#STEP 9
echo 'step 9'

sh;
cd /usr/freebsd-dist;
export DESTDIR=/mnt;
for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;
do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done;
sleep 5

#STEP 10
echo 'step 10'

cp /var/tmp/zpool.cache /mnt/boot/zfs/zpool.cache;
sleep 5

#STEP 11
echo 'step 11'

echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf;
echo 'zfs_load="YES"' >> /mnt/boot/loader.conf;
echo 'vfs.root.mountfrom="zfs:$POOL"' >> /mnt/boot/loader.conf;
touch /mnt/etc/fstab;
sleep 5

#STEP 12
echo 'step 12'

zfs set readonly=on $POOL/var/empty;
zfs umount -af;
zfs set mountpoint=legacy $POOL;
zfs set mountpoint=/tmp $POOL/tmp;
zfs set mountpoint=/usr $POOL/usr;
zfs set mountpoint=/var $POOL/var;
sleep 5
echo 'COMPLETED!!!'

1 въпрос : как да накарам всеки ред да започне да се изпълнява след като е приключено изпълнението на горния ред, така с ";" не знам дали е правилно?
2 въпрос : на 4 или 5 стъпка ми изписва че не може да маунтне пуула,а гледам че успява и продължава, обаче ... щом стигне до 9 стъпка (най-важната) приключва изпълнение ?!
Можете ли да ударите едно рамо? Предполагам че скрипта ще бъде полезен за много хора! Благодаря!


Титла: Re: ZFS install скрипт фром скрач :)
Публикувано от: dejuren в Dec 17, 2012, 23:11
1. Махни ; не са необходими, и без това всеки ред започва да се изпълнява след като предния е приключил. Тук има особеност - ако командата изисква време за изпълнение тя може да приключи без да е приключила (?! - не питай), тогава може да вмъкваш "sleep (брой секунди)" между двете. Друга особеност ако следващата трябва да продължи само ако предишната е приключила успешно ще требва да следиш кода на грешката $?, или да връзваш две/няколко команди в един ред с разделител &&
2. Тук:

#STEP 9
echo 'step 9'

sh;

пускаш нов шел, който ако не ме лъже инстинкта е интерактивен, и скрипта ще продължи след неговото завършване, т.е. след като Ctrl-D или exit. Решението е просто, махни sh.

На 4,5 стъпки сложи повече слип и независима провекра монтиран ли е пула или не.


Титла: Re: ZFS install скрипт фром скрач :)
Публикувано от: HQ в Dec 18, 2012, 00:13
Пробвах,махнах sh, но просто така беше в инструкциите...
Доколкото установих от многото опити,на step 9
(for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz; )
 се въвежда,но това след него не ... мъчих се да го измисля да е на 1 ред но не става. До там всичко е ок,а това че не маунтва пуула е в стъпка 3  ??? ще пробвам и там да сложа повече слийп.

Може и да съм объркал секцията в бързината  ::)


Титла: Re: ZFS install скрипт фром скрач :)
Публикувано от: gangov в Dec 18, 2012, 08:45
OFF TOPIC !!!
 Изкефи ме шльокавицата на заглавието  ;D


Титла: Re: ZFS install скрипт фром скрач :)
Публикувано от: HQ в Dec 18, 2012, 14:55
Такаааа ... ами да ви се поФаля скрипта вече окончателно РАБОТИ!!!
Искам да благодаря на моите базови познания по bash или по-точно sh,специални благодарности на снапшотите във VMware и генералното спонсорство на фирма за производство на чипс и една друга произвеждаща черна газирана напитка.
Между временно открих и поправих още няколко грешки - на 11 стъпка
echo 'vfs.root.mountfrom="zfs:$POOL"' >> /mnt/boot/loader.conf;
пъха $POOL в конфига и трябва да се замени с името на пула иначе греда.

Ето малко снимки :
(http://imageupload.org/thumb/thumb_244766.jpg) ($2)
(http://imageupload.org/thumb/thumb_244767.jpg) ($2)
(http://imageupload.org/thumb/thumb_244768.jpg) ($2)
(http://imageupload.org/thumb/thumb_244769.jpg) ($2)

Ето го и самия скрипт:
http://www.2shared.com/file/R9kGqxUZ/zfsbash45.html
Не забравяйте,че не нося отговорност за изгорели палачинки,пържоли и тежки психични разтройства в следствие от използване на софтуера!