<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dschauer</id>
	<title>OpenVZ Virtuozzo Containers Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openvz.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dschauer"/>
	<link rel="alternate" type="text/html" href="https://wiki.openvz.org/Special:Contributions/Dschauer"/>
	<updated>2026-06-10T02:03:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Archlinux_Template_creation&amp;diff=7319</id>
		<title>Archlinux Template creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Archlinux_Template_creation&amp;diff=7319"/>
		<updated>2009-05-15T05:52:52Z</updated>

		<summary type="html">&lt;p&gt;Dschauer: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Instructions manually create a minimal Archlinux (0.8) &amp;quot;Voodoo&amp;quot; OS Template.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
I used a modified archbootstrap script which can be found at http://forzza.systs.org/openvz-misc/&lt;br /&gt;
{{Note | This link is currently broken}}&lt;br /&gt;
{{Note | One can use mkarchroot (provided by devtools) in place of archbootstrap if building the template on Archlinux. See Disussion.}}&lt;br /&gt;
Edit settings of script &amp;quot;archbootstrap&amp;quot; :&lt;br /&gt;
&lt;br /&gt;
 ARCH=&amp;quot;i686&amp;quot;&lt;br /&gt;
 IGNORE=&amp;quot;rp-pppoe ppp wireless_tools xfsdump xfsprogs reiserfsprogs lshwd usbutils pciutils pcmciautils module-init-tools mdadm mkinitcpio libusb jfsutils lvm2 lilo cryptsetup device-mapper dhcpcd hwdetect dmapi gen-init-cpio grub&amp;quot;&lt;br /&gt;
 umark PACMAN_OPTS (remove '#')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|I suggest to place the build for OpenVZ templates to /vz/template/, schema: /vz/template/$DIST/$VERSION/$ARCH/}}&lt;br /&gt;
&lt;br /&gt;
Built this OS-Template with:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|| [[CT0]]_dist || Debian&lt;br /&gt;
|-&lt;br /&gt;
|| [[CT0]]_ARCH ||	i386&lt;br /&gt;
|-&lt;br /&gt;
|| DIST || arch&lt;br /&gt;
|-&lt;br /&gt;
|| VERSION || 0.8&lt;br /&gt;
|-&lt;br /&gt;
|| ARCH || depends on CT0 settings above&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== bootstrapping Archlinux ==&lt;br /&gt;
&lt;br /&gt;
Syntax:&lt;br /&gt;
&lt;br /&gt;
 CT0_# /usr/bin/archbootstrap /vz/template/$DIST/$VERSION/$ARCH/ [MIRROR]&lt;br /&gt;
