pUPnGO - 6Mb ISO - Basic Building Block Puplet

A home for all kinds of Puppy related projects
Post Reply
Message
Author
User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#81 Post by technosaurus »

it probably just uses -Os instead of -O2

they are the same except -O2 does further "optimizations" that may increase size with the hope of gaining speed in return (unrolling loops, duplicating small functions to inline them in multiple places etc...) gcc-4.4.x is much smarter and there is less difference, since it now will inline, unroll etc when code size is smaller such as:

for i = 1 to 3
x += 1
...

could become (depending on ...)
x += 3
...

The example is an oversimplification, but the gcc manual is well documented if you want to know the exact details.

Why not the 2.6.32.xx kernel using Barry's X.31.x .kconfig? too bad .33 broke compatibility with Puppy's init - it had some good stuff
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#82 Post by technosaurus »

haven't tried this yet, but it is the ultra basic X with rxvt and jwm built for png icons only (+libc,m,z,X11,Xdmcp,Xau,png) and some icons
Attachments
Xbase.png
screenie
(15.71 KiB) Downloaded 1428 times
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#83 Post by goingnuts »

technosaurus: Thank you for the explanation. So no reason not to downsize kernel if needed...and maybe include extra if needed...

I did test your ultra-basic X - but could not get it running. Probably font/file-structure have to be sorted out. But really a cut down in size if it can be implemented.

I realize that getting things smaller and more lean is rather difficult with the present setup of pUPnGO. A more user friendly approach might be to make packages for pUPnGO that holds everything to get the feature/application going by installing it on top of the very bare system. For this to work an installer have to be in the basic system.

Then size/feature optimization could be done in the application package - and not as now in the build script. Below the present state of a basic system with Xvesa-package on top (According to your ultra-basic approach the size of this system could come down below 7 MB for the ISO...). The present size is 8-9 MB ...
Attachments
pupngo_010410.png
(106.33 KiB) Downloaded 599 times

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#84 Post by technosaurus »

petget only requires a few modifications to work with busybox (it has various scripts that can be run from the commandline)

