Latest revision |
Your text |
Line 28: |
Line 28: |
| This part contains detailed description of LiveCD creation. I've removed the output of some | | This part contains detailed description of LiveCD creation. I've removed the output of some |
| commands in order to simplify the reading. | | commands in order to simplify the reading. |
− |
| |
− | Note: before proceed with commands below, one needs to disable SE Linux on the host, otherwise rpm operations
| |
− | in cdroot-ed environment described later on will fail due to inability to restore security file context. So, please,
| |
− | do:
| |
− | <pre>
| |
− | # setenforce 0
| |
− | </pre>
| |
− | This will put SE linux in so-called 'permissive' mode, where all the blockers will be substituted by warnings.
| |
− | If you wanna get rid of the warnings (rather annoying), the only way to do is to edit <tt>/etc/sysconfig/selinux</tt>
| |
− | to read <tt>SELINUX=disabled</tt> and then reboot the host.
| |
| | | |
| === Creating booted LiveCD root filesystem === | | === Creating booted LiveCD root filesystem === |
Line 74: |
Line 64: |
| | | |
| In order to decompress these images we need <tt>unsquashfs</tt> tool. <tt>squashfs</tt> source archive contains | | In order to decompress these images we need <tt>unsquashfs</tt> tool. <tt>squashfs</tt> source archive contains |
− | patches for various kernel versions (to be able to mount <tt>squashfs</tt>) and user-space tools for compressing usual filesytem into <tt>squashfs</tt> filesystem and for decompressing it back. Well, we don't need kernel patches right now (but we will need them later), we only want to install <tt>squashfs</tt> user-space tools. | + | patches for various kernel versions (to be able mount <tt>squashfs</tt>), and user-space tools for compressing usual filesytem into <tt>squashfs</tt> filesystem and for decompressing it back. Well, we don't need kernel patches right now (but we will need them later), we only want to install <tt>squashfs</tt> user-space tools: |
− | Here is '''an important''' note. We want, our LiveCD to be able to boot original Centos 4.4 kernel. This original kernel doesn't support
| |
− | <tt>squashfs</tt> of version <tt>3</tt>. Consequently we use <tt>sqashfs2.2-r2</tt> for <tt>mksquasfs</tt> tool, but for <tt>unsquashfs</tt> tool and later for compiling fresh OpenVZ kernels with <tt>squashfs</tt> support we use <tt>sqashfs3.2-r2</tt> sources/patches, because they are back compatible with <tt>sqashfs v2</tt>.
| |
| <pre> | | <pre> |
− | # wget http://belnet.dl.sourceforge.net/sourceforge/squashfs/squashfs2.2-r2.tar.gz | + | # wget wget http://switch.dl.sourceforge.net/sourceforge/squashfs/squashfs3.2-r2.tar.gz |
− | # tar xzf squashfs2.2-r2.tar.gz
| |
− | # cd squashfs2.2-r2/squashfs-tools/
| |
− | # make
| |
− | cc mksquashfs.o read_fs.o sort.o -lz -o mksquashfs
| |
− | # cp mksquashfs /usr/bin/
| |
− | | |
− | # cd -
| |
− | # wget http://belnet.dl.sourceforge.net/sourceforge/squashfs/squashfs3.2-r2.tar.gz
| |
| # tar xzf squashfs3.2-r2.tar.gz | | # tar xzf squashfs3.2-r2.tar.gz |
| # cd squashfs3.2-r2/squashfs-tools/ | | # cd squashfs3.2-r2/squashfs-tools/ |
Line 92: |
Line 72: |
| cc mksquashfs.o read_fs.o sort.o -lz -lpthread -lm -o mksquashfs | | cc mksquashfs.o read_fs.o sort.o -lz -lpthread -lm -o mksquashfs |
| cc unsquashfs.o -lz -o unsquashfs | | cc unsquashfs.o -lz -o unsquashfs |
| + | # cp mksquashfs /usr/bin/ |
| # cp unsquashfs /usr/bin/ | | # cp unsquashfs /usr/bin/ |
− | # cd - | + | # cd ~/workbench |
| </pre> | | </pre> |
| Well, having the intruments in hand, why not extract the images? Create a directory, called <tt>livecd-root</tt>, | | Well, having the intruments in hand, why not extract the images? Create a directory, called <tt>livecd-root</tt>, |
Line 102: |
Line 83: |
| # mkdir livecd-root | | # mkdir livecd-root |
| | | |
− | # for f in bin etc lib root sbin usr var; do \ | + | # unsquashfs ovz-livecd/base/bin.mo |
− | unsquashfs ovz-livecd/base/$f.mo; \
| + | # mv squashfs-root/bin/ livecd-root/ |
− | mv squashfs-root/$f/ livecd-root; \
| + | # rm -rf squashfs-root |
− | rm -rf squashfs-root; \
| + | |
− | done
| + | # unsquashfs ovz-livecd/base/etc.mo |
− | </pre>
| + | # mv squashfs-root/etc/ livecd-root/ |
| + | # rm -rf squashfs-root |
| + | |
| + | # unsquashfs ovz-livecd/base/lib.mo |
| + | # mv squashfs-root/lib/ livecd-root/ |
| + | # rm -rf squashfs-root |
| + | |
| + | # unsquashfs ovz-livecd/base/root.mo |
| + | # mv squashfs-root/root/ livecd-root/ |
| + | # rm -rf squashfs-root |
| + | |
| + | # unsquashfs ovz-livecd/base/sbin.mo |
| + | # mv squashfs-root/sbin/ livecd-root/ |
| + | # rm -rf squashfs-root |
| | | |
− | Be patient, this will take a few minutes.
| + | # unsquashfs ovz-livecd/base/usr.mo # this action takes some time, be patient ;) |
| + | # mv squashfs-root/usr/ livecd-root/ |
| + | # rm -rf squashfs-root |
| | | |
| + | # unsquashfs ovz-livecd/base/var.mo |
| + | # mv squashfs-root/var/ livecd-root/ |
| + | # rm -rf squashfs-root |
| + | </pre> |
| Yet we have nearly complete root filesystem of '''booted''' LiveCD in <tt>livecd-root</tt> directory. However some things | | Yet we have nearly complete root filesystem of '''booted''' LiveCD in <tt>livecd-root</tt> directory. However some things |
| are missing, and I guess you know what are they: <tt>/dev</tt>, <tt>/proc</tt>, <tt>/sys</tt>, <tt>/tmp</tt> and <tt>/boot</tt> directories. We need them, because some tools (<tt>rpm</tt>, <tt>bash</tt>, ...) will not work without them in chrooted environment later. | | are missing, and I guess you know what are they: <tt>/dev</tt>, <tt>/proc</tt>, <tt>/sys</tt>, <tt>/tmp</tt> and <tt>/boot</tt> directories. We need them, because some tools (<tt>rpm</tt>, <tt>bash</tt>, ...) will not work without them in chrooted environment later. |
| <pre> | | <pre> |
− | # cd livecd-root | + | # mkdir root/dev |
− | # mkdir dev
| + | # cp -a /dev/* root/dev |
− | # cp -a /dev/* dev/ | + | # mkdir root/proc |
− | # mkdir proc | + | # mount -t proc proc root/proc/ |
− | # mount -t proc proc proc/ | + | # mkdir root/sys |
− | # mkdir sys | + | # mount -t sysfs sysfs root/sys/ |
− | # mount -t sysfs sysfs sys/ | + | # mkdir root/tmp |
− | # mkdir tmp | + | # mkdir root/boot |
− | # mkdir boot | |
− | # cd -
| |
| </pre> | | </pre> |
| | | |
− | That's it. We have '''bootstrapped''' LiveCD root filesystem in <tt>livecd-root</tt> directory. | + | That's it. We have '''booted''' LiveCD root filesystem in <tt>livecd-root</tt> directory. |
| Now we can <tt>chroot</tt> in this directory and install all needed packages. But what | | Now we can <tt>chroot</tt> in this directory and install all needed packages. But what |
| packages do we need? | | packages do we need? |
Line 216: |
Line 214: |
| CONFIG_SQUASHFS=m | | CONFIG_SQUASHFS=m |
| CONFIG_SQUASHFS_EMBEDDED=n | | CONFIG_SQUASHFS_EMBEDDED=n |
| + | # cd ~/workbench/ |
| </pre> | | </pre> |
| After all efforts, building the RPM-package is very easy: | | After all efforts, building the RPM-package is very easy: |
| <pre> | | <pre> |
− | # cd /usr/src/redhat/SPECS/
| |
| # rpmbuild --target=i686 -ba kernel-ovz.spec | | # rpmbuild --target=i686 -ba kernel-ovz.spec |
| </pre> | | </pre> |
| If everything goes smoothly, in several tens of minutes depending on the power of your node you willl have OpenVZ kernel RPM-package with <tt>squashfs</tt> support. Let's copy it to our local directory <tt>to_booted_livecd/kernels/</tt>: | | If everything goes smoothly, in several tens of minutes depending on the power of your node you willl have OpenVZ kernel RPM-package with <tt>squashfs</tt> support. Let's copy it to our local directory <tt>to_booted_livecd/kernels/</tt>: |
| <pre> | | <pre> |
− | # cd ~/workbench/
| |
| # ls /usr/src/redhat/RPMS/i686/ | | # ls /usr/src/redhat/RPMS/i686/ |
| kernel-smp-2.6.18-ovz028stab035.1.i686.rpm | | kernel-smp-2.6.18-ovz028stab035.1.i686.rpm |
Line 232: |
Line 229: |
| OpenVZ LiveCD supports several kernels. So, the actions mentioned above should be accomplished to all kernels, | | OpenVZ LiveCD supports several kernels. So, the actions mentioned above should be accomplished to all kernels, |
| that you need on LiveCD. In this article I skip the description of building RPMS for all kernels. All description | | that you need on LiveCD. In this article I skip the description of building RPMS for all kernels. All description |
− | below are based on <tt>028stab035</tt> kernel, that has been just build above. But some important differences in building | + | below are based on <tt>028stab035</tt> kernel, that has been just build above. |
− | kernel of version other then 2.6.18 one is summarized below.
| |
− | ==== Peculiarities of building 2.6.9-rhel4 ====
| |
− | * You should also include this patch (http://git.openvz.org/?p=linux-2.6.18-openvz;a=commit;h=681d0b65dedd54d8c716cef56418ac1a478f94da)
| |
− | in building process. Hopefully will be fixed in <tt>2.6.9-044stab044.8</tt> kernel.
| |
− | * Use <tt>unionfs 1.0.14</tt>, but not <tt>unionfs 1.1.5</tt>, as offered at its official site!
| |
− | * Small problems while building <tt>unionfs</tt>: arguments of <tt>vfs_permissions()</tt>. Just add <tt>NULL</tt>
| |
− | to appropriate places.
| |
− | | |
− | ==== Peculiarities of building 2.6.18-rhel5 ====
| |
− | * Note, <tt>squashfs</tt> patch is already there, but you should use <tt>3.2</tt>! :)
| |
− | * While building <tt>unionfs</tt> some small fixes: <tt>i_blksize</tt> field is missing in <tt>inode</tt> structure, <tt>ino_t</tt> should be changed to <tt>u64</tt> in some functions.
| |
− | | |
− | ==== Peculiarities of building 2.6.20 ====
| |
− | * Only <tt>unionfs</tt> <tt>2.0</tt> is available for 2.6.20 kernel and it is distributed as a patch. Consequently modify <tt>spec</tt>-file and configs while building the kernel
| |
− | * <tt>unionfs</tt> <tt>2.0</tt> doesn't support unionctl. Consequently you have to modify <tt>liblinuxlive</tt> file on <tt>initrd</tt> image to mount all branches at once, but don't add them by ioctls.
| |
| | | |
| === Unionfs kernel module === | | === Unionfs kernel module === |
Line 292: |
Line 274: |
| be repeated for each wishful kernel. | | be repeated for each wishful kernel. |
| | | |
− | === OpenVZ tools and templates. CentOS updates === | + | === OpenVZ tools and templates === |
| We have now the kernel RPM-package. But we also need OpenVZ tools RPM-packages. | | We have now the kernel RPM-package. But we also need OpenVZ tools RPM-packages. |
| It is much easier with them: just download these packages from http://openvz.org: | | It is much easier with them: just download these packages from http://openvz.org: |
Line 329: |
Line 311: |
| not rubber and precreated templates are rather big! ;) | | not rubber and precreated templates are rather big! ;) |
| | | |
− | Centos 4.4 LiveCD has a serios problem: <tt>sqlite</tt> package is broken and consequently
| + | === Obrezki === |
− | <tt>yum</tt> doesn't work. In order to fix this problem we need updated <tt>sqlite</tt> package:
| + | TODO |
− | <pre>
| + | rpms/ |
− | # mkdir to_booted_livecd/updates
| + | rpms/kernel |
− | # cd to_booted_livecd/updates
| + | rpms/tools |
− | # wget http://centos.arcticnetwork.ca/4.5/os/i386/CentOS/RPMS/sqlite-3.3.6-2.i386.rpm
| + | rpms/update |
− | # cd ~/workbench/
| |
− | </pre>
| |
− | | |
− | === Install all these finally === | |
− | We have all components that will be on '''booted''' LiveCD ready. Let's install them
| |
− | in <tt>chrooted</tt> environment. But before uninstall <tt>lsctp-tools</tt> package,
| |
− | because these tools need kernel version prior to 2.6.10. Then update <tt>sqlite</tt>
| |
− | package. Also we need to remove some other packages in order to free some disk space:
| |
− | I've removed <tt>openoffice.org</tt>, <tt>gimp</tt>, <tt>dia</tt>, <tt>gnome-games</tt>,
| |
− | <tt>tetex</tt>, <tt>latex</tt>, <tt>k3b</tt> and printing related packages:
| |
− | <pre>
| |
− | # cp -r to_booted_livecd/ livecd-root/tmp/
| |
− | # chroot livecd-root/
| |
− | | |
− | # rpm -e lksctp-tools-1.0.2-6.4E.1.i386
| |
− | | |
− | # rpm -e openoffice.org-libs openoffice.org
| |
− | # rpm -e gimp-data-extras xsane-gimp gimp-print-plugin gimp-print-utils
| |
− | # rpm -e gimp gimp-print gimp-help gimp-gap
| |
− | # rpm -e dia
| |
− | # rpm -e planner
| |
− | # rpm -e gnome-games
| |
− | # rpm -e tetex-latex jadetex xmltex passivetex tetex tetex-afm \
| |
− | tetex-dvips tetex-fonts tetex-xdvi
| |
− | # rpm -e k3b
| |
− | # rpm -e foomatic Omni Omni-foomatic system-config-printer \
| |
− | system-config-printer-gui hal-cups-utils desktop-printing
| |
− | | |
− | # cd /tmp/to_booted_livecd/
| |
− | | |
− | # rpm -Uvh updates/sqlite-3.3.6-2.i386.rpm
| |
− | | |
− | # rpm -ivh kernels/kernel-smp-2.6.18-ovz028stab035.1.i686.rpm
| |
− | # rpm -ivh tools/*.rpm
| |
− | # rpm -ivh template-metadatas/*.rpm
| |
− | </pre>
| |
| | | |
− | Copy precreated templates to appropriate place:
| + | Uninstall <tt>lsctp-tools</tt> package, because these tools they need kernel version prior to 2.6.10: |
− | <pre>
| |
− | # cp precreated/* /vz/template/cache/
| |
− | </pre>
| |
− | Add <tt>unionfs.ko</tt> to other kernel modules and run <tt>depmod</tt>:
| |
| <pre> | | <pre> |
− | # mkdir /lib/modules/2.6.18-ovz028stab035.1-smp/kernel/fs/unionfs
| + | rpm -e lksctp-tools-1.0.2-6.4E.1.i386 |
− | # cp unionfs-modules/2.6.18/unionfs.ko /lib/modules/2.6.18-ovz028stab035.1-smp/kernel/fs/unionfs/
| |
− | # depmod 2.6.18-ovz028stab035.1-smp
| |
− | # exit
| |
− | exit
| |
| </pre> | | </pre> |
− | While being in chrooted environment bash history was written to <tt>~/.bash_history</tt> file.
| + | Uninstall kernel-module-xfs package, because these modules are compiled against original |
− | Clean it:
| |
| <pre> | | <pre> |
− | # rm livecd-root/root/.bash_history
| + | rpm -e kernel-module-xfs-2.6.9-42.livecd.c4-0.1-3.i686 |
| </pre> | | </pre> |
− | Here we have to make one step to workaround [[Checkpointing and live migration]] problem. The thing is that at the moment
| |
− | chekpointing isn't supported on <tt>unionfs</tt> filesystem ([http://bugzilla.openvz.org/show_bug.cgi?id=606 Bug #606]).
| |
− | But we want of course checkpoiting to work on LiveCD. If we mount <tt>tmpfs</tt> on <tt>/vz/private/</tt> on '''booted''' LiveCD,
| |
− | then all newly created VEs reside on <tt>tmpfs</tt> and checkpointing works. Moreover we do not introduce any additional memory usage,
| |
− | because even without <tt>tmpfs</tt> all VEs reside in RAM (they contain new/updated files for <tt>unionfs</tt>).
| |
| | | |
− | Create <tt>/vz/private</tt> directory, later, while modifying initrd image we will add the line that will mount <tt>tmpfs</tt>
| + | cd /tmp/rpms/kernel |
− | on this directory:
| + | rpm -ivh kernel-smp-2.6.18-ovz028stab033.1.i686.rpm |
− | <pre>
| + | rpm -e kernel-2.6.9-42.livecd.c4 |
− | mkdir livecd-root/vz/private/
| |
− | </pre>
| |
− | At the moment vzquota doesn't support <tt>tmpfs</tt> ([http://bugzilla.openvz.org/show_bug.cgi?id=558 Bug #558]).
| |
− | We're working on this problem, but for now '''switching the disk quota off''' in <tt>/etc/vz/vz.conf</tt>: <tt>DISK_QUOTA=no</tt>.
| |
− | But when disk quota is off <tt>vzmigrate</tt> fails! ;) This is the [http://bugzilla.openvz.org/show_bug.cgi?id=558 Bug #512].
| |
− | So, don't forget to apply the patch attached to this bug report to <tt>vzmigrate</tt>.
| |
| | | |
− | '''Booted''' LiveCD filesystem is ready, congratulations!
| + | cd /tmp/rpms/updates |
| + | rpm -Uvh sqlite-3.3.6-2.i386.rpm |
| | | |
− | === Compressing '''booted''' LiveCD filesystem ===
| + | <tt> |
− | Since <tt>mksquashfs</tt> tool is already installed we can simply use it to create
| + | # rpm -ivh vz* |
− | <tt>*.mo</tt> files:
| + | Preparing... ########################################### [100%] |
− | <pre>
| + | 1:vzrpm44 ########################################### [ 8%] |
− | # rm -f ovz-livecd/base/*.mo | + | 2:vzrpm44-python ########################################### [ 15%] |
− | # for f in bin etc lib root sbin usr var vz; do \
| + | 3:vzrpm43-python ########################################### [ 23%] |
− | mksquashfs livecd-root/$f ovz-livecd/base/$f.mo -keep-as-directory; \
| + | 4:vzrpm43 ########################################### [ 31%] |
− | done
| + | 5:vzyum ########################################### [ 38%] |
− | </pre>
| + | 6:vzquota ########################################### [ 46%] |
− | | + | 7:vzctl-lib ########################################### [ 54%] |
− | === Vmlinux, initrd and isolinux.cfg ===
| + | 8:vzctl ########################################### [ 62%] |
− | The next step is to force <tt>isolinux</tt> (cdrom boot loader) to boot OpenVZ kernel.
| + | 9:vzpkg ########################################### [ 69%] |
− | First, copy kernel image to OpenVZ CD. It is important to give '''short name''' (not greater
| + | 10:vztmpl-centos-4 ########################################### [ 77%] |
− | than 8 characters) to kernel image, otherwise <tt>isolinux</tt> will not see it.
| + | 11:vztmpl-fedora-core-3 ########################################### [ 85%] |
− | <pre>
| + | 12:vztmpl-fedora-core-4 ########################################### [ 92%] |
− | # cp livecd-root/boot/vmlinuz-2.6.18-ovz028stab035.1-smp ovz-livecd/boot/ovz18
| + | 13:vztmpl-fedora-core-5 ########################################### [100%] |
− | </pre>
| + | </tt> |
− | Modify initrd image. More precisely, we need to add OpenVZ kernel modules there
| |
− | and apply small patches to <tt>liblinuxlive</tt> file. Initrd image that goes with Centos 4.4 is
| |
− | of size 40Mb. OpenVZ LiveCD will contain several kernels, so initrd should have several sets of
| |
− | kernel modules (for each kernel) and 40Mb isn't enough in this case. I created an initrd of size 100Mb.
| |
− | Don't forget to update <tt>ramdisk_size</tt> in <tt>isolinux.cfg</tt> file later!
| |
− | | |
− | Creating "big" initrd with original content:
| |
− | <pre>
| |
− | # mkdir initrd.d | |
− | # cp ovz-livecd/boot/initrd.gz initrd.d/initrd-old.gz | |
− | # cd initrd.d/ | |
− | # mkdir mount-old | |
− | # gunzip initrd-old.gz | |
− | # mount -o loop initrd-old mount-old/ | |
− | # dd if=/dev/zero of=initrd bs=1048576 count=100 | |
− | # mke2fs initrd | |
− | initrd is not a block special device.
| |
− | Proceed anyway? (y,n) y
| |
− | ...
| |
− | # mkdir mount | |
− | # mount -o loop initrd mount/ | |
− | # cp -a mount-old/* mount/ | |
− | # umount mount-old/ | |
− | # rm -rf mount-old initrd-old | |
− | </pre>
| |
− | Copy modules to initrd:
| |
− | <pre>
| |
− | # cp -r ../livecd-root/lib/modules/2.6.18-ovz028stab035.1-smp/ mount/lib/modules/
| |
− | # rm -rf mount/lib/modules/2.6.18-ovz028stab035.1-smp/build # we don't neet it on initrd image | |
− | </pre>
| |
− | I also delete some not necessary kernel modules from initrd to free space.
| |
− | They are stil on CD, so init sctipts will be able to load them later.
| |
− | | |
− | initrd image, that goes with Centos 4.4 LiveCD doesn't load cdrom kernel modules.
| |
− | It works well for CentOS kernel, because cdrom support is built-in there.
| |
− | But OpenVZ kernel supports cdrom (usual ide cdrom) via kernel module.
| |
− | Consequetnly we need to apply the following patch to <tt>liblinuxlive</tt> file:
| |
− | <pre>
| |
− | --- liblinuxlive.orig 2006-08-19 08:53:11.000000000 +0400
| |
− | +++ liblinuxlive 2007-07-02 17:50:34.000000000 +0400
| |
− | @@ -337,6 +337,9 @@ modprobe_essential_modules()
| |
− | {
| |
− | echolog "starting loop device support"
| |
− | modprobe_module loop max_loop=32
| |
− | + echolog "starting cdrom support"
| |
− | + modprobe_module cdrom
| |
− | + modprobe_module ide-cd
| |
− | echolog "starting cdrom filesystem support"
| |
− | modprobe_module isofs
| |
− | echolog "starting squashfs support"
| |
− | </pre>
| |
− | As mentioned earlier we want to mount <tt>tmpfs</tt> on /vz/private automatically. Just apply this patch to
| |
− | <tt>liblinuxlive</tt> file:
| |
− | <pre>
| |
− | --- liblinuxlive.orig-fstab 2007-07-02 17:50:34.000000000 +0400 | |
− | +++ mount/liblinuxlive 2007-07-03 12:33:30.000000000 +0400
| |
− | @@ -414,6 +414,7 @@ activate_fstab()
| |
− | echo "tmpfs / tmpfs defaults 0 0" >$FSTAB
| |
− | echo "devpts /dev/pts devpts gid=5,mode=620 0 0" >>$FSTAB
| |
− | echo "proc /proc proc defaults 0 0" >>$FSTAB
| |
− | + echo "tmpfs /vz/private tmpfs defaults 0 0" >>$FSTAB
| |
− | | |
− | # now done by fstab-sync
| |
− | # list_cdrom_devices | while read DEVICE; do
| |
− | </pre>
| |
− | Finishing actions with initrd:
| |
− | <pre>
| |
− | # sync | |
− | # umount mount/ | |
− | # gzip initrd | |
− | # cp initrd.gz ../ovz-livecd/boot/initrd.gz | |
− | # cd .. | |
− | </pre>
| |
− | Now we should modify <tt>ovz-livecd/isolinux.cfg</tt> file, that controls <tt>isolinux</tt> boot loader.
| |
− | We inform boot loader, that new kernel was added by introducing the following changes (in diff format):
| |
− | <pre>
| |
− | --- ovz-livecd/isolinux.cfg.orig 2006-08-19 08:53:09.000000000 +0400 | |
− | +++ ovz-livecd/isolinux.cfg 2007-07-02 19:10:51.000000000 +0400
| |
− | @@ -1,5 +1,5 @@
| |
− | display boot/splash.cfg
| |
− | -default linux | |
− | +default ovz18
| |
− | prompt 1
| |
− | timeout 300
| |
− | F1 boot/help1.txt
| |
− | @@ -11,5 +11,9 @@ label linux
| |
− | kernel boot/vmlinuz
| |
− | append max_loop=32 vga=791 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=40000 root=/dev/ram0 rw rhgb quiet
| |
− | | |
− | +label ovz18
| |
− | +kernel boot/ovz18
| |
− | +append max_loop=32 vga=791 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=102400 root=/dev/ram0 rw rhgb
| |
− | +
| |
− | label memtest
| |
− | kernel boot/memtest
| |
− | | |
− | </pre>
| |
− | | |
− | Also '''don't forget''' to change <tt>ramdisk_size</tt> to 102400 for all kernels including Centos 4.4 default!
| |
− | | |
− | And I suggest to remove <tt>quiet</tt> parameter, to see what happens: it will help greatly if some problem will happen.
| |
− | | |
− | === Embellishment ===
| |
− | If you want to release LiveCD to other people some "embelishments" should be added.
| |
− | | |
− | First, edit <tt>splash.cfg</tt>, <tt>help1.txt</tt>, <tt>help2.txt</tt> and <tt>help3.txt</tt>
| |
− | files (that are in <tt>~/workbench/ovz-livecd/boot/help</tt> directory) to contain appropriate information.
| |
− | These messages appear on the LiveCD initial boot: they help to choose kernel and kernel options.
| |
− | | |
− | Also, you can note, that CentOS logo appears at this moment. This logo resides in <tt>ovz-livecd/boot/splash.lss</tt>
| |
− | file. I added OpenVZ logo there. The following tools will help you: <tt>lss16toppm</tt>, <tt>ppmtolss16</tt> and
| |
− | of course <tt>gimp</tt> :)
| |
− | | |
− | One more thing we change is default desktop background. It resides in <tt>usr/share/backgrounds/images/default.png</tt>.
| |
− | I added OpenVZ logo there.
| |
− | | |
− | === Creating ISO ===
| |
− | Centos 4.4 LiveCD creators were very gentle and have placed <tt>make_iso.sh</tt> script on CD.
| |
− | Using this script, it is very easy to create iso:
| |
− | <pre>
| |
− | # cd ovz-livecd | |
− | # ./make_iso.sh ../CentOS-4.4-i386-OpenVZ-LiveCD.iso | |
− | </pre> | |
− | | |
− | == Debugging LiveCD ==
| |
− | If you have trouble with created OpenVZ LiveCD, boot the kernel with
| |
− | <pre>
| |
− | vga=0 debug
| |
− | </pre>
| |
− | command line options. It will help you to diagnose the problem more precisely.
| |
− | Also it can be useful to redirect kernel output to serial console:
| |
− | <pre>
| |
− | console=ttyS0,115200 console=tty
| |
− | </pre>
| |
− | | |
− | See more at [[remote console setup]].
| |
| | | |
| == External Links == | | == External Links == |
Line 567: |
Line 358: |
| * [http://squashfs.sourceforge.net/ squashfs website] | | * [http://squashfs.sourceforge.net/ squashfs website] |
| * [http://www.filesystems.org/project-unionfs.html uninonfs official homepage] | | * [http://www.filesystems.org/project-unionfs.html uninonfs official homepage] |
− |
| |
− | [[Category: HOWTO]]
| |
− | [[Category: Live CD]]
| |