Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2014
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.82 KB | None | 0 0
  1. #!/bin/bash -x
  2.  
  3. DISTRO=arch
  4. VERSION=2013
  5.  
  6. # set up base system plus:
  7. # syslinux (necessary? i don't think it is...)
  8. # vim (because nano is lame)
  9. # openssh
  10. # ...any other package from standard Arch repos...
  11. PACKS="base base-devel syslinux openssh vim"
  12.  
  13. MIRROR1=http://mirror.umoss.org/archlinux
  14. MIRROR2=http://mirror.rit.edu/archlinux
  15.  
  16. if [[ ${1} == 64 ]]; then
  17. ARCH=x86_64
  18. else
  19. if [[ ${1} == 32 ]]; then
  20. ARCH=i686
  21. else
  22. echo "Usage: ${0} 32|64"
  23. exit 1
  24. fi
  25. fi
  26.  
  27. ROOT=${DISTRO}-${VERSION}-${ARCH}
  28.  
  29. TEMPLATE=$(pwd)/${ROOT}.tar.gz
  30.  
  31. if [[ "$(whoami)" == "root" ]]; then
  32. echo "Building template: ${ROOT}"
  33. else
  34. echo "This script must be run as root (or with sudo)"
  35. exit 1
  36. fi
  37.  
  38. cat <<EOF > pacman.conf
  39. [options]
  40. HoldPkg = pacman glibc
  41. SyncFirst = pacman
  42. Architecture = ${ARCH}
  43.  
  44. [core]
  45. Server = ${MIRROR1}/\$repo/os/${ARCH}
  46. Server = ${MIRROR2}/\$repo/os/${ARCH}
  47. Include = /etc/pacman.d/mirrorlist
  48. [extra]
  49. Server = ${MIRROR1}/\$repo/os/${ARCH}
  50. Server = ${MIRROR2}/\$repo/os/${ARCH}
  51. Include = /etc/pacman.d/mirrorlist
  52. [community]
  53. Server = ${MIRROR1}/\$repo/os/${ARCH}
  54. Server = ${MIRROR2}/\$repo/os/${ARCH}
  55. Include = /etc/pacman.d/mirrorlist
  56. EOF
  57.  
  58. mkarchroot -C pacman.conf ${ROOT} ${PACKS}
  59.  
  60. if [[ $? -ne 0 ]]; then
  61. echo "Build failed".
  62. exit 1
  63. fi
  64.  
  65. chmod 666 ${ROOT}/dev/null
  66. chmod 666 ${ROOT}/dev/zero
  67. mknod -m 666 ${ROOT}/dev/random c 1 8
  68. mknod -m 666 ${ROOT}/dev/urandom c 1 9
  69. mkdir -m 755 ${ROOT}/dev/pts
  70. mkdir -m 1777 ${ROOT}/dev/shm
  71. mknod -m 666 ${ROOT}/dev/tty c 5 0
  72. mknod -m 666 ${ROOT}/dev/full c 1 7
  73. mknod -m 600 ${ROOT}/dev/initctl p
  74. mknod -m 666 ${ROOT}/dev/ptmx c 5 2
  75.  
  76.  
  77. # we don't need any getty entries in a container
  78. sed 's/^.*getty.*$//' -i ${ROOT}/etc/inittab
  79.  
  80. cd ${ROOT}
  81. tar czvf ${TEMPLATE} .
  82.  
  83. echo "Created template: ${ROOT}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement