Difference between revisions of "Creating a CentOS 5.0 Template"
Josh.hogle (talk | contribs) (New page: Creating a CentOS 5.0 Template for OpenVZ 1. Install a system (virtual or physical) with the default CentOS installation that you wish to package. This could be a minimal distro or the d...) |
|||
(21 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[Category: HOWTO]] | |
+ | [[Category: Templates]] | ||
+ | {{wikify}} | ||
− | + | # Install a system (virtual or physical) with the default CentOS installation that you wish to package. This could be a minimal distro or the default distro or even something custom. | |
− | + | ## It's generally quicker to bootstrap a CentOS system on another yum/rpm-based, or Debian based system by following the instructions in [http://faiwiki.informatik.uni-koeln.de/index.php/FAI_multi-distribution#bootstrapping_the_base_images__for_other_distributions] | |
− | + | # Once the OS has been installed, you need to '''tar''' the contents of the OS. | |
+ | ## First, create a file called '''/tmp/exclude''' and add the following lines to it: | ||
+ | #: .bash_history | ||
+ | #: lost+found | ||
+ | #: /dev/* | ||
+ | #: /mnt/* | ||
+ | #: /tmp/* | ||
+ | #: /proc/* | ||
+ | #: /sys/* | ||
+ | #: /usr/src/* | ||
+ | ## Now, tar the OS file up by typing: '''tar --numeric-owner -czvf /tmp/centos-5.0-<ARCH>-<DISTRO>-image.tar.gz -X /tmp/exclude /''' where <'''ARCH'''> represents the system architecture ('''i386''' or | ||
+ | #: '''x86_64''') and <'''DISTRO'''> represents the distribution (default, minimal, etc.). | ||
+ | ## Now transfer the file over to the OpenVZ server into '''/vz/template/cache''' folder. | ||
+ | # On the OpenVZ server create a “dummy” container by creating a folder called '''/vz/private/50''' | ||
+ | #: and copying the '''/etc/vz/conf/ve-vps.basic.conf-sample''' to '''/etc/vz/conf/50.conf'''. | ||
+ | #: '''NOTE''': 50 is the CTID for the container. You can choose any unused CTID on the OpenVZ server. | ||
+ | # Now create a new folder called '''/vz/template/centos/5/<ARCH>/config''' again where | ||
+ | #: <'''ARCH'''> represents the system architecture. | ||
+ | # Create a file in the folder called rpm and add the following line: | ||
+ | #: 43 | ||
+ | # Create a file called '''yum.conf''' in the folder and add the following lines: | ||
+ | #: [main] | ||
+ | #: | ||
+ | #: cachedir=/vz/template/centos/5/<ARCH>/yum-cache/ | ||
+ | #: | ||
+ | #: reposdir=/dev/null | ||
+ | #: | ||
+ | #: installonlypkgs= | ||
+ | #: | ||
+ | #: [centos5-base] | ||
+ | #: name=CentOS 5 - <ARCH> - Base | ||
+ | #: | ||
+ | #: baseurl=http://mirror.centos.org/centos/5/os/<ARCH>/ | ||
+ | #: | ||
+ | #: enabled=1 | ||
+ | #: | ||
+ | #: gpgcheck=1 | ||
+ | #: | ||
+ | #: [centos5-updates-released] | ||
+ | #: | ||
+ | #: name=CentOS 5 - <ARCH> - Released Updates | ||
+ | #: | ||
+ | #: baseurl=http://mirror.centos.org/centos/5/updates/<ARCH>/ | ||
+ | #: | ||
+ | #: enabled=1 | ||
+ | #: | ||
+ | #: gpgcheck=1 | ||
+ | # Copy '''/etc/vz/dists/centos-4.conf''' to '''/etc/vz/dists/centos-5.conf'''. | ||
+ | # Copy '''/vz/template/centos/4/i386/config/minimal.list''' to ''' /vz/template/centos/5/i386/config/minimal.list'''. | ||
+ | # Change to the '''/vz/private/50''' folder and then run the command '''gunzip –dc /vz/template/cache/centos-5-<ARCH>-<DISTRO>-image.tar.gz | tar –xvf –''' to unpack the base image to the folder. | ||
+ | # Make sure you are in the '''/vz/private/50''' folder. | ||
+ | # Edit '''etc/shadow''' and remove the replace the '''root''' password with !! instead of the hashed value. | ||
+ | # Edit the '''etc/inittab''' file and comment out the lines that respawn '''/sbin/mingetty''' on '''tty1''' through '''tty6'''. Just put a # at the beginning of the line. | ||
+ | # Remove the '''etc/mtab''' file and then create a symbolic link by typing '''ln -s /proc/mounts etc/mtab'''. | ||
+ | # Remove all of the lines from '''etc/fstab''' except for the line that mounts '''/dev/pts'''. | ||
+ | # Edit '''etc/rc.d/rc.sysinit''' and comment out the line that starts '''/sbin/start_udev''' by placing a # at the beginning of the line. | ||
+ | # Now create device nodes by typing: | ||
+ | #: mknod dev/ptmx c 5 2 | ||
+ | #: mkdir dev/pts | ||
+ | #: /sbin/MAKEDEV –d/vz/private/50/dev ttyp ptyp | ||
+ | #: mknod dev/null c 1 3 | ||
+ | #: mknod -m 644 dev/random c 1 8 | ||
+ | #: mknod dev/urandom c 1 9 | ||
+ | # Create the '''var/lock/rpm''' folder. | ||
+ | # If you wish to disable IPv6, do the following: | ||
+ | ## Edit '''etc/sysconfig/network''' and set '''NETWORKING_IPV6''' to '''no'''. | ||
+ | ## Add the following lines to '''etc/modprobe.d/blacklist''': | ||
+ | #: blacklist ipv6 | ||
+ | #: blacklist net-pf-10 | ||
+ | # Disable any physical NICs by modifying the '''etc/sysconfig/network-scripts/ifcfg-ethX''' files (where '''X''' is the interface number starting from '''0''') and setting '''ONBOOT''' to '''no'''. | ||
+ | # Check etc/sysconfig/init to see if PROMPT=yes, and then change to no. Otherwise when startup init script rc will enter interactive mode and wait there forever | ||
− | + | # Now you’re ready to start the template. Type '''vzctl start 50''' and wait for it to start. | |
− | + | # You can install additional packages into the container by typing '''vzyum 50 install <package>''' at the prompt where <'''package'''> represents the name of the software package you wish to install. | |
− | + | # Finally, you should turn off unnecessary services. | |
− | + | ## Enter the container by typing '''vzctl enter 50'''. | |
− | + | ## View the services that are set to run at startup by typing '''chkconfig --list | grep 5:on'''. | |
− | + | ## Disable any unwanted service by typing '''chkconfig --levels 2345 <service>''' off where <'''service'''> represents the service to disable. | |
− | + | #: Services that you can (and should) turn off without harm are acpid, apmd, kudzu, and microcode_ctl. | |
− | + | # Exit the container by typing '''exit''' at the prompt. | |
− | + | # Stop the container by typing '''vzctl stop 50'''. | |
− | + | # Make sure you are in the '''/vz/private/50''' folder. | |
− | + | # Finally, package up the new template by typing '''tar –czvf /vz/template/cache/centos-5-<ARCH>-<DISTRO>.tar.gz ./'''. | |
− | + | # The template is ready for use. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Services that you can (and should) turn off without harm are acpid, apmd, kudzu, and microcode_ctl. | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 04:54, 7 August 2011
Note: this article is not formatted according to this Wiki standards. Please help reformatting it in a better way. |
- Install a system (virtual or physical) with the default CentOS installation that you wish to package. This could be a minimal distro or the default distro or even something custom.
- It's generally quicker to bootstrap a CentOS system on another yum/rpm-based, or Debian based system by following the instructions in [1]
- Once the OS has been installed, you need to tar the contents of the OS.
- First, create a file called /tmp/exclude and add the following lines to it:
- .bash_history
- lost+found
- /dev/*
- /mnt/*
- /tmp/*
- /proc/*
- /sys/*
- /usr/src/*
- Now, tar the OS file up by typing: tar --numeric-owner -czvf /tmp/centos-5.0-<ARCH>-<DISTRO>-image.tar.gz -X /tmp/exclude / where <ARCH> represents the system architecture (i386 or
- x86_64) and <DISTRO> represents the distribution (default, minimal, etc.).
- Now transfer the file over to the OpenVZ server into /vz/template/cache folder.
- On the OpenVZ server create a “dummy” container by creating a folder called /vz/private/50
- and copying the /etc/vz/conf/ve-vps.basic.conf-sample to /etc/vz/conf/50.conf.
- NOTE: 50 is the CTID for the container. You can choose any unused CTID on the OpenVZ server.
- Now create a new folder called /vz/template/centos/5/<ARCH>/config again where
- <ARCH> represents the system architecture.
- Create a file in the folder called rpm and add the following line:
- 43
- Create a file called yum.conf in the folder and add the following lines:
- [main]
- cachedir=/vz/template/centos/5/<ARCH>/yum-cache/
- reposdir=/dev/null
- installonlypkgs=
- [centos5-base]
- name=CentOS 5 - <ARCH> - Base
- baseurl=http://mirror.centos.org/centos/5/os/<ARCH>/
- enabled=1
- gpgcheck=1
- [centos5-updates-released]
- name=CentOS 5 - <ARCH> - Released Updates
- baseurl=http://mirror.centos.org/centos/5/updates/<ARCH>/
- enabled=1
- gpgcheck=1
- Copy /etc/vz/dists/centos-4.conf to /etc/vz/dists/centos-5.conf.
- Copy /vz/template/centos/4/i386/config/minimal.list to /vz/template/centos/5/i386/config/minimal.list.
- Change to the /vz/private/50 folder and then run the command gunzip –dc /vz/template/cache/centos-5-<ARCH>-<DISTRO>-image.tar.gz | tar –xvf – to unpack the base image to the folder.
- Make sure you are in the /vz/private/50 folder.
- Edit etc/shadow and remove the replace the root password with !! instead of the hashed value.
- Edit the etc/inittab file and comment out the lines that respawn /sbin/mingetty on tty1 through tty6. Just put a # at the beginning of the line.
- Remove the etc/mtab file and then create a symbolic link by typing ln -s /proc/mounts etc/mtab.
- Remove all of the lines from etc/fstab except for the line that mounts /dev/pts.
- Edit etc/rc.d/rc.sysinit and comment out the line that starts /sbin/start_udev by placing a # at the beginning of the line.
- Now create device nodes by typing:
- mknod dev/ptmx c 5 2
- mkdir dev/pts
- /sbin/MAKEDEV –d/vz/private/50/dev ttyp ptyp
- mknod dev/null c 1 3
- mknod -m 644 dev/random c 1 8
- mknod dev/urandom c 1 9
- Create the var/lock/rpm folder.
- If you wish to disable IPv6, do the following:
- Edit etc/sysconfig/network and set NETWORKING_IPV6 to no.
- Add the following lines to etc/modprobe.d/blacklist:
- blacklist ipv6
- blacklist net-pf-10
- Disable any physical NICs by modifying the etc/sysconfig/network-scripts/ifcfg-ethX files (where X is the interface number starting from 0) and setting ONBOOT to no.
- Check etc/sysconfig/init to see if PROMPT=yes, and then change to no. Otherwise when startup init script rc will enter interactive mode and wait there forever
- Now you’re ready to start the template. Type vzctl start 50 and wait for it to start.
- You can install additional packages into the container by typing vzyum 50 install <package> at the prompt where <package> represents the name of the software package you wish to install.
- Finally, you should turn off unnecessary services.
- Enter the container by typing vzctl enter 50.
- View the services that are set to run at startup by typing chkconfig --list | grep 5:on.
- Disable any unwanted service by typing chkconfig --levels 2345 <service> off where <service> represents the service to disable.
- Services that you can (and should) turn off without harm are acpid, apmd, kudzu, and microcode_ctl.
- Exit the container by typing exit at the prompt.
- Stop the container by typing vzctl stop 50.
- Make sure you are in the /vz/private/50 folder.
- Finally, package up the new template by typing tar –czvf /vz/template/cache/centos-5-<ARCH>-<DISTRO>.tar.gz ./.
- The template is ready for use.