summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2018-06-13 23:27:47 -0400
committerAndrew Cady <d@jerkface.net>2018-06-13 23:27:47 -0400
commit1735f15a8c61400d92e46b9a2472ba8070c81107 (patch)
tree520b8ded31f40326b65624db6a884c868e0ea4b8
parent3b6e13e10c96b5d7dca88fb2af3a1c662bf62954 (diff)
build-rootfs.sh builds the rootfs
-rwxr-xr-xbuild-rootfs.sh313
1 files changed, 313 insertions, 0 deletions
diff --git a/build-rootfs.sh b/build-rootfs.sh
new file mode 100755
index 0000000..63eb4c9
--- /dev/null
+++ b/build-rootfs.sh
@@ -0,0 +1,313 @@
1#!/bin/sh -e
2release=stretch
3img_name=t3
4img_file=debootstrap/${release}-minbase-amd64.${img_name}.btrfs
5
6die() { printf '%s\n' "$*" >&2; exit 1; }
7
8chroot="./debootstrap.sh chroot $release $img_name"
9img_sh="./debootstrap.sh sh $release $img_name"
10
11install_packages()
12{
13# $chroot env DEBIAN_FRONTEND=noninteractive apt-get -y install "$@"
14 (set -x; ./debootstrap.sh add "$release" "$img_name" "$@")
15}
16
17defrag()
18{
19 $img_sh btrfs fi def -rc .
20}
21
22xorg_packages()
23{
24 wordlines xorg libxss1
25
26}
27
28wordlines() { printf '%s\n' "$@"; }
29
30useful_packages()
31{
32 wordlines vim-tiny git tmux ssh
33}
34
35network_packages()
36{
37 wordlines \
38 network-manager avahi-daemon libnss-mdns \
39 iproute2 iw iputils-ping \
40 firmware-iwlwifi firmware-linux firmware-linux-nonfree \
41 firmware-atheros firmware-linux-free firmware-b43legacy-installer \
42 firmware-ti-connectivity firmware-libertas firmware-ipw2x00 \
43 firmware-ralink firmware-b43-installer firmware-realtek firmware-iwlwifi \
44 firmware-brcm80211 firmware-zd1211
45}
46
47filesystem_tool_packages()
48{
49 wordlines btrfs-progs cryptsetup-bin hfsprogs mdadm nbd-client ntfs-3g
50}
51
52boot_tool_packages()
53{
54 wordlines grub-pc isolinux initramfs-tools
55}
56
57samizdat_dep_packages()
58{
59 wordlines \
60 ca-certificates cryptsetup-bin dnsmasq eject \
61 gnupg gnupg2 gnupg-agent grub2-common grub-common grub-pc \
62 grub-pc-bin hfsprogs hfsutils nbd-server netscript-ipfilter \
63 openssl pinentry-curses strongswan tor xorriso
64}
65
66find_prog()
67{
68 want_prog=$1
69 prog=$(which "$want_prog") && return
70 if [ "$SUDO_USER" -a "$(id -u)" = 0 ]; then
71 prog=$(sh -c 'su - "$SUDO_USER" -c "which xmonad"')
72 else
73 false
74 fi
75}
76
77install_program_from_path()
78{
79 find_prog "$1" || die "program not found: $1"
80 $img_sh cp -L "$prog" ./usr/local/bin/"$1"
81}
82
83install_xmonad()
84{
85 install_program_from_path xmonad
86 $chroot ln -s /usr/local/bin/xmonad /etc/alternatives/x-window-manager
87 $chroot ln -s /etc/alternatives/x-window-manager /usr/bin/x-window-manager
88}
89
90kernel_packages()
91{
92 wordlines busybox cpio firmware-linux-free \
93 initramfs-tools initramfs-tools-core irqbalance \
94 klibc-utils kmod libklibc libnuma1 linux-base \
95 linux-image-4.9.0-6-amd64 linux-image-amd64 \
96 systemd-sysv
97}
98
99install_apt_cache()
100{
101 $img_sh rsync -RaP /var/cache/apt --exclude archives ./
102}
103
104install_kiki()
105{
106 install_program_from_path cokiki
107 install_program_from_path kiki
108}
109
110install_samizdat()
111{
112 srcdir=$(pwd) || return
113 export srcdir
114 $img_sh sh -c 'instdir=$(pwd) && cd "$srcdir" && make instdir="${instdir}" install install-configuration'
115}
116
117make_bootable()
118{
119 ln -sf "$PWD"/"${img_file}" /srv/nbd.btrfs
120 btrfstune -S1 /srv/nbd.btrfs
121}
122
123print_config_dat()
124{
125 # perl -n -00 -e '/^Flags:.*seen/m && print;' /var/cache/debconf/config.dat > config.seen.dat
126 cat <<'EOF'
127
128Name: debconf/frontend
129Template: debconf/frontend
130Value: Noninteractive
131Owners: debconf
132Flags: seen
133
134Name: debconf/priority
135Template: debconf/priority
136Value: critical
137Owners: debconf
138Flags: seen
139
140Name: locales/locales_to_be_generated
141Template: locales/locales_to_be_generated
142Value: en_US.UTF-8 UTF-8
143Owners: locales
144Flags: seen
145
146Name: locales/default_environment_locale
147Template: locales/default_environment_locale
148Value: en_US.UTF-8
149Owners: locales
150Flags: seen
151Variables:
152 locales = en_US.UTF-8
153
154Name: tzdata/Areas
155Template: tzdata/Areas
156Value: US
157Owners: tzdata
158Flags: seen
159
160Name: tzdata/Zones/Etc
161Template: tzdata/Zones/Etc
162Value: UTC
163Owners: tzdata
164Flags: seen
165
166Name: tzdata/Zones/US
167Template: tzdata/Zones/US
168Value: Michigan
169Owners: tzdata
170Flags: seen
171
172Name: firmware-ipw2x00/license/accepted
173Template: firmware-ipw2x00/license/accepted
174Owners: firmware-ipw2x00
175
176Name: firmware-ipw2x00/license/error
177Template: firmware-ipw2x00/license/error
178Owners: firmware-ipw2x00
179
180Name: b43-fwcutter/install-unconditional
181Template: b43-fwcutter/install-unconditional
182Value: true
183Owners: b43-fwcutter
184
185EOF
186}
187
188install_config_dat()
189{
190 print_config_dat | $img_sh sh -c 'cat >> ./var/cache/debconf/config.dat'
191}
192
193all_packages()
194{
195 (kernel_packages
196 network_packages
197 useful_packages
198 filesystem_tool_packages
199 boot_tool_packages
200 samizdat_dep_packages
201 xorg_packages) | sort -u
202}
203
204main()
205{
206 ./debootstrap.sh init $release
207 ./debootstrap.sh new $release $img_name
208
209 install_config_dat
210
211 install_packages $(kernel_packages)
212 install_packages $(network_packages)
213 install_packages $(useful_packages)
214 install_packages $(filesystem_tool_packages)
215 install_packages $(boot_tool_packages)
216 install_packages $(samizdat_dep_packages)
217 install_packages $(xorg_packages)
218 install_xmonad
219
220 # install_apt_cache
221 install_samizdat
222 install_kiki
223
224 make_bootable
225}
226
227if [ "${0##*/}" = build-rootfs.sh ]; then
228 main
229fi
230
231
232exit
233: <<'EOF'
234# manual installs
235
236# essential tools
237vim-tiny
238git
239tmux
240ssh
241
242# filesystem access
243btrfs-tools
244cryptsetup
245hfsprogs
246mdadm
247nbd-client
248ntfs-3g
249
250# bootloaders
251grub-pc
252isolinux
253initramfs-tools
254
255# network
256network-manager
257avahi-daemon
258libnss-mdns
259
260# network tools
261iproute2
262iw
263iputils-ping
264
265# wifi
266firmware-iwlwifi
267firmware-linux
268firmware-linux-nonfree
269
270# apt-cache pkgnames firmware|while read line; do apt-cache show $line|grep -qi wireless && echo $line; done
271firmware-atheros
272firmware-linux-free
273firmware-b43legacy-installer
274firmware-ti-connectivity
275firmware-libertas
276firmware-ipw2x00
277firmware-ralink
278firmware-b43-installer
279firmware-realtek
280firmware-iwlwifi
281firmware-brcm80211
282firmware-zd1211
283
284# graphics
285xorg
286libxss1 # for xmonad, to be installed via binary
287
288# samizdat deps
289
290btrfs-progs
291ca-certificates
292cryptsetup-bin
293dnsmasq
294eject
295gnupg
296gnupg2
297gnupg-agent
298grub2-common
299grub-common
300grub-pc
301grub-pc-bin
302hfsprogs
303hfsutils
304nbd-server
305netscript-ipfilter
306openssl
307pinentry-curses
308strongswan
309tor
310xorriso
311
312
313EOF