&lt;br /&gt;
{{Note|Please use mirrors! A full list of Archlinux mirrors: http://wiki.archlinux.org/index.php/Mirror}}&lt;br /&gt;
&lt;br /&gt;
== enter the Build with chroot ==&lt;br /&gt;
&lt;br /&gt;
All the commands below are executed from the root shell. I this howto &amp;quot;chroot&amp;quot; is used to enter as NEWROOT, a BUILD-VE must not be created!&lt;br /&gt;
&lt;br /&gt;
 CT0_# chroot /vz/template/$DIST/$VERSION/$ARCH/&lt;br /&gt;
&lt;br /&gt;
=== setting DNS server ===&lt;br /&gt;
&lt;br /&gt;
For the chroot BUILD we also need to specify a DNS for it:&lt;br /&gt;
&lt;br /&gt;
 BUILD_# mv /etc/resolv.conf.pacorig /etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
=== update and install packages ===&lt;br /&gt;
&lt;br /&gt;
Update (sync) pacman cache and update installed packages&lt;br /&gt;
&lt;br /&gt;
 BUILD_# pacman -Syu&lt;br /&gt;
&lt;br /&gt;
Install openssh (client and server) , quota-tools and iproute&lt;br /&gt;
&lt;br /&gt;
 BUILD_# pacman -S openssh quota-tools iproute&lt;br /&gt;
&lt;br /&gt;
=== fix /etc/mtab ===&lt;br /&gt;
&lt;br /&gt;
Add symlink /proc/mount /etc/mtab&lt;br /&gt;
&lt;br /&gt;
 BUILD_# ln -s /proc/mounts /etc/mtab&lt;br /&gt;
&lt;br /&gt;
=== fix /etc/inittab ===&lt;br /&gt;
&lt;br /&gt;
Remove getty lines from inittab:&lt;br /&gt;
&lt;br /&gt;
 BUILD_# sed -i -e '/getty/d' /etc/inittab&lt;br /&gt;
&lt;br /&gt;
=== create device nodes ===&lt;br /&gt;
&lt;br /&gt;
Create device nodes at /dev, like console, full, null, zero, urandom, ptmx and fifo of initctl&lt;br /&gt;
&lt;br /&gt;
 BUILD_# mknod -m 600 /dev/console c 5 1&lt;br /&gt;
 BUILD_# mknod -m 666 /dev/tty c 5 0&lt;br /&gt;
 BUILD_# mknod -m 666 /dev/full c 1 7&lt;br /&gt;
 BUILD_# mknod -m 600 /dev/initctl p&lt;br /&gt;
 BUILD_# mknod -m 666 /dev/null c 1 3&lt;br /&gt;
 BUILD_# mknod -m 666 /dev/ptmx c 5 2 &lt;br /&gt;
 BUILD_# mkdir pts&lt;br /&gt;
 BUILD_# mknod -m 666 /dev/random c 1 8&lt;br /&gt;
 BUILD_# mknod -m 444 /dev/urandom c 1 9 &lt;br /&gt;
 BUILD_# mknod -m 666 /dev/zero c 1 5&lt;br /&gt;
&lt;br /&gt;
=== sysinit script modification ===&lt;br /&gt;
&lt;br /&gt;
Remove deleting of /etc/mtab in /etc/rc.sysinit and add mounting of /dev/pts&lt;br /&gt;
&lt;br /&gt;
 BUILD_# nano /etc/rc.sysinit&lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
 /bin/rm -f /etc/mtab&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
to &lt;br /&gt;
&lt;br /&gt;
 [...]&lt;br /&gt;
 #/bin/rm -f /etc/mtab&lt;br /&gt;
 /bin/mount -t devpts none /dev/pts&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
=== modify the main configuration file ===&lt;br /&gt;
&lt;br /&gt;
 BUILD_# nano /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 # Localization&lt;br /&gt;
 LOCALE=&amp;quot;en_US.utf8&amp;quot;&lt;br /&gt;
 HARDWARECLOCK=&amp;quot;localtime&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # example : German KEYMAP and Timezone to Berlin&lt;br /&gt;
 TIMEZONE=&amp;quot;Europe/Berlin&amp;quot;&lt;br /&gt;
 KEYMAP=&amp;quot;de-latin1-nodeadkeys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 CONSOLEFONT=&lt;br /&gt;
 CONSOLEMAP=&lt;br /&gt;
 USECOLOR=&amp;quot;yes&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # Network settings&lt;br /&gt;
 HOSTNAME=&amp;quot;localhost&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 # DAEMONS&lt;br /&gt;
 # Add openssh to DAEMONS, start at bootup ; ssh-keys are build on first VE start !!!&lt;br /&gt;
 DAEMONS=(syslog-ng network netfs crond ssh)&lt;br /&gt;
&lt;br /&gt;
=== enable ssh connections ===&lt;br /&gt;
&lt;br /&gt;
{{Note|All connection are disabled to VE, see /etc/hosts.deny, only affected server built-in with libwrap}}&lt;br /&gt;
&lt;br /&gt;
Allow ssh:&lt;br /&gt;
&lt;br /&gt;
 BUILD_# echo &amp;quot;ssh: ALL : ALLOW&amp;quot; &amp;gt;&amp;gt; /etc/hosts.allow}&lt;br /&gt;
&lt;br /&gt;
=== lock (disable) the root account ===&lt;br /&gt;
&lt;br /&gt;
 BUILD_# passwd -l root&lt;br /&gt;
&lt;br /&gt;
=== exit the chroot to CT0 ===&lt;br /&gt;
&lt;br /&gt;
 BUILD_# exit&lt;br /&gt;
&lt;br /&gt;
== build a exclude list ==&lt;br /&gt;
&lt;br /&gt;
Shrink the OS-Template, so not all files needed in a VE - OS - TEMPLATE&lt;br /&gt;
&lt;br /&gt;
Remove unused pacman backup files:&lt;br /&gt;
&lt;br /&gt;
CT0_# find ./ -name '*.pacorig' &amp;gt; ../exclude.list-$ARCH&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/resolv.conf&amp;lt;/code&amp;gt; is added by vzctl:&lt;br /&gt;
&lt;br /&gt;
 CT0_# echo &amp;quot;etc/resolv.conf&amp;quot; &amp;gt;&amp;gt; ../exclude.list-$ARCH&lt;br /&gt;
&lt;br /&gt;
Don't add downloaded pkg to ostemplate:&lt;br /&gt;
&lt;br /&gt;
 CT0_# find ./var/cache/ -name '*.tar.gz' &amp;gt;&amp;gt; ../exclude.list-$ARCH&lt;br /&gt;
&lt;br /&gt;
We dont need no logs and history:&lt;br /&gt;
&lt;br /&gt;
 CT0_# find ./var/cache/ -name '*.tar.gz' &amp;gt;&amp;gt; ../exlcude.list-$ARCH&lt;br /&gt;
 CT0_# find ./root/.bash_history &amp;gt;&amp;gt; ../exclude.list-$ARCH&lt;br /&gt;
&lt;br /&gt;
== create OS template ==&lt;br /&gt;
&lt;br /&gt;
 CT0_# tar -X ../exclude.list-$ARCH -czf /vz/template/cache/arch-0.8-$ARCH-minimal.tar.gz ./&lt;br /&gt;
&lt;br /&gt;
== use the OS template ==&lt;br /&gt;
&lt;br /&gt;
 CT0_# vzctl create &amp;lt;VEID&amp;gt; --ostemplate arch-0.8-$ARCH-minimal ...&lt;br /&gt;
&lt;br /&gt;
 == update the OS template ==&lt;br /&gt;
&lt;br /&gt;
To update a template is really easy, enter the build with chroot, performing upgrade task&lt;br /&gt;
&lt;br /&gt;
 CT0_# chroot /vz/template/$DIST/$VERSION/$ARCH/ 'pacman -Syu'&lt;br /&gt;
&lt;br /&gt;
Update the exclude list, and pack upgraded OS - Template&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.archlinux.org/index.php/Main_Page Archlinux wiki]&lt;br /&gt;
&lt;br /&gt;
[[Category: HOWTO]]&lt;br /&gt;
[[Category: Templates]]&lt;/div&gt;</summary>
		<author><name>Dschauer</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.openvz.org/index.php?title=Talk:Archlinux_Template_creation&amp;diff=7318</id>
		<title>Talk:Archlinux Template creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.openvz.org/index.php?title=Talk:Archlinux_Template_creation&amp;diff=7318"/>
		<updated>2009-05-15T05:50:47Z</updated>

		<summary type="html">&lt;p&gt;Dschauer: Pointed out replacement tool for missing script. Showed script I've used to create templates.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;One can use mkarchroot (provided by devtools) in place of archbootstrap if building the template with Archlinux.&lt;br /&gt;
&lt;br /&gt;
Here is a script I have used to create Archlinux templates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash -x&lt;br /&gt;
&lt;br /&gt;
DISTRO=arch&lt;br /&gt;
VERSION=das1&lt;br /&gt;
&lt;br /&gt;
PACKS=&amp;quot;sed gawk coreutils filesystem texinfo grep pacman logrotate \&lt;br /&gt;
module-init-tools wget curl net-tools procps tar cpio zip unzip \&lt;br /&gt;
gzip bzip2 lzma-utils psmisc initscripts iputils dnsutils iproute2 \&lt;br /&gt;
less dash which openssh joe sudo htop dcron syslog-ng screen \&lt;br /&gt;
util-linux-ng&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MIRROR1=http://mirror.umoss.org/archlinux&lt;br /&gt;
MIRROR2=http://mirror.rit.edu/archlinux&lt;br /&gt;
&lt;br /&gt;
if [[ ${1} == 64 ]]; then&lt;br /&gt;
  ARCH=x86_64&lt;br /&gt;
else&lt;br /&gt;
  if [[ ${1} == 32 ]]; then&lt;br /&gt;
    ARCH=i686&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;Usage: ${0} 32|64&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
ROOT=${DISTRO}-${VERSION}-${ARCH}&lt;br /&gt;
&lt;br /&gt;
TEMPLATE=$(pwd)/${ROOT}.tar.gz&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$(whoami)&amp;quot; == &amp;quot;root&amp;quot; ]]; then&lt;br /&gt;
	echo &amp;quot;Building template: ${ROOT}&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
	echo &amp;quot;This script must be run as root (or with sudo)&amp;quot;&lt;br /&gt;
	exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt; pacman.conf&lt;br /&gt;
