CoolCnc.0.5 - rmu75/linuxcnc-wiki GitHub Wiki
date: '2006-03-12T15:25:23' title: CoolCnc.0.5
<PRE>
1.! /bin/sh 2. HOWTO BUILD A COOLCNC DEVELOPMENT ENVIRONMENT FROM SOURCE 0.0.1 3. ok, not all from source. but all that is added is added from source! 4. 5. 6. coolcnc is a puppybased linuxdistribution that can reproduce itself, 7. runs on most x86 hardware and has realtimecapabilities utilizing rtai. 8. so what can you do with it ? 9. you can run your own realtime tasks on it. or you you could use it to run 10. emc2 the enhanced machine controller and its beatuiful gui axis. 11. 12. prerequisites: this howto assumes that you have a linuxsystem up and running. 13. the tools required besides are: bzip2, wget and qemu (0.8.X). for better 14. performance i recomend the usage of the qemu acceleration module. 15. you may also think about using a squashfs & unionfs equipped kernel 16. for reducing the compiletime. a minihowto on this issue is includet 17. at the bottom of this document. with some minor changes it should 18. be no problem to adopt this howto for native install (no chroot, no qemu). 19. as a matter of fact all you need to do is skip some lines of this howto :) 20. as for hardware requirements, a fast processor enough ram reduces the 21. time needed for compiling. +2500MB of free harddiskspace is required. 22. 23. you also need to switch to the root user or else some steps will not work 24. and you have to manually do them via sudo !!! 25. 26. why do it: with a system setup the way explained below you are able to easily 27. create custom emc2 equipped puppy linux distributions. you also are able 28. to create your own special and or general purpose puppys. 29. 30. WARNING !!! THE PROCEDURES BELOW SHOULD BE UNDERSTOOD 31. BEFORE BEEING UTILIZED. 32. THIS HOWTO IS NOT CREATED TO BE COPY AND PASTE PROOF. 33. THERE IS NO ERROR CHECKING OR OTHER SECURITYFEATURE INCLUDET 34. STOPING YOU FROM WHIPING OUT YOUR HARDDISK OR WORSE !!! 35. THE AUTHOR IS NOT IN ANY WAY RELIABLE FOR ANY DAMAGE DONE 36. BY FOLLOWING OR NOT FOLLOWING THE RECOMENDATIONS THIS 37. HOWTO OFFERS.
-
Big Thanks go to Raeed: for getting me onto this.
-
The EMC developers: this is some serious nice software you got :)
-
The axis team: eyecandy that works :) im loving it(tm) :)
-
The fabulous QEMU: for making it sooooo easy
-
The people @ #emc: for support whenever needed and not kicking me
-
out of the channel :)
-
All those Linuxhackers for making the World a better place to live.
-
Special thanks go to Alex Joni and The Cooltool for hosting
-
and other favors.
-
not to forget Big Mama Thornton, George Benson, Robertos Funkmix
-
and all the other nice music that helped me to keep sane :)
-
at first lets get the actual puppy livecd: wget -c http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/puppy-1.0.7-mozilla.iso
-
create a harddiskimage for storing the puppy hd install qemu-img create coolcnc.0.2.img 3000M
-
kqemu speeds up qemu alot modprobe kqemu
-
boot into puppy using qemu: qemu -hda coolcnc.0.2.img -cdrom puppy-1.0.7-mozilla.iso -boot d -m 128
-
INSIDE QEMU
-
you are asked some simple questions like keyboardlayout and mousetype.
-
answer them correctly and choose xfvb as X server. choose a screensize
-
to work with and configure the network.
-
on the bootprompt choose "4" and press [enter]
-
select your desired keyboardlayout <OK> [enter]
-
choose "ps/2" as mousetype to make it work with qemu
-
we go with Xvesa server (the xorg server doesnt seem to
-
work well with qemu)
-
select your desired videomode and press <OK>
-
go to Start->Setup->Ethernet/network Wizard and configure your networkinterfacecard
-
with qemu thats eth0 and AUTO/DHCP
-
setup puppy on your harddiskimage:
-
open a terminal and execute cfdisk
-
create a primary partition spanning the whole disk
-
set the bootable flag -> write -> exit
-
go to Start->Setup->Install Puppy hard drive
-
choose "2" [enter]
-
a new install [enter]
-
"/dev/hda1" [enter]
-
yes you are shure "y" [enter]
-
cdrom is inserted [enter]
-
now you have to type anything but space :) type "n" [enter]
-
another trap : press "y" [enter] or else grub would not be configured
-
choose "simple" [OK] -> [OK] -> "/dev/hda1" is [OK]
-
we want to install into the MBR [OK]
-
THATS IT :) you may shutdown qemu now
-
you can access the created filesystem from your Linuxsystem via loopbackmount: lomount -diskimage coolcnc.0.2.img -partition 1 /coolcncmount
-
lets get the puppy developementtools/header filesystemimage
-
NATIV: if you do a native install you have to get usr_devx.sfs and put it into / cd /coolcncmount wget --passive-ftp http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/usr_devx.sfs mkdir /coolcncmount/.usr_devx
-
if your kernel supports unionfs and squashfs you can easily build a chrooted environment. losetup /dev/loop3 /coolcncmount/usr_devx.sfs mount -r -t squashfs -o noatime /dev/loop3 /coolcncmount/.usr_devx mount -t unionfs -o dirs=/coolcncmount/usr=rw:/coolcncmount/.usr_devx=ro none /coolcncmount/usr mount -o bind /dev /coolcncmount/dev mount -o bind /proc /coolcncmount/proc cp /etc/resolv.conf /coolcncmount/etc/resolv.conf
cd /coolcncmount chroot .
-
you may have to repeat the "chroot ." chroot .
-
you are ready to utlilze the full power of your hardware for compiling
-
instead of the rather slow emulation. if you dont have a suitable kernel
-
running right now, nevermind, we are going to build a kernel anyways
-
you can customize it if desired and also install it on your HOSTSYSTEM.
-
if you run a kernel that does not support squashfs/unionfs
-
you have to use qemu. you should unmount /coolcncmount before booting
-
or else filesystemcorruption may follow umount /coolcncmount qemu -hda coolcnc.0.2.img -cdrom puppy-1.0.7-mozilla.iso -boot c -m 128
-
the following commands are to be executed from within the qemu COOLCNC-
-
environment, a NATIV install or a proper setup chroot environment !!!
-
first lets get to the homedirectory cd /root
-
if you do a NATIV install and dont get your keyboard configured orrectly
-
you should launch the dotpup package installer and install the updated xkb.
-
get puppy unleashed core (for building puppy from scratch) you can skip these steps
-
for now if you want to. they can be done later. its a rather heavy download of
-
aproximatly 300MB. you dont need this if you just want to take a look at the rtai'd puppy.
wget -c http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/puppy-unleashed-core-1.0.7.tar.gz
mkdir /root/puppy cd /root/puppy tar -xvzf /root/puppy-unleashed-core-1.0.7.tar.gz
cd /root mkdir package_tarballs cd package_tarballs
-
get puppy unleashed packages (without openoffice ! you have to remove the exclude to get it - doesnt work!) wget -R openoffice_CUTDOWN -c -m -nd -np http://ftp.nluug.nl/ftp/pub/os/Linux/distr/puppylinux/pupget_packages-1/
-
unpack the packages into the unleashed package directory cd /root/puppy/puppy-unleashed/packages for package in
find /root/package_tarballs
; do tar -xvzf $package; done -
congratulations you have now finished setting up a puppy breeding environment
-
now lets build a rtai patched kernel, emc2 and a axis packages for it
-
QEMU: please verify that /usr_devx.sfs gets recognized and mounted.
-
lets see if puppy automagically detects the usr_devx.sfs and mounts it at reboot.
-
you can check if everything is ok by issuing the following command. watch out for lines
-
telling about /dev/loop3 ....... 100% /.usr_devx unionctl /usr --list
-
should output something like:
-
/usr (rw)
-
/.usr_devx (r-)
-
if you are working within a chroot the us_devx.sfs should be allready mountet.
-
verify it the same way as described above (note: when run outside the chroot
-
you get to see the full path /coolcncmount/usr (rw) , /coolcncmount/.usr_devx (r-)
-
building a 2.4.31 kernel
-
now lets get the kernelsource cd /usr/src wget -c http://www.fht.lkams.kernel.org/pub/linux/kernel/v2.4/linux-2.4.31.tar.bz2
-
get unionfs, squashfs, ntfs patches/tools and adeos
-
wget --passive-ftp ftp://unionfs-mirror.linux-live.org/unionfs/unionfs-1.0.9.tar.gz wget --passive-ftp ftp://unionfs-mirror.linux-live.org/unionfs/unionfs-1.0.14.tar.gz wget http://ovh.dl.sourceforge.net/sourceforge/squashfs/squashfs2.2-r2.tar.gz wget http://www.goosee.com/puppy/development/linux-2.4.29-ntfs-2.1.6b.patch.gz wget -c http://download.gna.org/adeos/patches/attic/v2.4/i386/candidates/adeos-linux-2.4.31-i386-r18c1.patch
-
unpack the kernelsource and the patches and apply them to the source rm linux rm -rf linux-2.4.31
-
rm -rf unionfs-1.0.9 rm -rf unionfs-1.0.14 rm -rf squashfs2.2-r2 tar -xvjf linux-2.4.31.tar.bz2 ln -s linux-2.4.31 linux
-
tar -xvzf unionfs-1.0.9.tar.gz tar -xvzf unionfs-1.0.14.tar.gz tar -xvzf squashfs2.2-r2.tar.gz gzip -d linux-2.4.29-ntfs-2.1.6b.patch.gz cd linux patch -p1 < /usr/src/squashfs2.2-r2/linux-2.4.31/squashfs2.2-patch patch -p1 < /usr/src/adeos-linux-2.4.31-i386-r18c1.patch patch -p1 < /usr/src/linux-2.4.29-ntfs-2.1.6b.patch
-
copy the original puppy config into place remove some lines and add adeos support
-
and change the size of the inititalramdisk cat ../linux-2.4.29/config-2july05-2.4.29-pup1.0.4 |
grep -v CONFIG_MODVERSIONS | grep -v CONFIG_BLK_DEV_RAM_SIZE > .config echo "#changed for meeting the needs of rtai and to require no userinteraction CONFIG_FBCON_SPLASHSCREEN=y CONFIG_FBCON_CFB16=y CONFIG_SUPERMOUNT=m CONFIG_BLUEZ_HCIUART_H4=m CONFIG_SCSI_SATA_QSTOR=m CONFIG_MODVERSIONS=n CONFIG_ADEOS=m CONFIG_ADEOS_PROFILING=n CONFIG_ADEOS_CORE=y CONFIG_IPIPE=n CONFIG_IPIPE_STATS=n CONFIG_SQUASHFS_EMBEDDED=n CONFIG_DEBUG_KERNEL=y CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_STACKOVERFLOW=n CONFIG_DEBUG_HIGHMEM=n CONFIG_DEBUG_SLAB=n CONFIG_DEBUG_IOVIRT=n CONFIG_DEBUG_SPINLOCK=n CONFIG_FRAME_POINTER=n CONFIG_BLK_DEV_RAM_SIZE=24576" >> .config -
if youd like to have any other things configured run make config or menuconfig now!
-
also if you have too much ram and or cpu/s you could add
-
MAKE = make -j2 to the Makefile
-
ready to build a kernel ? lets go :) make oldconfig make dep make clean make bzImage make modules
-
puppys xargs (which is just another part of busybox) lacks the -i option
-
so we have to get GNU findutils first, compile it and copy xargs into
-
our PATH in order to let make modules_install finish its job. cd /usr/src wget http://ftp.gnu.org/pub/gnu/findutils/findutils-4.2.27.tar.gz tar -xvzf findutils-4.2.27.tar.gz cd findutils-4.2.27 ./configure make cp xargs/xargs /bin/xargs
-
now the modules should install into /lib/modules/2.4.31
-
the kernel and System.map gets copied to /boot cd /usr/src/linux make modules_install cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.31 cp System.map /boot/System.map-2.4.31 rm /lib/modules/2.4 ln -s /lib/modules/2.4.31 /lib/modules/2.4
-
now lets compile the unionfs module and copy it into place
-
uname -r is removed because of some issues when compiling
-
in a chrooted environment and the HOSTS kernel is not a
-
2.4.31 version kernel.
-
cd /usr/src/unionfs-1.0.9
-
echo "EXTRACFLAGS=-DNODEBUG
-
LINUXSRC=/usr/src/linux-2.4.31" > fistdev.mk
-
cat Makefile | sed 's/
uname\ \-r
/2.4.31-adeos/g' | \ -
sed 's/uname\ -r/2.4.31/g' | sed 's/^KERNELVERSION.*/KERNELVERSION=2.4/' > Makefile_
-
here we got the same with unionfs-1.0.14, i prefer this because the
-
removing of parts of branches works better cd /usr/src/unionfs-1.0.9 echo "EXTRACFLAGS=-DNODEBUG LINUXSRC=/usr/src/linux-2.4.31" > fistdev.mk cat Makefile | sed 's/
uname\ \-r
/2.4.31-adeos/g' |
sed 's/uname\ -r/2.4.31/g' | sed 's/^KERNELVERSION.*/KERNELVERSION=2.4/' > Makefile_mv Makefile_ Makefile make make install
-
we got all modules together, lets install the kernel for testing
-
if you are doing a native install, you should change the root=/dev/hda1
-
part to fit you partitionlayout! echo "title COOLCNC (on /dev/hda1) root (hd0,0) kernel /boot/vmlinuz-2.4.31 root=/dev/hda1 ro vga=normal" >> /boot/grub/menu.lst
1.exit the chroot and umount proc and dev exit
-
i havent figured out yet how to remove the unions and mounts
-
also seem to hang sometimes. dunno. right now i need to reboot
-
in order to get rid of the mounts and unions
-
boot qemu and choose COOLCNC when entering the grub bootmenu
-
at the first boot with the new kernel the modules dependencyfile must be
-
created by opening a terminal and entering depmond -a
-
after the next reboot the usr_devx should be mounted correctly
-
and we can continue to install rtai and emc. for this we need
-
to run the rtaikernel we compiled earlier. you got two choices.
-
use a qemu session (slow) qemu -hda coolcnc.0.2.img -cdrom puppy-1.0.7-mozilla.iso -boot c -m 256
-
i recommend installing the kernel on the host too and use a chrooted environment.
-
dont forget to do a depmod -a ! you will not be able to compile
-
if usr_devx is not mounted and stacked over your /usr directory!
-
next stop rtai, emc2, python, axis, mesa cd /usr/src wget http://download.gna.org/rtai/stable/v3/rtai-3.2.tar.bz2 wget http://www.python.org/ftp/python/2.4.2/Python-2.4.2.tgz wget http://surfnet.dl.sourceforge.net/sourceforge/mesa3d/MesaLib-6.4.1.tar.bz2 wget http://surfnet.dl.sourceforge.net/sourceforge/mesa3d/MesaGLUT-6.4.1.tar.bz2 wget http://surfnet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.12-src.tar.gz wget http://surfnet.dl.sourceforge.net/sourceforge/tcl/tk8.4.12-src.tar.gz wget http://unpy.net/cgi-bin/viewcvs.cgi/axis/axis.tar.gz?tarball=1 mv axis.tar.gz?tarball=1 axis.tar.gz
-
now some unionfstricks. its easy to create packages if you use unionfs to keep data separated.
mkdir /.coolcnc dd if=/dev/zero of=/coolcnc.sfs bs=1M count=360 mkfs.ext2 -F /coolcnc.sfs mount -o loop /coolcnc.sfs /.coolcnc
-
lets direct all following writeoperations to /.coolcnc unionctl /usr --add --before /usr --mode rw /.coolcnc unionctl /usr --mode /usr ro
-
unionctl /usr --list should now tell you something like this
-
/.coolcnc (rw)
-
/usr (r-)
-
/.usr_devx (r-)
-
if youd like to you can put those lines into /etc/rc.d/rc.local
-
they will be executed with every subsequent boot. echo "mount -o loop /coolcnc.sfs /.coolcnc unionctl /usr --add --before /usr --mode rw /.coolcnc unionctl /usr --mode /usr ro" >> /etc/rc.d/rc.local
-
time to get rtai and emc on the road :)
-
first lets compile rtai cd /usr/src echo "root ALL=(ALL) ALL" > /etc/sudoers chmod 0440 /etc/sudoers tar -xvjf rtai-3.2.tar.bz2 rm linux ; ln -s linux-2.4.31 linux cd rtai-3.2 ./configure make install
-
for cleanup 2.cd /usr/src 3.rm -rf rtai-3.2
-
if you did that in a chroot you have to manually create the devicenodes
-
for rtai (if you didnt mount -bind /dev to /chroot/dev you can igonre that).
-
on the host say something like: umount /coolcnc/dev
-
then in the chroot execute: mknod -m 666 /dev/rtai_shm c 10 254
-
you can afterward savely do a mount -o bind /dev /coolcnc/dev
-
emc2 depends on tcl/tk cd /usr/src tar -xvzf tcl8.4.12-src.tar.gz tar -xvzf tk8.4.12-src.tar.gz
cd /usr/src/tcl8.4.12/unix ./configure make make install cd /usr/src
cd /usr/src/tk8.4.12/unix ./configure make make install
- puppy uses a very outdated version of bwidget
- lets get the newest release
cd /usr/src wget http://surfnet.dl.sourceforge.net/sourceforge/tcllib/BWidget-1.7.0.tar.gz cd /usr/lib/ rm bwidget tar -xvzf /usr/src/BWidget-1.7.0.tar.gz ln -s BWidget-1.7.0 bwidget
- lets put it in a unleashed package rightaway mkdir -p /root/puppy/puppy-unleashed/packages/bwidget-1.7.0-puppysit/usr/lib cp -auv /usr/lib/BWidget-1.7.0 /root/puppy/puppy-unleashed/packages/bwidget-1.7.0-puppysit/usr/lib cp -auv /usr/lib/bwidget /root/puppy/puppy-unleashed/packages/bwidget-1.7.0-puppysit/usr/lib
cd /usr/src
export LD_LIBRARY_PATH=/usr/local/lib
-
lets add /usr/local/lib as librarypath to our .bashrc echo "LD_LIBRARY_PATH=/usr/local/lib" >> /root/.bashrc
-
now emc2 is ready to get leeched and compiled :)
-
sourceforge cvs is sometimes under heavy load. at leat
-
it looks like that because the checkout may take multiple
-
runs before it works.
touch /root/.cvspass cvs -d:pserver:[email protected]:/cvsroot/emc login
-
you should not use this unless you know what you do!
-
#leet# cvs -z3 -d:pserver:[email protected]:/cvsroot/emc co emc2 cvs -z3 -d:pserver:[email protected]:/cvsroot/emc co -r TESTING -d emc2testing emc2
-
cd emc2/src cd emc2-testing/src ./configure make
1.cleanup 2.rm -rf /usr/src/tk8.4.12 3.rm -rf /usr/src/tcl8.4.12
-
now lets see if emc2 works cd .. scripts/emc
-
if youd like emc to talk to you in a language other then english
-
you have to set your LANG environment variables correctly.
-
german for example could be selected by executing: LANG=de
-
lets get axis dependencies fullfilled cd /usr/src tar -xvzf Python-2.4.2.tgz cd Python-2.4.2 ./configure make make install
-
make some space or else we will run out during the next compiles
-
rm -rf Python-2.4.2
-
for the pretty 3d look axis depends on opengl
-
lets use Mesa and Glut. if your graphiccard is
-
supported by accelerated drivers you can use xorg
-
to get better performance. cd /usr/src tar -xvjf MesaLib-6.4.1.tar.bz2 cd Mesa-6.4.1 make linux-x86 cp -auv lib/* /usr/local/lib cd /usr/src
tar -xvjf MesaGLUT-6.4.1.tar.bz2 cd Mesa-6.4.1 make linux-x86 cp -auv lib/* /usr/local/lib cd /usr/src
-
rm -rf /usr/src/Mesa-6.4.1
-
now to axis tar -xvzf axis.tar.gz cd axis EMCROOT=/usr/src/emc2testing python setup.py install --force
-
rm -rf /usr/src/Mesa-6.4.1
-
now you could change the DISPLAY variable in the emc2 inifile
-
you are using for your machine to DISPLAY = axis to give it
-
a testrun.
cd /usr/src/emc2 scripts/emc
- you have finished installing rtai,emc2 and axis on
- your puppy. now lets get to the breeding part.
cd /usr/src
-
first lets build a directorystructure for the adeos kernel rm -rf /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/ mkdir -p /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/modules/0base_modules-2.4.31-adeos/lib/modules/
-
now lets get the kernel and modules into place cp /usr/src/linux/.config /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/modules/0base_modules-2.4.31-adeos/lib/modules/config-2.4.31-adeos cp -auv /lib/modules/2.4.31-adeos /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/modules/0base_modules-2.4.31-adeos/lib/modules/ cp /usr/src/linux/arch/i386/boot/bzImage /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/vmlinuz cd /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/ ; ln -s vmlinuz vmlinuz.fb cd /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/modules/0base_modules-2.4.31-adeos/lib/modules/ ln -s 2.4.31-adeos 2.4
rm /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/modules/0base_modules-2.4.31-adeos/lib/modules/2.4.31-adeos/build
-
just a set of links, lets remove them rm -rf /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/modules/0base_modules-2.4.31-adeos/lib/modules/2.4.31-adeos/pcmcia
-
lets gzip the modules for dir in
find /root/puppy/puppy-unleashed/kernels/2.4.31-adeos/modules/0base_modules-2.4.31-adeos/lib/modules/2.4.31-adeos -type d
do cd $dir ls *.o gzip -9 *.o ls *.gz done -
thats it, we now have our adeos patched kernel installed into the unleashed breeding environment
-
because our kernel has more drivers within the initial ramdisk we have to change the size to 24576k cd /root/puppy/puppy-unleashed rm -rf packages/0rootfs_skeleton-1.0.7_puppysit cp -auv packages/0rootfs_skeleton-1.0.7 packages/0rootfs_skeleton-1.0.7_puppysit echo 24576 > packages/0rootfs_skeleton-1.0.7_puppysit/etc/ramdiskfssize
-
you have to remove the rootfs_skeleton-1.0.7 and add rootfs_skeleton-1.0.7_puppysit in the unleashed
-
package selection gui if youd like to start with mastering right away ! all changes you want to make
-
to the rootfs should be made in the rootfs_skeleton-1.0.7_puppysit directory.
-
lets build unleashed packages for rtai,emc,python and axis
-
maybe add -dev packages in the future
-
rtai is really small not much work to do here
-
besides some copying and a little striping
-
the documentation is moved into a seperate package
-
rtai-3.2-runtime_puppysit and rtai-3.2-doc_puppysit ROOTFS_PATH=/root/puppy/puppy-unleashed/packages/0rootfs_skeleton-1.0.7_puppysit DEVICE_PATH=$ROOTFS_PATH/dev PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/rtai-3.2-runtime_puppysit
rm -rf $PACKAGE_ROOT
mkdir -p $ROOTFS_PATH/etc/init.d rm $ROOTFS_PATH/etc/realtime
echo "#! /bin/bash modprobe adeos sleep 1" > $ROOTFS_PATH/etc/init.d/realtime
cat /etc/init.d/realtime | grep -v /bin/bash >> $ROOTFS_PATH/etc/init.d/realtime
mkdir -p $PACKAGE_ROOT/usr/realtime
for dirx in echo "bin calibration include lib modules testsuite"
do
cp -auv /usr/realtime/$dirx $PACKAGE_ROOT/usr/realtime
done
sleep 5
for devx in echo "rtai_shm rtf0 rtf1 rtf2 rtf3 rtf4 rtf5 rtf6 rtf7 rtf8 rtf9"
do
cp -auv /dev/$devx $DEVICE_PATH
done
sleep 5
strip --strip-unneeded $PACKAGE_ROOT/usr/realtime/bin/*
strip --strip-debug $PACKAGE_ROOT/usr/realtime/lib/*
PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/rtai-3.2-doc_puppysit rm -rf $PACKAGE_ROOT
mkdir -p $PACKAGE_ROOT/usr/realtime cp -auv /usr/realtime/share $PACKAGE_ROOT/usr/realtime/
-
qemu - using the Xvesa server
-
matrox milleniumII pci - using the Xorg server
-
matrox g550 - using the Xorg server
-
nvidia Geforce3 - works with the Xorg server
-
if your computer hangs after entering graphical mode, you do have
-
to configure the xserver correctly manualy!
-
lets strip emc down to the bone :)
-
we seperate docs and runtimeenvironment as with rtai
-
into emc2-cvs_dateofcheckout and emc2-cvs_dateofcheckout-doc ROOTFS_PATH=/root/puppy/puppy-unleashed/packages/0rootfs_skeleton-1.0.7_puppysit cat $ROOTFS_PATH/etc/profile | sed 's/LIBRARY_PATH="/LIBRARY_PATH="/usr/local/lib:/g' > /tmp/profile mv /tmp/profile $ROOTFS_PATH/etc/profile
PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/emc2-25.02.2006-puppysit rm -rf $PACKAGE_ROOT
mkdir -p $PACKAGE_ROOT/usr/local/bin
for filex in echo "classicladder emc emc_module_helper emcsh emcsvr halcmd halmeter halscope halvcp idle inivar io iosh m5i20cfg milltask milltaskcanon simio usrmot"
do
cp /usr/local/bin/$filex $PACKAGE_ROOT/usr/local/bin
done
mkdir $PACKAGE_ROOT/usr/local/etc cp -auv /usr/local/etc/emc2 $PACKAGE_ROOT/usr/local/etc
mkdir -p $PACKAGE_ROOT/usr/local/share/emc cp -auv /usr/local/share/emc/* $PACKAGE_ROOT/usr/local/share/emc/
strip --strip-unneeded $PACKAGE_ROOT/usr/local/bin/*
mkdir -p $PACKAGE_ROOT/usr/local/lib
for filex in echo "libnml.so libemc.a librs274.so"
do
cp /usr/local/lib/$filex $PACKAGE_ROOT/usr/local/lib
done
strip --strip-debug $PACKAGE_ROOT/usr/local/lib/*
- now python is huge, luckily axis developer jeff epler
- wrote a small pythonscript to make a directory containing
- only those things used by axis. it also strips and compresses.
- wget pack_python, i used the output of his tools for the following
- lines of bash.
- you can copy and paste the next ~222 lines ;)
ROOTFS_PATH=/root/puppy/puppy-unleashed/packages/0rootfs_skeleton-1.0.7_puppysit echo "PYTHONHOME=/usr/local PYTHONPATH=/usr/local/bin/python" >> $ROOTFS_PATH/etc/profile
- watch out this directory will be deleted! PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/python2.4-subset-axis_puppysit PYTHON_ROOT=$PACKAGE_ROOT/usr/local/lib/python2.4/ rm -rf $PACKAGE_ROOT cd /root/puppy/puppy-unleashed/packages
mkdir -p $PACKAGE_ROOT/usr/local/lib/python2.4/lib-tk
cp /usr/local/lib/python2.4/lib-tk/Tkinter.pyo $PACKAGE_ROOT/usr/local/lib/python2.4/lib-tk
for filex in echo "opcode.pyo dis.pyo inspect.pyo ConfigParser.pyo Dialog.pyo FixTk.pyo StringIO.pyo Tkconstants.pyo Tkinter.pyc UserDict.pyo __future__.pyo atexit.pyo codecs.pyo copy.pyo copy_reg.pyo dummy_thread.pyo __init__.pyo cp875.pyo iso8859_15.pyo charmap.pyo cp1257.pyo cp1250.pyo unicode_escape.pyo latin_1.pyo cp037.pyo cp1252.pyo base64_codec.pyo koi8_u.pyo string_escape.pyo cp1256.pyo uu_codec.pyo utf_8.pyo cp864.pyo iso8859_10.pyo raw_unicode_escape.pyo mac_cyrillic.pyo cp850.pyo mac_latin2.pyo iso8859_9.pyo cp856.pyo utf_7.pyo cp1258.pyo iso8859_7.pyo hex_codec.pyo cp862.pyo cp1251.pyo zlib_codec.pyo iso8859_8.pyo palmos.pyo cp1026.pyo cp866.pyo iso8859_14.pyo cp874.pyo utf_16.pyo cp437.pyo iso8859_5.pyo cp861.pyo cp869.pyo mac_iceland.pyo iso8859_3.pyo cp852.pyo cp865.pyo iso8859_4.pyo iso8859_6.pyo idna.pyo mbcs.pyo cp1140.pyo cp857.pyo cp775.pyo rot_13.pyo cp1255.pyo unicode_internal.pyo ascii.pyo iso8859_2.pyo cp500.pyo cp1006.pyo undefined.pyo iso8859_1.pyo utf_16_le.pyo cp860.pyo cp424.pyo cp1253.pyo punycode.pyo cp737.pyo mac_turkish.pyo mac_greek.pyo iso8859_13.pyo mac_roman.pyo cp855.pyo quopri_codec.pyo utf_16_be.pyo cp1254.pyo koi8_r.pyo aliases.pyo cp863.pyo __init__.pyo aliases.pyo fnmatch.pyo getopt.pyo gettext.pyo glob.pyo hershey.pyc linecache.pyo locale.pyo nf.pyc os.pyo popen2.pyo posixpath.pyo random.pyo re.pyo repr.pyo __init__.pyc interpret.pyc glcanon.pyc errorlist.pyc OpenGLTk.pyc options.pyc __init__.pyc OpenGLTk.pyc errorlist.pyc glcanon.pyc interpret.pyc options.pyc shutil.pyo site.pyo socket.pyo sre.pyo sre_compile.pyo sre_constants.pyo sre_parse.pyo stat.pyo string.pyo tempfile.pyo token.pyo tokenize.pyo traceback.pyo types.pyo warnings.pyo webbrowser.pyo"
do
mkdir -p find /usr/local/lib/python2.4 | grep /$filex | grep -v __init__ | \ sed "s/^/\/root\/puppy\/puppy-unleashed\/packages\/python2.4-subset-axis_puppysit/g" | \ sed "s/\/$filex//g"
cp find /usr/local/lib/python2.4 | grep /$filex | grep -v __init__
find /usr/local/lib/python2.4 | grep /$filex | grep -v __init__ | \ sed "s/^/\/root\/puppy\/puppy-unleashed\/packages\/python2.4-subset-axis_puppysit/g"
done
for filex in echo " emc.so _random.so fcntlmodule.so selectmodule.so timemodule.so pwdmodule.so minigl.so termios.so _ssl.so cStringIO.so zlibmodule.so gcode.so binascii.so arraymodule.so _togl.so _localemodule.so _socketmodule.so _tkinter.so structmodule.so mathmodule.so strop.so"
do
mkdir -p find /usr/local/lib/python2.4 | grep /$filex | grep -v __init__ | \ sed "s/^/\/root\/puppy\/puppy-unleashed\/packages\/python2.4-subset-axis_puppysit/g" | \ sed "s/\/$filex//g"
cp find /usr/local/lib/python2.4 | grep /$filex | grep -v __init__
find /usr/local/lib/python2.4 | grep /$filex | grep -v __init__ | \ sed "s/^/\/root\/puppy\/puppy-unleashed\/packages\/python2.4-subset-axis_puppysit/g"
done cp /usr/local/lib/python2.4/site-packages/emc.so $PYTHON_ROOT/site-packages/ mkdir -p $PYTHON_ROOT/lib-dynload/ cp /usr/local/lib/python2.4/lib-dynload/struct.so $PYTHON_ROOT/lib-dynload/ cp /usr/local/lib/python2.4/lib-dynload/array.so $PYTHON_ROOT/lib-dynload/ cp /usr/local/lib/python2.4/lib-dynload/time.so $PYTHON_ROOT/lib-dynload/ cp /usr/local/lib/python2.4/lib-dynload/math.so $PYTHON_ROOT/lib-dynload/
mkdir -p $PYTHON_ROOT/encodings $PYTHON_ROOT/rs274 cp /usr/local/lib/python2.4/encodings/init.pyo $PYTHON_ROOT/encodings cp /usr/local/lib/python2.4/site-packages/rs274/init.pyc $PYTHON_ROOT/site-packages/rs274 mkdir -p $PACKAGE_ROOT/usr/local/bin cp /usr/local/bin/python $PACKAGE_ROOT/usr/local/bin
-
strip it strip --strip-unneeded $PACKAGE_ROOT/usr/local/bin/* strip --strip-debug $PYTHON_ROOT/encodings/* strip --strip-debug $PYTHON_ROOT/lib-tk/* strip --strip-debug $PYTHON_ROOT/site-packages/* strip --strip-debug $PYTHON_ROOT/site-packages/rs274/*
-
compress the binary /root/puppy/puppy-unleashed/upx -9 $PACKAGE_ROOT/usr/local/bin/python
-
some necessary fix cd $PACKAGE_ROOT/usr/local/lib/python2.4 find . -name *.pyo | while read i ; do mv $i ${i%.pyo}.pyc; done
-
lets get on with axis PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/axis-22.02.2006-puppysit rm -rf $PACKAGE_ROOT
mkdir -p $PACKAGE_ROOT/usr/local/share/axis cp -auv /usr/local/share/axis/* $PACKAGE_ROOT/usr/local/share/axis/
mkdir -p $PACKAGE_ROOT/usr/local/bin cp /usr/src/emc2testing/bin/axis $PACKAGE_ROOT/usr/local/bin
mkdir -p $PACKAGE_ROOT/usr/local/share cp -auv /usr/local/share/locale $PACKAGE_ROOT/usr/local/share
- now to tcl, tk, mesa and glut PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/tcl8.4-puppysit rm -rf $PACKAGE_ROOT
LIBDIR=$PACKAGE_ROOT/usr/local/lib/ mkdir -p $LIBDIR cp -auv /usr/local/lib/tcl* $LIBDIR cp -auv /usr/local/lib/libtcl* $LIBDIR strip --strip-debug $LIBDIR/*
mkdir $PACKAGE_ROOT/usr/local/bin cp -auv /usr/local/bin/tclsh8.4 $PACKAGE_ROOT/usr/local/bin cp -auv /usr/local/bin/wish8.4 $PACKAGE_ROOT/usr/local/bin strip --strip-unneeded $PACKAGE_ROOT/usr/local/bin/*
PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/tk8.4-puppysit rm -rf $PACKAGE_ROOT
LIBDIR=$PACKAGE_ROOT/usr/local/lib/ mkdir -p $LIBDIR cp -auv /usr/local/lib/tk* $LIBDIR cp -auv /usr/local/lib/libtk* $LIBDIR strip --strip-debug $LIBDIR/*
PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/mesa_glut-6.4.1-puppysit rm -rf $PACKAGE_ROOT
LIBDIR=$PACKAGE_ROOT/usr/local/lib/ mkdir -p $LIBDIR cp -auv /usr/local/lib/libGL* $LIBDIR cp -auv /usr/local/lib/libglu* $LIBDIR strip --strip-debug $LIBDIR/*
PACKAGE_ROOT=/root/puppy/puppy-unleashed/packages/mesa_lib-6.4.1-puppysit rm -rf $PACKAGE_ROOT
LIBDIR=$PACKAGE_ROOT/usr/local/lib/ mkdir -p $LIBDIR cp -auv /usr/local/lib/libOSMesa* $LIBDIR strip --strip-debug $LIBDIR/*
- we finished creating the unleashed directorys
3./root/puppy/puppy-unleashed/packages/emc2-25.02.2006-puppysit: 4./root/puppy/puppy-unleashed/packages/libexpat-0.5.0_puppysit: 5./root/puppy/puppy-unleashed/packages/mesa_glut-6.4.1-puppysit: 6./root/puppy/puppy-unleashed/packages/mesa_lib-6.4.1-puppysit: 7./root/puppy/puppy-unleashed/packages/python2.4-subset-axis_puppysit: 8./root/puppy/puppy-unleashed/packages/rtai-3.2-doc_puppysit: 9./root/puppy/puppy-unleashed/packages/rtai-3.2-runtime_puppysit: 10./root/puppy/puppy-unleashed/packages/tcl8.4-puppysit: 11./root/puppy/puppy-unleashed/packages/tk8.4-puppysit: 12. 13.
-
FINNISH !!! YOU DID IT !!!
-
you are ready to build coolcnc now. enter the unleashed directory
-
type ./createpuppy, just select or deselct the packages youd like
-
with your iso and follow the instructions given by the script.
-
i put together some sample packages.txt in the future. i promise :)
-
this version reflects the progress of this howto on March 2nd 2006
-
KNOWN PROBLEMS AND WORKAROUNDS
-
if your computer hangs after entering graphical mode, you do have
-
to configure the xserver correctly manualy!
-
tested by now are:
-
qemu - using the Xvesa server
-
matrox milleniumII pci - using the Xorg server
-
matrox g550 - using the Xorg server
-
nvidia Geforce3 - works with the Xorg server
</PRE>