Repository 32bit  Forum
Repository 64bit  Wiki

Creare slackware-install-dvd alleggerito

Da Slacky.eu.
Versione delle 00:30, 10 dic 2010, autore: Ansa89 (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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.1

#!/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 9/12/2010 da Ansa89 (avrei dovuto studiare reti di calcolatori...)

# 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="13.1"

# 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" \
		--exclude="patches/source" \
		$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.1"
		echo "By Ansa89 (ansa89@slacky.it)"
		echo
		exit 1
		;;
esac
#EOF

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

- V 2.0.1 --> Aggiunto "--exclude="patches/source" per evitare di scaricare i sorgenti delle patch ufficiali

Feedback

Per commenti e suggerimenti inviatemi una e-mail

Ansa89


HAVE A LOT OF FUN

Strumenti personali
Namespace

Varianti