[options]&lt;br /&gt;
HoldPkg     = pacman glibc&lt;br /&gt;
SyncFirst   = pacman&lt;br /&gt;
&lt;br /&gt;
[core]&lt;br /&gt;
Server = ${MIRROR1}/\$repo/os/${ARCH}&lt;br /&gt;
Server = ${MIRROR2}/\$repo/os/${ARCH}&lt;br /&gt;
Include = /etc/pacman.d/mirrorlist&lt;br /&gt;
[extra]&lt;br /&gt;
Server = ${MIRROR1}/\$repo/os/${ARCH}&lt;br /&gt;
Server = ${MIRROR2}/\$repo/os/${ARCH}&lt;br /&gt;
Include = /etc/pacman.d/mirrorlist&lt;br /&gt;
[community]&lt;br /&gt;
Server = ${MIRROR1}/\$repo/os/${ARCH}&lt;br /&gt;
Server = ${MIRROR2}/\$repo/os/${ARCH}&lt;br /&gt;
Include = /etc/pacman.d/mirrorlist&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
mkarchroot -C pacman.conf ${ROOT} ${PACKS}&lt;br /&gt;
&lt;br /&gt;
chmod 666 ${ROOT}/dev/null&lt;br /&gt;
chmod 666 ${ROOT}/dev/zero&lt;br /&gt;
mknod -m 666 ${ROOT}/dev/random c 1 8&lt;br /&gt;
mknod -m 666 ${ROOT}/dev/urandom c 1 9&lt;br /&gt;
mkdir -m 755 ${ROOT}/dev/pts&lt;br /&gt;
mkdir -m 1777 ${ROOT}/dev/shm&lt;br /&gt;
mknod -m 666 ${ROOT}/dev/tty c 5 0&lt;br /&gt;
mknod -m 666 ${ROOT}/dev/full c 1 7&lt;br /&gt;
mknod -m 600 ${ROOT}/dev/initctl p&lt;br /&gt;
mknod -m 666 ${ROOT}/dev/ptmx c 5 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# we don't need any getty entries in a container&lt;br /&gt;
sed 's/^.*getty.*$//' -i ${ROOT}/etc/inittab&lt;br /&gt;
&lt;br /&gt;
cd ${ROOT}&lt;br /&gt;
tar czvf ${TEMPLATE} .&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Created template: ${ROOT}&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometime I may get around to editing this page.&lt;/div&gt;</summary>
		<author><name>Dschauer</name></author>
		
	</entry>
</feed>