All pastes #588424 Raw Edit

Something

public shellscript v1 · immutable
#588424 ·published 2007-06-25 14:47 UTC
rendered paste body
#!/bin/bashCAT=`type -p cat`GREP=`type -p grep`AWK=`type -p awk`SFDISK=`type -p sfdisk`PARTED=`type -p parted`MOUNT=`type -p mount`MKDIR=`type -p mkdir`SWAPON=`type -p swapon`MKFSEXT3=`type -p mkfs.ext3`MKFSXFS=`type -p mkfs.xfs`MKSWAP=`type -p mkswap`LS=`type -p ls`get_swap_size() {	ramkb=`$CAT /proc/meminfo | $GREP MemTotal | $AWK {'print $2'}`	let swap_size=2*$ramkb/1024+16}remove_removable() {revindex=0element_count=${#disks[@]}while [ "$revindex" -lt "$element_count" ]	do	s=${disks[$revindex]#/dev/}	s=${s//:/}	removable=`$CAT /sys/block/$s/removable`	[ $removable -gt 0 ] && unset disks[$revindex]	revindex+=1	done}get_devices() {		get_swap_size	disks=(`$SFDISK -s | $GREP dev | $AWK {'print $1'}`)	remove_removable	numdisks=0	sizes=()	for disk in ${disks[@]};do		numdisks=$((numdisks+1))		let sizes[$numdisks-1]=`$SFDISK -s | $GREP $disk | $AWK {'print $2'}`/1024	done[ ${#disks[@]} -eq 0 ] && echo 'No disc found :,( I am giving up'; exit 255[ ${#disks[@]} -gt 2 ] && echo 'More than 2 disks found, I can/will use only the first two :-('; exit 127let smallestdisk=2048+2048+100+$swap_size[ ${sizes[0]} -lt $smallestdisk ] && echo 'First disk size is smaller than $smallestdisk :-/ manual install required'; exit 13}wipe_device() {	hd_part=${$1#/dev/}	partitions=(`$LS /dev/ | $GREP $hd_part.`)	if  [[ ${#partitions[@]} -gt 0 ]]	then		index=1		elements=${#partitions[@]}		while [ "$index" -lt "$elements"+1 ]		do			$PARTED -s $1 rm $index			index+=1		 done	fi}partition_single() {	exit	dev=${disks[0]//:/}	echo "Destroying partitions on device $dev ..."	wipe_device $dev	echo "Creating a new partition table on $dev ..."	$SFDISK $dev -uM -L <<-EOT	0,100,L,*	,$swap_size,S	,2048,L	,,L	EOT	echo "Formating partitions on $dev ..."	$MKFSEXT3 ${dev}1	$MKSWAP -v1 ${dev}2	$MKFSXFS -f ${dev}3	$MKFSXFS -f ${dev}4	echo "Mounting partitions on $dev ..."	$MOUNT ${dev}3 /mnt/target	$MKDIR -p /mnt/target/{boot,data}	[ $double ] && $MKDIR -p /mnt/target/backup	$MOUNT ${dev}1 /mnt/target/boot	$MOUNT ${dev}4 /mnt/target/data	$SWAPON ${dev}2 }partition_double() {		double=1	partition_single	dev2=${disks[1]//:/}	echo "Creating a new partition table on $dev2 ..."	$SFDISK $dev2	echo "Formating partitions on $dev2 ..." 	$MKFSXFS -f ${dev2}1	echo "Mounting partitions on $dev2 ..."	$MOUNT ${dev2}1 /mnt/target/backup}main() {	get_devices	[ ${#disks[@]} -eq 1 ] && partition_single	[ ${#disks[@]} -ge 2 ] && partition_double}main