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