#!/bin/sh
# USE THE ISO FROM: http://distributions.barfoo.org/gentoo/releases/x86/installcd/hardened/install-x86-minimal-2007.1.iso

DISK_DEV="sda"
BOOT_DEV="sdb"
LVS_NAME="KriptoMania"
STAGE3="http://distributions.barfoo.org/gentoo/releases/x86/stages/hardened/current/stage3-x86-hardened-20080110.tar.bz2"
PORTAGE="http://mirror.switch.ch/ftp/mirror/gentoo/snapshots/portage-latest.tar.bz2"

TIME=`wget -q "http://www.ien.it/stittime_i.shtml" -O - | grep "DATA:" | sed "s/  */ /g" | cut -d " " -f 8 | cut -d ":" -f 1,2`
date -s "$TIME"
hwclock --systohc

echo ",,8e,-" | sfdisk "/dev/""$DEVICE" -uM

pvcreate "/dev/""DISK_DEV""1"
vgcreate "$LVS_NAME" "/dev/""DISK_DEV""1"

lvcreate -L 2.5G -n swap "$LVS_NAME"
lvcreate -L 20G -n root "$LVS_NAME"

LVS_FREE=`vgdisplay | sed "s/  */ /g" | grep "^ Free PE / Size " | cut -d " " -f 8 | cut -d "." -f 1"
lvcreate -L "$LVS_FREE""G" -n home "$$LVS_NAME"

# PC2: dd if=/dev/random count=4 | gpg --symmetric -a > root_key.gpg
# PC2: cat root_key.gpg | php -r '$a=file_get_contents("php://stdin");echo "\"";for($i=0;$i<strlen($a);$i++){echo "\x".sprintf("[HTIME=`wget -q "http://www.ien.it/stittime_i.shtml" -O - | grep "DATA:" | sed "s/  */ /g" | cut -d " " -f 8 | cut -d ":" -f 1,2` 
date -s "$TIME"                                                                                                                 
hwclock --systohc                                                                                                               
                                                                                                                                
echo ",,8e,-" | sfdisk "/dev/""$DEVICE" -uM                                                                                     
                                                                                                                                
pvcreate "/dev/""DISK_DEV""1"                                                                                                   
vgcreate "$LVS_NAME" "/dev/""DISK_DEV""1"                                                                                       
                                                                                                                                
lvcreate -L 2.5G -n swap "$LVS_NAME"                                                                                            
lvcreate -L 20G -n root "$LVS_NAME"                                                                                             
                                                                                                                                
LVS_FREE=`vgdisplay | sed "s/  */ /g" | grep "^ Free PE / Size " | cut -d " " -f 8 | cut -d "." -f 1"                           
lvcreate -L "$LVS_FREE""G" -n home "$$LVS_NAME"                                                                                 
                                                                                                                                
# PC2: dd if=/dev/random count=4 | gpg --symmetric -a > root_key.gpg                                                            
# PC2: cat root_key.gpg | php -r '$a=file_get_contents("php://stdin");echo "\"";for($i=0;$i<strlen($a);$i++){echo "\x".sprintf("
%                                                                                                                               
%02s", dechex(ord($a[$i])));if(($i+1)%16==0)echo "\"\\\n\"";}echo "\"\n";'

echo -en "RISULTATO" > root_key.gpg

# PC2: gpg --quiet --decrypt rootkey.gpg > root_key
# PC2: cat root_key | php -r '$a=file_get_contents("php://stdin");echo "\"";for($i=0;$i<strlen($a);$i++){echo "\x".sprintf("%02s[Hpvcreate "/dev/""DISK_DEV""1"                                                                                                   
vgcreate "$LVS_NAME" "/dev/""DISK_DEV""1"                                                                                       
                                                                                                                                
lvcreate -L 2.5G -n swap "$LVS_NAME"                                                                                            
lvcreate -L 20G -n root "$LVS_NAME"                                                                                             
                                                                                                                                
LVS_FREE=`vgdisplay | sed "s/  */ /g" | grep "^ Free PE / Size " | cut -d " " -f 8 | cut -d "." -f 1"                           
lvcreate -L "$LVS_FREE""G" -n home "$$LVS_NAME"                                                                                 
                                                                                                                                
# PC2: dd if=/dev/random count=4 | gpg --symmetric -a > root_key.gpg                                                            
# PC2: cat root_key.gpg | php -r '$a=file_get_contents("php://stdin");echo "\"";for($i=0;$i<strlen($a);$i++){echo "\x".sprintf("
%02s", dechex(ord($a[$i])));if(($i+1)%16==0)echo "\"\\\n\"";}echo "\"\n";'                                                      
                                                                                                                                
echo -en "RISULTATO" > root_key.gpg                                                                                             
                                                                                                                                
# PC2: gpg --quiet --decrypt rootkey.gpg > root_key                                                                             
# PC2: cat root_key | php -r '$a=file_get_contents("php://stdin");echo "\"";for($i=0;$i<strlen($a);$i++){echo "\x".sprintf("%02s
"                                                                                                                               
", dechex(ord($a[$i])));if(($i+1)%16==0)echo "\"\\\n\"";}echo "\"\n";'

echo -en "RISULTATO" > root_key

# gpg --quiet --decrypt rootkey.gpg | cryptsetup -v --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sda3
cat root_key | cryptsetup -v --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat "/dev/mapper/""$LVS_NAME""-root"
cat root_key | cryptsetup luksOpen "/dev/mapper/""$LVS_NAME""-root" root

cat root_key | cryptsetup -v --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat "/dev/mapper/""$LVS_NAME""-swap"
cat root_key | cryptsetup luksOpen "/dev/mapper/""$LVS_NAME""-swap" swap

cat root_key | cryptsetup -v --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat "/dev/mapper/""$LVS_NAME""-home"
cat root_key | cryptsetup luksOpen "/dev/mapper/""$LVS_NAME""-home" home

mkswap -L swap /dev/mapper/swap
swapon /dev/mapper/swap

#mkfs.ext3 -j -m 1 -O dir_index,filetype,sparse_super /dev/mapper/root
#mkfs.ext3 -j -m 1 -O dir_index,filetype,sparse_super /dev/mapper/home

mkfs.xfs -L root /dev/mapper/root
mkfs.xfs -L home /dev/mapper/home

mount /dev/mapper/root /mnt/gentoo/

mkdir /mnt/gentoo/home
mount /dev/mapper/home /mnt/gentoo/home/

echo ",,83," | sfdisk "/dev/""$BOOT_DEV" -uM
mkfs.ext2 "/dev/""$BOOT_DEV"
mkdir /mnt/gentoo/boot
mount -L boot "/dev/""$BOOT_DEV"" /mnt/gentoo/boot/

cd /mnt/gentoo/
wget "$STAGE3"
tar -xjpf stage3-*.tar.bz2

wget "$PORTAGE"
tar -xjf portage-*.tar.bz2 -C usr/

/usr/portage/profiles/default-linux/x86/2007.0/desktop

nano etc/make.conf

mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev

chroot /mnt/gentoo

env-update && source /etc/profile

echo "nameserver 4.2.2.2" > /etc/resolv.conf

emerge --sync

ln -sf /usr/share/zoneinfo/Europe/Rome /etc/localtime

#        isLuks <device> - tests <device> for LUKS partition header
