usermode.conf revision 1.1 1 1.1 christos # $NetBSD: usermode.conf,v 1.1 2013/01/13 20:57:18 christos Exp $
2 1.1 christos # NetBSD/usermode customization script used by mkimage
3 1.1 christos custom=custom
4 1.1 christos image=usermode.img
5 1.1 christos overhead=8 # in MB
6 1.1 christos sets="base etc modules"
7 1.1 christos setsdir=/usr/build/release/$(uname -m)/binary/sets
8 1.1 christos size=0 # in MB
9 1.1 christos specialdirs="/kern /proc"
10 1.1 christos usermodedirs="/var.cow /etc.cow /root.cow /pkgs"
11 1.1 christos
12 1.1 christos make_filesystems() {
13 1.1 christos ${sudo} newfs /dev/r${vnddev}a
14 1.1 christos ${sudo} mount /dev/${vnddev}a ${mnt}
15 1.1 christos }
16 1.1 christos
17 1.1 christos make_fstab() {
18 1.1 christos ${sudo} cat > ${mnt}/etc/fstab << EOF
19 1.1 christos # NetBSD/usermode /etc/fstab
20 1.1 christos /dev/ld0a / ffs ro 1 1
21 1.1 christos /dev/ld1a /pkgs ffs ro 1 2
22 1.1 christos kernfs /kern kernfs rw
23 1.1 christos ptyfs /dev/pts ptyfs rw
24 1.1 christos procfs /proc procfs rw
25 1.1 christos # mount /root as tmpfs on top of existing dir
26 1.1 christos tmpfs /root.cow tmpfs rw,-s2M 0 0
27 1.1 christos /root.cow /root union rw,hidden 0 0
28 1.1 christos # mount /etc as tmpfs on top of existing dir
29 1.1 christos tmpfs /etc.cow tmpfs rw,-s12M 0 0
30 1.1 christos /etc.cow /etc union rw,hidden 0 0
31 1.1 christos # mount /var as tmpfs on top of existing dir
32 1.1 christos tmpfs /var.cow tmpfs rw,-s32M 0 0
33 1.1 christos /var.cow /var union rw,hidden - -
34 1.1 christos tmpfs /tmp tmpfs rw,-s32M 0 0
35 1.1 christos /dev/cd0a /cdrom cd9660 ro,noauto
36 1.1 christos EOF
37 1.1 christos }
38 1.1 christos
39 1.1 christos customize() {
40 1.1 christos ${sudo} cat > ${mnt}/etc/rc.conf << EOF
41 1.1 christos # make sure we have the right rw filesystem at boot
42 1.1 christos critical_filesystems_local="/var.cow /var /etc.cow /etc /root.cow /root"
43 1.1 christos
44 1.1 christos # Add local overrides below
45 1.1 christos #
46 1.1 christos dhcpcd=YES
47 1.1 christos sshd=YES
48 1.1 christos EOF
49 1.1 christos
50 1.1 christos echo "${bar} making extra directories ${bar}"
51 1.1 christos for d in ${usermodedirs}; do
52 1.1 christos ${sudo} mkdir -p ${mnt}/${d}
53 1.1 christos done
54 1.1 christos
55 1.1 christos echo "${bar} customising /var/tmp ${bar}"
56 1.1 christos ${sudo} rm -rf ${mnt}/var/tmp
57 1.1 christos (cd ${mnt}/var && ${sudo} ln -s /tmp tmp)
58 1.1 christos
59 1.1 christos # package-related stuff
60 1.1 christos (cat ${mnt}/etc/csh.cshrc;echo "setenv PKG_DBDIR /usr/pkg/.dbdir") > ${tmp}
61 1.1 christos ${sudo} mv ${tmp} ${mnt}/etc/csh.cshrc
62 1.1 christos (cat ${mnt}/etc/profile;echo "export PKG_DBDIR=/usr/pkg/.dbdir") > ${tmp}
63 1.1 christos ${sudo} mv ${tmp} ${mnt}/etc/profile
64 1.1 christos (echo "PKG_DBDIR=/usr/pkg/.dbdir") > ${tmp}
65 1.1 christos ${sudo} mv ${tmp} ${mnt}/etc/mk.conf
66 1.1 christos (cd ${mnt}/usr && ${sudo} ln -s /pkgs/usr/pkg pkg)
67 1.1 christos
68 1.1 christos # last, customisation stage
69 1.1 christos if [ -d ${custom} ]; then
70 1.1 christos echo "${bar} user customisations from files in ${custom} ${bar}"
71 1.1 christos (cd ${custom} && ${sudo} pax -rwpe . ${mnt})
72 1.1 christos fi
73 1.1 christos
74 1.1 christos df ${mnt}
75 1.1 christos }
76 1.1 christos
77 1.1 christos cleanup() {
78 1.1 christos }
79