slitaz-doc-wiki-data annotate pages/en/guides/chroot.txt @ rev 7

Add pages/en folder.
author Christopher Rogers <slaxemulator@gmail.com>
date Sat Feb 26 12:17:18 2011 +0000 (2011-02-26)
parents
children
rev   line source
slaxemulator@7 1 ====== Chroot =======
slaxemulator@7 2
slaxemulator@7 3 This guide explain how to setup a chroot to cook packages in a separate environment. The chroot can be built on a USB or HDD device to save RAM when using a live session. There is also a script which removes any packages installed during cooking on exit in order to keep the chroot light and also checks the build_depends.
slaxemulator@7 4
slaxemulator@7 5 ===== With Tazdev =====
slaxemulator@7 6
slaxemulator@7 7 Over time the SliTaz developers created tools for the automation of various tasks. The slitaz-dev-tools package provides the tazdev utility and its configuration file /etc/slitaz/tazdev.conf; it can create a chroot to use:
slaxemulator@7 8
slaxemulator@7 9 <code>
slaxemulator@7 10 # tazpkg get-install slitaz-dev-tools
slaxemulator@7 11 # tazdev gen-chroot
slaxemulator@7 12 # tazdev chroot
slaxemulator@7 13 </code>
slaxemulator@7 14
slaxemulator@7 15 By default the chroot is created in ///home/slitaz/cooking/chroot// and is slitaz-based. For more info and available commands you can use 'tazdev usage' and/or take a look at the configuration file.
slaxemulator@7 16
slaxemulator@7 17 ===== Create the chroot =====
slaxemulator@7 18 <file>
slaxemulator@7 19 #!/bin/sh
slaxemulator@7 20 mkdir /home/chroot
slaxemulator@7 21 # You can mount a device to /home/chroot
slaxemulator@7 22 # with mountbox or mount
slaxemulator@7 23 tazpkg get-install busybox --root="/home/chroot"
slaxemulator@7 24 echo "No" | tazpkg get-install bash --root="/home/chroot"
slaxemulator@7 25 tazpkg get-install slitaz-toolchain --root="/home/chroot"
slaxemulator@7 26 tazpkg get-install tazwok --root="/home/chroot"
slaxemulator@7 27 tazpkg get-install tazpkg --root="/home/chroot"
slaxemulator@7 28 tazpkg get-install lzma --root="/home/chroot"
slaxemulator@7 29 mkdir /home/chroot/home/slitaz</file>
slaxemulator@7 30
slaxemulator@7 31 Note, you can keep these lines in a script file if needed. Just add #!/bin/sh to the first line and make executable with:
slaxemulator@7 32 <code># chmod +x script_file</code>
slaxemulator@7 33
slaxemulator@7 34 ===== Add a script file to automate some actions =====
slaxemulator@7 35
slaxemulator@7 36 <code># cat > /home/chroot/chroot_script.sh << "EOF"</code>
slaxemulator@7 37 <file>
slaxemulator@7 38 #!/bin/sh
slaxemulator@7 39 /bin/sh --login
slaxemulator@7 40 for pkg in $(cat /var/log/tazpkg.log | grep -v Removed | sed 's/\(.*\)\(- Installed - \)\(.*\)\( (.*\)/\3/'); do
slaxemulator@7 41 echo "y" | tazpkg remove $pkg
slaxemulator@7 42 done
slaxemulator@7 43 rm /var/log/tazpkg.log
slaxemulator@7 44
slaxemulator@7 45 EOF
slaxemulator@7 46 </file>
slaxemulator@7 47 <code># chmod +x "/home/chroot/chroot_script.sh"</code>
slaxemulator@7 48
slaxemulator@7 49 Note, /bin/sh --login logs you into the chrooted environment. The commands after that auto-remove any packages added when cooking on exit. You can hack this file to execute various automated actions when entering and exiting the chroot.
slaxemulator@7 50
slaxemulator@7 51 ===== Add a script to mount and umount chroot =====
slaxemulator@7 52
slaxemulator@7 53 <code># cat > /usr/bin/tazchroot << "EOF"</code>
slaxemulator@7 54 <file>
slaxemulator@7 55 #!/bin/sh
slaxemulator@7 56 cat /etc/resolv.conf > /home/chroot/etc/resolv.conf
slaxemulator@7 57 if [ ! -d "/home/chroot/proc/1" ]; then
slaxemulator@7 58 echo "Mounting virtual filesystems..."
slaxemulator@7 59 mount -t proc proc /home/chroot/proc
slaxemulator@7 60 mount -t sysfs sysfs /home/chroot/sys
slaxemulator@7 61 mount -t devpts devpts /home/chroot/dev/pts
slaxemulator@7 62 mount -t tmpfs shm /home/chroot/dev/shm
slaxemulator@7 63 mount /home/slitaz /home/chroot/home/slitaz
slaxemulator@7 64 chroot /home/chroot ./chroot_script.sh
slaxemulator@7 65 until [ "$ps" = "2" ]; do
slaxemulator@7 66 echo "Waiting for the end of all other chroot processes..."
slaxemulator@7 67 ps=$(ps | grep `basename $0` | grep -v grep | grep -v basename | wc -l)
slaxemulator@7 68 sleep 1
slaxemulator@7 69 done
slaxemulator@7 70 umount /home/chroot/home/slitaz
slaxemulator@7 71 umount /home/chroot/dev/shm
slaxemulator@7 72 umount /home/chroot/dev/pts
slaxemulator@7 73 umount /home/chroot/sys
slaxemulator@7 74 umount /home/chroot/proc
slaxemulator@7 75 else
slaxemulator@7 76 echo "The chroot is already mounted"
slaxemulator@7 77 fi
slaxemulator@7 78 EOF
slaxemulator@7 79 </file>
slaxemulator@7 80 <code># chmod +x /usr/bin/tazchroot</code>
slaxemulator@7 81
slaxemulator@7 82 Note, this script mounts ///home/slitaz// in your chroot, so you can use tazwok as if it was in your normal environment.
slaxemulator@7 83
slaxemulator@7 84 ----
slaxemulator@7 85 \\
slaxemulator@7 86 ^ Page Review Section ^^
slaxemulator@7 87 |Quality| Good |
slaxemulator@7 88 |Review| Minor Updates |
slaxemulator@7 89 |Priority| Medium |
slaxemulator@7 90 |Problems| add a [[http://forum.slitaz.org|forum post link]]|
slaxemulator@7 91 |::: | OR add a [[http://labs.slitaz.org/issues |lab issue tracker link ]]|
slaxemulator@7 92 |How to Improve| Suggest briefly|
slaxemulator@7 93 |::: | |
slaxemulator@7 94
slaxemulator@7 95 \\
slaxemulator@7 96 ----