summaryrefslogtreecommitdiffstats
path: root/ship/src/filehooker_install
blob: 1b9717f1a66c7dfa736e615dab0f356707d30e61 (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
#/bin/sh
#@info
#@strict
#@include core
## colored logging
#@include color
#@include network

## for tor hidden service
#@include tor

## for ncdc
#@include filehooker
pass=lolwut.aidsballs
admin=pimp
extra_pkg="vim sudo grub-bios ntp tor openssh btrfs-progs tmux"

info "writing stdout to /tmp/install.log"


rootdisk=${1?please provide the root disk via \$1}
test "$rootdisk" || die "cannot find your root disk"

info "Your rootdisk is $rootdisk"
sleep 3

umount /mnt/boot ||:
umount /mnt ||:
info "overwriting partitioning"
dd if=/dev/zero of=$rootdisk bs=2k count=10
info "starting partitioning"
(printf "o\nn\np\n\n\n+128M\n\a\nn\np\n\n\n\nw\n\n") |fdisk $rootdisk ||:
partprobe $rootdisk
info "done partitioning"
sleep 1
info "generating filesystem on /boot"
mkfs.ext2 ${rootdisk}1
info "Done"
sleep 1
info "starting LVM magic"
vgchange -an ||:
vgremove -f pool0 ||:
pvcreate ${rootdisk}2
vgcreate -ff pool0 ${rootdisk}2
lvcreate -l 100%free -n root pool0
info "finished creating LVM"
sleep 1
info "generating filesystems on the LVM"
mkfs.ext4 /dev/mapper/pool0-root
info "finished generating filesystems"
sleep 1
info "mounting"
mount /dev/mapper/pool0-root /mnt
mkdir /mnt/boot
mount ${rootdisk}1 /mnt/boot

info "finished mounting!"
sleep 1
info "installing!"

info "Setting http proxy"

info "Installing the following packages: $extra_pkg"
if [ -n "${user_pkg:-}" ] ;then
  info "User chooses additional packages: $user_pkg"
else
  info "No additional packages set by user (\$user_pkg unset)"
fi
pacstrap /mnt base base-devel $extra_pkg ${user_pkg:-}
info "installation done"
sleep 1
info "generating configs"
genfstab -U -p /mnt > /mnt/etc/fstab

info "beginning chroot!"
########### BEGIN CHROOT #####
arch-chroot /mnt << EOF
#@strict
msg() { printf "\$*\n" >&2; }
info()  { msg "$green\$*$nc"; }
error() { msg "$green\$*$nc"; }

info "generating locales"
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
echo "LANG=en_US.UTF-8"  >> /etc/locale.conf
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "filehooker$RANDOM" > /etc/hostname
sed -i 's/block/& lvm2/g' /etc/mkinitcpio.conf 
info "Done! "
mkinitcpio -p linux
info "setting root password"
printf "${pass}\n${pass}\n" | (passwd )
info "adding user"
useradd -m -G audio,video,wheel $admin
printf "${pass}\n${pass}\n" | (passwd $admin)

info "editing sudoers"
printf "root ALL=(ALL) ALL\n%s ALL=(ALL)NOPASSWD: ALL\n" %wheel >> /etc/sudoers
for i in dhcpcd ntpd tor sshd ; do
    info "enabling \$i"
    systemctl enable \$i
done

info "installing grub"
grub-install ${rootdisk} 2>/dev/null
#echo "GRUB_DISABLE_LINUX_UUID=true" >> /etc/default/grub
grub-mkconfig > /boot/grub/grub.cfg 2>/dev/null
# prepare ncdc
useradd -m hooker
exit
EOF
######## END CHROOT ##########

info "configuring tor"
torrc=/mnt/etc/tor/torrc
hidden_service_dir=/var/lib/tor/hidden_service/
configure_hidden_service
info "publishing hidden service address"
cat $hidden_service_dir/hostname | send_irc
info "configure ncdc"
curl conf.krebsco.de/filehooker_configure_ncdc | arch-chroot /mnt
info "We're all done, simply reboot!"