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 ---- |