I started a script that parses the official puppy packages in /root/.packages and builds a jwm menu to install packages. This will give a gui install method without the gtkdialog dependencies (I'm thinking it should go on the right side of the tray?) Will probably pull in xmessage as well to give notifications etc...
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#85 Post by goingnuts »

technosaurus wrote:...I started a script that parses the official puppy packages in /root/.packages and builds a jwm menu to install packages. This will give a gui install method without the gtkdialog dependencies (I'm thinking it should go on the right side of the tray?) Will probably pull in xmessage as well to give notifications etc...
That would really push things forward! I do try to use dialog only for wizards as it can be used also if you do not have X or Xorg. gtkdialog/xdialog/xmessages carry dependencies that only increase size without increasing functionality...being extremely minimalistic by nature...I even tried to avoid dialog and use script only - but that road was too much of a learning-process for my patience...

Beginning to see a structured pUPnGO building block path - for embedded systems or desktop-versions: kernel (1,5Mb) , initrd.gz (1,3Mb), main-basic sfs (3Mb), zdrv holding selected drivers needed to get up and going (5Mb) and on top of that zdrv-cutter to wipe out unneeded drivers, pet-install to build customized Puppys down -> top...

By defining this structure the dependency/anchoring in P412 also vanish...

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#86 Post by technosaurus »

of all of the dialogs, xmessage is the lightest (only requiring a couple of extra small xlibs if I recall correctly) and you can get a full screen of text with several buttons... plus it is easy to script.

FYI the Xvesa has already been sstripped (it is tinyx that I got from tinycore), so don't try to strip it to make it smaller or it will break... should probably move it to a different directory and make a symlink
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#87 Post by goingnuts »

technosaurous: Still no success with the Xvesa from tinycore - but did follow your route with a recompile of jwm and rxvt to minimize total size. Although I can not get the ultra-small size of the 2 programs as you can - I am able to kick some libs out. The attached pet should contain all needed to get a GUI in pUPnGO - and more in line with orig. P412 xwin, X, xinit and xinitrc is used. Reboot and power down now seems to work used from JWM. Still have problems with JWM and finding installed fonts - but works anyway. Updated 080410: See post below.

Also attached a very simple HD installer. This is a very basic OS installer for HD only, only Frugal install, only ext2 file-system, only files from CD, only grub in MBR. Targeted only for pUPnGO-V412. The pet contains the needed files from grub - run the installer with command "PUPNGOINSTALLER".
Last edited by goingnuts on Thu 08 Apr 2010, 17:58, edited 2 times in total.

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#88 Post by technosaurus »

Code: Select all

xinit -- -br -screen `Xvesa -listmodes 2>&1 |grep 0x[123][246] |sort -r |cut -d " " -f 2|tr "\n" " "|cut -d " " -f 1` -shadow -mouse /dev/mouse -nolisten tcp -tst -I > /tmp/xerrs.log 2>&1 &
start in max resolution (for min resolution remove the -r from sort)
will automatically run .xinitrc (which can simply be a bash script with exec jwm)
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#89 Post by goingnuts »

:D - Got him running, updated the pet above - using technosaurous jwm and Xvesa, recompiled rxvt. Added symlinks for fonts and found that Xvesa from tinycore needed courB12-ISO8859-1.pcf and courB14-ISO8859-1.pcf to start. Still JWM claims unable to find his font but turns up anyway...
Reduced pet-size from 1448K to 1305K...

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#90 Post by technosaurus »

A while back, I modified the startup scripts for the HSB puplet (for kids) to automatically bypass the keyboard, country, mouse and only ask about the video card... with those mods and the xinit code from my previous post it could get to the desktop extremely fast
http://puppylinux.ca/members/T/puplets/ ... _alpha.iso
puppy:linux ...Don't let "lite" fool you its ~170+MB

I wonder if you would even need to wait for the rest of init to finish. It may be able to start before the sfs or the drives are found and let those processes run in the background with a yafsplash, xmessage or something when finished... not sure about the pivotroot/switchroot at the end though

jwm and fonts:
http://joewing.net/programs/jwm/fonts.shtml
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#91 Post by technosaurus »

This may be of interest - the old static qt3 build of Opera in 6.5Mb: Opera-9.27

and a whole list of apps that work with gtk-1.2
http://kmandla.wordpress.com/2008/09/02 ... k12-stuff/
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#92 Post by goingnuts »

JWM now using his fonts - changed font in .jwmrc to: -adobe-courier-bold-r-normal--14-140-75-75-m-90-iso8859-1

Updated the X_base pet with technosaurous rxvt and included freememapplet as it is an essential info-part of Puppy. Included a small applet "Control Panel" that generates a dynamic menu in dialog. For now only a modified Display-Manager present. The cost of this is an increase in size of 54K (but now there are 4 fonts present...)

The final ISO-build with GUI is 7,7Mb including LYNX-web browser (but no new builds made public yet). Same build with host drivers is 10Mb - and running on host fast as...

Done a quick test to start xwin very early in rc.init: X starts ok but JWM refuses claiming he can not find his config file at that point. We might just end up in the XP-situation (needing the hourglass-courser) if all other init happens in background?

Would like to dig into the GTK-world but every time I try to compile there I get:
The gtk-config script installed by GTK could not be found
*** If GTK was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the GTK_CONFIG environment variable to the
*** full path to gtk-config.
configure: error: GTK+ not found (required)

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#93 Post by technosaurus »

I compiled a static version of gtk-1.2 with all of the debian patches if you want it, otherwise you can add this to your .profile script (or its equivalent)

export GTK_CONFIG=/path/to/gtk-config
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#94 Post by goingnuts »

technosaurus: Thank you - you are helping a lot! If possible I would like to try your static version.

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#95 Post by technosaurus »

I was only able to cut ~500kb off of the opera package by setting the skin to be basically blank, removing unnecessary files and optimizing images and upxing the binary (recent versions can have 5-7MB of cruft removed)... It is a 6Mb tarball so will have to post it elsewhere

Here is gtk-1.2 with debian patches, I intentionally compiled them "--without-pic" to only be used in executables (so they won't work in shared libs)

(They should probably have a pinstall script that sets any environment variables like export GTK_CONFIG=/path/to/gtk-config etc..., but everything is in the standard locations)

if you run in to issues with gtk2 overriding them at configure, renaming the glib/gtk libs, *.pc files and -*config files may help - keep in mind that if a library can use either 1.2 or 2.0 and the script auto detects it, then gtk2 will get pulled in (unless you can --disable or --without it)
Attachments
gtk+-1.2.10-18.1-i486.pet
(2.96 KiB) Downloaded 466 times
glib_DEV-1.2.10-i486.pet
(82.9 KiB) Downloaded 466 times
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#96 Post by technosaurus »

Opera 9.27 (static Qt3) seems to work well and only dependencies are:
libX11, libXext, libSM, libICE, libpthread, libdl, libm, libz, libc, libXau, libXdmcp
It can be stripped down to a ~6Mb (probably undistributable) tarball

upx'ing the 14MB opera binary helps,

to remove the 317kb /usr/share/opera/skins/standard_skin.zip
without it looking all garbled add this to [User Prefs] in /etc/opera6rc

Code: Select all

Button Set=/usr/share/opera/skin/windows_skin.zip
and if you will be running in kiosk mode this will prevent the license popup
[State]
Accept License=1
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#97 Post by goingnuts »

Again: Thank you. Will test and learn. :)

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#98 Post by technosaurus »

minimal mtpaint with static gtk1 (no support for xft, freetype, tiff, jpg2000 lcms, threading or nls ... only Xpm, png, gif and jpeg)

deps are lib{c,dl,gif,ICE,jpeg,m,png12,SM,X11,Xau,Xdmcp,Xext,z}

here is some info from top
resource usage gtk2 dynamic : 17656
resource usage gtk1 static: 6748


and dillo-0.8.6
deps are lib{c,dl,jpeg,m,png12,pthread,X11,Xau,Xdmcp,Xext,z}
resource usage gtk1 static: 4880

emelfm file manager
deps are lib{c,dl,m,pthread,X11,Xau,Xdmcp,Xext}
resource usage gtk1 static: 4288

gentoo file manager ()
deps are lib{c,dl,m,X11,Xau,Xdmcp,Xext}
resource usage gtk1 static: 4268
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#99 Post by goingnuts »

technosaurus: Using your pets reveals you are 30869s in the future... :D
These are goodies - personally I like the Dillo approach...

Would be nice with a desktop-manager to replace ROX-Filer - I have been testing xtdesktop but it do not bring more that the jwm traybutton approach concerning functionality - except the icons are without the background. If jwm could just show the icons and leave out the background...
A Rox-Filer pet with most needed for pUPnGo is 4,2Mb (expanded 11Mb) and startup of X, jwm is clearly sloooow in qemu.
WIth X_base still able to boot in below 20Mb ram environment and run Dillo from above.

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#100 Post by technosaurus »

yes I am, but thanks to one of Lobster's super top secret squirrel browser plugins, I am able to communicate back in time though this forum. (actually I set it about a day forward to be able to compile some sources from SVN in a different time zone without waiting or hacking the build scripts)

If you plan to use more than 2 gtk programs it is probably best to use the shared versions from the ibiblio repo.... and amigo has a large collection of gtk apps in his amigolinux repo as well.

Rox is available as gtk too and only uses 6604 (running with shared libs) (needs some configuring still)
deps are lib{c,dl,gdk-1,gdk_pixbuf,glib-1,gmodule-1,gtk-1,ICE,jpeg,m,png12,SM,tiff,X11,Xau,Xdmcp,Xext,xml2,z}
Attachments
Rox-1.3.pet
needs glib gtk and gdk_pixbuff
(168.77 KiB) Downloaded 647 times
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

Post Reply