Creare slackware-install-dvd alleggerito: differenze tra le versioni
Da Slacky.eu.
(→Download) |
(→Feedback) |
||
| Riga 278: | Riga 278: | ||
= Feedback = |
= Feedback = |
||
| − | Per commenti e suggerimenti inviatemi una e-mail a |
+ | Per commenti e suggerimenti inviatemi una e-mail |
| − | ansa89[AT]slacky[DOT]it |
+ | [[Utente:Ansa89|Ansa89]] |
| − | |||
| − | |||
| − | Oppure venite sul mio sito internet |
||
| − | |||
| − | [http://stiiv.netsons.org http://stiiv.netsons.org] |
||
Versione delle 15:02, 7 dic 2010
Indice |
Descrizione
Con questo script si può creare una iso con dimensioni ridotte per l'installazione di slackware. In pratica il trucco sta nello scaricare solo i primi tre cd (quelli necessari all'installazione), scompattarli e creare una iso con il loro contenuto.
Requisiti
WGET --> home
RSYNC --> home
MKISOFS --> home
Script
Di seguito è riportato il codice dello script.
Versione 2.0
#!/bin/bash
#
# Questo script scarica i primi tre cd di slackware (necessari per una
# corretta installazione) e crea l'immagine iso da masterizzare su dvd
#
# Script creato il 30/1/2009 da Ansa89 (avrei dovuto studiare analisi...)
# Funzione per controllare le dipendenze
check_dep() {
# Controllo se wget e' installato
if [ -z "$(which wget)" ]; then
echo
echo "Devi avere WGET installato per usare questo script!"
echo
exit 1
fi
# Controllo se mkisofs e' installato
if [ -z "$(which mkisofs)" ]; then
echo
echo "Devi avere MKISOFS installato per usare questo script!"
echo
exit 1
fi
# Controllo se rsync e' installato
if [ -z "$(which rsync)" ]; then
echo
echo "Devi avere RSYNC installato per usare questo script!"
echo
exit 1
fi
# Controllo se lo script e' eseguito come root
if [ "$(id -u)" == "0" ]; then
echo
echo "Devi eseguire questo script come utente normale!"
echo
exit 1
fi
}
# Dichiarazione variabili
USER_ID="$(id -u)"
CD_ISO_DIR="$(pwd)"
FINAL_ISO_DIR="/tmp/slackware-install-dvd/"
SLACK_URL="ftp://ftp.fu-berlin.de/unix/linux/mirrors/slackware/"
RSYNC_URL="rsync://slackware.mirrors.tds.net/slackware/"
NUM="d1 d2 d3"
VERSION="12.2"
# Funzione per chiedere informazioni all'utente
question() {
echo
echo "Per quale versione di slackware vuoi creare la iso?"
echo -ne "($VERSION)\t"
read VER
if [ -z "$VER" ]; then
VER=$VERSION
fi
echo "In quale cartella vuoi salvare i dati? (Usare un path assoluto!!)"
echo -ne "($CD_ISO_DIR)\t"
read DIR
if [ -z $DIR ]; then
DIR=$CD_ISO_DIR
elif ! [ -e $DIR ]; then
mkdir -p $DIR
fi
if [ "$VER" != "current" ] && [ "$VER" != "-current" ]; then
echo "Vuoi scaricare le iso dei primi tre cd di slackware"
echo "oppure usare rsync? (consigliato rsync)"
echo -ne "[cd / rsync]\t"
read MODE
else
VER="current"
MODE="rsync"
fi
}
# Funzione per scaricare le tre iso
download_wget() {
# Scarico le iso
echo
echo "-- Inizio dowload --"
echo
cd $DIR
for cd_num in $NUM; do
wget -c $SLACK_URL/slackware-$VER-iso/slackware-$VER-install-$cd_num.iso
done
echo
echo "-- Fine download --"
echo
}
# Funzione per scaricare slackware usando rsync
download_rsync() {
# Creo la cartella dove scaricare i dati
CPY_DIR="$DIR/iso_temp/"
rm -Rf $CPY_DIR
mkdir -p $CPY_DIR
# Scarico i dati
echo
echo "-- Inizio dowload --"
echo
cd $DIR
rsync -avzh --progress --delete --delete-after \
--exclude="source" \
--exclude="extra/source" \
--exclude="pasture/source" \
--exclude="testing" \
$RSYNC_URL/slackware-$VER/ $CPY_DIR
echo
echo "-- Fine download --"
echo
}
# Funzione per scompattare le iso
extract_cd() {
cd $DIR
# Creo la cartella dove copiare il contenuto delle iso
CPY_DIR="$DIR/iso_temp/"
rm -Rf $CPY_DIR
mkdir -p $CPY_DIR
# Creo la cartella dove montare le iso
mkdir ./mnt
for cd_num in $NUM; do
echo "Inserisci la password di root per montare la iso $cd_num"
su -c "mount -t iso9660 -o loop \
slackware-$VER-install-$cd_num.iso ./mnt/ ; \
cp -R ./mnt/* $CPY_DIR ; \
umount slackware-$VER-install-$cd_num.iso"
done
rm -Rf ./mnt
echo "Inserisci la password di root per settare i permessi delle cartelle"
su -c "chown -R $USER_ID $CPY_DIR"
}
# Funzione per creare la iso finale
final_iso() {
cd $CPY_DIR
echo
echo "-- Inizio creazione iso --"
echo
mkisofs -o $FINAL_ISO_DIR/sackware-$VER-install-dvd.iso \
-R -J -V "Slackware Install" -hide-rr-moved \
-v -d -N -no-emul-boot -boot-load-size 4 -boot-info-table \
-sort isolinux/iso.sort -b isolinux/isolinux.bin \
-c isolinux/isolinux.boot -A "Slackware Install DVD"
if [ "$(echo $?)" != "0" ]; then
echo
echo "Qualcosa non e' andato bene :-("
echo "Esco"
echo
exit 1
else
echo
echo "-- Fine creazione iso --"
echo
echo "Congratulazioni! L'immagine iso e' stata salvata in $FINAL_ISO_DIR"
echo
fi
}
# Controllo le dipendenze
check_dep
# Controllo il parametro passato allo script
case "$1" in
--all)
question
if [ -z "$MODE" ] || [ "$MODE" == "rsync" ] || [ "$MODE" == "RSYNC" ]; then
download_rsync
elif [ "$MODE" == "cd" ] || [ "$MODE" == "CD" ]; then
download_wget
extract_cd
fi
final_iso
exit 0
;;
--create-from-cd)
echo "Per quale versione di slackware vuoi creare la iso?"
echo -ne "($VERSION)\t"
read VER
if [ -z "$VER" ]; then
VER=$VERSION
elif [ "$VER" == "current" ] || [ "$VER" == "-current" ]; then
echo
echo "Questa opzione funziona solo per il ramo STABLE"
echo -e "Magari prova con \"--create-from-dir\""
echo "Esco"
echo
exit 1
fi
echo "In quale cartella sono salvate le iso? (Usare un path assoluto!!)"
echo -ne "($CD_ISO_DIR)\t"
read DIR
if [ -z $DIR ]; then
DIR=$CD_ISO_DIR
elif ! [ -e $DIR ]; then
echo
echo "Path errato!"
echo
exit 1
fi
extract_cd
final_iso
exit 0
;;
--create-from-dir)
echo "Per quale versione di slackware vuoi creare la iso?"
echo -ne "($VERSION)\t"
read VER
if [ -z "$VER" ]; then
VER=$VERSION
elif [ "$VER" == "-current" ]; then
VER="current"
fi
echo "In quale cartella sono salvate le iso? (Usare un path assoluto!!)"
echo -ne "($CD_ISO_DIR/iso_temp/)\t"
read CPY_DIR
if [ -z $CPY_DIR ]; then
CPY_DIR="$CD_ISO_DIR/iso_temp/"
elif ! [ -e $CPY_DIR ]; then
echo
echo "Path errato!"
echo
exit 1
fi
final_iso
exit 0
;;
*)
echo
echo "Opzioni valide:"
echo "--all --> scarica i dati e crea la iso"
echo "--create-from-cd --> estrae i cd e crea la iso"
echo -e "\t\t(I CD DEVONO ESSERE PRESENTI SU HD)"
echo "--create-from-dir --> crea la iso usando il contenuto di una cartella"
echo
echo "Versione 2.0"
echo "By Ansa89 (ansa89@slacky.it || http://stiiv.netsons.org)"
echo
exit 1
;;
esac
#EOF
- Autore: Ansa89
Changelog
- V 1.0 --> Prima versione...un po' contestata
- V 2.0 --> Cambiato il sistema per sapere quale utente sta eseguendo lo script (adesso si usa "id -u"); aggiunto il supporto per scaricare i dati con rsync
Feedback
Per commenti e suggerimenti inviatemi una e-mail
HAVE A LOT OF FUN