blob: 0bc5284dba9e918a0180aeaa74337ea483b8a2e7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/bash
depend_module yaourt
depend_procedure core base
var_RUNTIME_PACKAGES="svn"
phase_preparation=(\
msg_manual \
runtime_network \
runtime_svn \
msg_automatic \
select_source \
runtime_packages \
runtime_yaourt)
phase_finish=(configure_home msg_report)
worker_msg_manual ()
{
# All things that need to be done manually first
notify "A few manual things need to happen first..."
}
worker_msg_automatic ()
{
notify "**** From now on. everything will be automatic. Enjoy the show!" # not true: you need pass for dm_crypt
}
worker_runtime_network ()
{
if ask_yesno "Do you want to (re)-configure your networking?"
then
#TODO: which function do i need here?
donetwork #configure network by using library
else
notify "Ok. skipping network config"
fi
}
worker_runtime_svn ()
{
SVN_USERNAME=dieter
ask_password svn #TODO: if user entered incorrect password, the install process will just fail..
SVN="svn --username $SVN_USERNAME --password $SVN_PASSWORD"
SVN_BASE=https://192.168.1.2/svn/repos
TARGET_HOST=desktop-a7n8x #TODO: prompt user for this, or let him pass it as cmdline argument (and check with svn info)
_accept_ssl_cert
}
worker_prepare_disks ()
{
modprobe dm-crypt || die_error "Cannot modprobe dm-crypt"
modprobe -q aes-x86-64 || modprobe aes-i586 || die_error "Cannot modprobe aes-x86-64 or aes-i586"
# Cleanup whatever state the disk is in (that includes previous, failed runs of this script)
umount /dev/mapper/cryptpool-* 2>/dev/null
vgremove -f cryptpool 2>/dev/null
pvremove /dev/mapper/sda2_crypt 2>/dev/null
cryptsetup luksClose sda2_crypt 2>/dev/null
dd if=/dev/urandom of=/dev/sda bs=512 count=1
#TODO: integrate this stuff into the functions in the libs + do error checking and handling
sfdisk /dev/sda 2>&1 | grep -v 'not have an msdos signature' << EOF
,10,L,*
,,L
EOF
#TODO: when sfdisk is done, i still have an invalid partition table?
cryptsetup --batch-mode -c aes-xts-plain -y -s 512 luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 sda2_crypt
pvcreate /dev/mapper/sda2_crypt
vgcreate cryptpool /dev/mapper/sda2_crypt
lvcreate -L 2G -n swap cryptpool
lvcreate -L 500M -n tmp cryptpool
lvcreate -L 10G -n home cryptpool
lvcreate -L 10G -n root cryptpool
lvcreate -L 3G -n var cryptpool
for i in home root tmp var
do
mkdir -p $var_TARGET_DIR/$i
mke2fs -j /dev/cryptpool/$i && mount /dev/cryptpool/$i $var_TARGET_DIR/$i
done
#TODO fstab? auto-add to fstab with libs? auto mkdir's on target_dir?
true
}
worker_package_list ()
{
$SVN export $SVN_BASE/ddm-configs/$TARGET_HOST/trunk/package-list $var_PKG_FILE || die_error "Could not export package list!"
TARGET_PACKAGES=`cat $var_PKG_FILE` # beware, there are newlines in it now
TARGET_PACKAGES=`echo $TARGET_PACKAGES` # not anymore :)
}
worker_install_packages ()
{
target_prepare_pacman core extra community #TODO: it would be better if this was a separate worker, i think
[ -z "$TARGET_PACKAGES" ] && die_error "No packages listed to be installed!"
installpkg
}
worker_configure_home ()
{
#checkout from svn
true
}
worker_set_clock ()
{
#timezone="Europe/Brussels"
#Not doing anything. hwclock is set already and configs are coming from svn anyway..
true
}
worker_install_bootloader ()
{
install-grub /dev/sda
}
worker_runtime_yaourt ()
{
_yaourt_replace_pacman
}
|