]> CyberLeo.Net >> Repos - CDN/j.git/blob - seeds/debian.sh
j: add seed support for scripted chroot creation
[CDN/j.git] / seeds / debian.sh
1 # Initialize a debian chroot using debootstrap into the provided directory
2
3 # Parameters that I want on the command line:
4 # <arch> <suite> <repo>
5
6 [ "$(which debootstrap 2>&-)" ] || pebkac "j_init: debian: debootstrap not found"
7
8 : ${arch=${1}}
9 : ${suite=${2}}
10 : ${repo=${3}}
11 : ${include=curl,file,less,locales,sudo,vim,whois}
12
13 case "${arch}" in
14 x86|i386) arch=i386 ;;
15 amd64|x86_64|x64) arch=amd64 ;;
16 *) pebkac "Unsupported arch '${arch}'" ;;
17 esac
18
19 [ "${suite}" ] || pebkac "Debian seed needs <arch> <suite> [repo]"
20
21 [ "${repo}" ] || repo="file://${jseed}/debian"
22
23 mkdir -p "${jroot}/var/cache/apt/archives"
24
25 echo "Seeding deb archives" >&2
26 ( cd "${jseed}/debian/debs"; find . | cpio -pl "${jroot}/var/cache/apt/archives" )
27
28 cmd="debootstrap '--arch=${arch}' '--keyring=${jseed}/debian/debian-archive-keyring.gpg' '--include=${include}' '${suite}' '${jroot}' '${repo}'"
29 echo "Executing: ${cmd}"
30 eval "${cmd}"
31
32 # Make sure locales are generated on first start
33 mkdir -p "${jroot}/etc/rcJ.d"
34 cat > "${jroot}/etc/rcJ.d/S00localegen" <<"EOF"
35 #!/bin/sh
36 /bin/sed -i '/en_US/s/^# //' /etc/locale.gen
37 /usr/sbin/locale-gen
38 /bin/rm -f "${0}"
39 EOF
40 chmod 755 "${jroot}/etc/rcJ.d/S00localegen"
41
42 echo "Adding user"
43 sed -i '/%sudo/s/^# *//' "${jroot}/etc/sudoers"
44 user="${ORIG_USER}"
45 uid="$(id -u "${ORIG_USER}")"
46 [ "${user}" -a "${uid}" ] || { echo "Cannot add nonexistent user"; false; }
47 chroot "${jroot}" /usr/sbin/useradd -m -o -u "${uid}" -G root,sudo "${user}"