Hi,
I first must say I have been extremely impressed with how flexible & powerful
PXES has become. Especially been able to easily tweak the configuration using
the Remote Configuration option without having to rebuild the image.
I was just wondering if anyone has previously looked at using a transparent
compression filesystem for the initrd (root filesystem?) or if there any plans
in the future for PXE to uses a compressed filesystem.
I just thought I might share my experience with getting PXES to work with a
compressed root filesystem.
I had a couple of workstations that had only 32Mb of RAM that I wanted to get
working under PXES. However the most basic configuration of PXES with the
RDesktop client with XFree 4.3.0 weigh in at around 22Mb or (8-9Mb gzipped)
[3.3.6 very limited support for video cards]. Unfortunately the image was too
large and the kernel constantly paniced when attempting to run it under 32Mb.
I tried manually pulling out drivers from the initrd image (mounting the initrd
image and rm file I didn't think I needed) which helped but didn't help enough.
I worked out that there was only at most 9-10Mb free to run X and the kernel
after the 22Mb ramdisk for the root image.
What got me thinking was that the difference between the compressed initrd
(root filesystem) image and the uncompressed initrd (root filesystem) was 13Mb.
The ramdisk was obviously using most of the memory available and any savings
there would definately make a huge difference.
From past experience I knew there was some worked done on compressed
filesystems in linux. I did some searching and located a couple of options.
cramfs (Supported by the 2.4 kernel natively [Read Only])
jffs2 (Not yet native in the liunx kernel [Read/Write] Design for Flash memory)
As cramfs (although read-only) was already supported in the 2.4 kernel I
thought that would be the best to try. I compiled a new kernel 2.4.23 with the
config options for 2.4.20 supplied with PXES + cramfs.
Mounted the uncompressed loopback initrd image with and ran
mkcramfs /mnt/loop /tftpboot/pxes/pxes-0.7-cramfs.initrd
I ran into problems with the mkcramfs supplied with Redhat 7.3. It wouldn't
properly mount the root filesystem. I was able to locate a new version of
cramfsprogs 1.1 which worked better from sourceforge.
http://sourceforge.net/projects/cramfs/
cramfsprog brought down the initrd image size to around 10Mb.
Which is an instant 12Mb saving as the cramfs initrd image doesn't need
expanding.
I had to add another parameter to the pxes\pxelinux.cfg\default (Boot file).
ramdisk_blocksize=4096
This tells the kernel that the root filesystem is using 4096 (cramfs default) as
the block size instead of the normal 1024 (ext2 default for small filesystems).
So the default (Boot file) read something like
label 1
kernel vmlinuz-2.4.23-cramfs.i586
append ramdisk_size=10000 ramdisk_blocksize=4096 ro
initrd=pxes-0.7-cramfs.initrd root=/dev/ram
The above append line on one line.
Booted up a workstation and it worked. I was able to boot XFree 4.3.0 and
rdesktop in 32Mb of RAM. Using the cramfs would had added some overhead but I
was unable to see a significant slowdown (Although I wasn't looking too hard)
Using cramfs allowed me to run PXES on a 32Mb workstation as now I had 18 -
20Mb of memory available to run the kernel and XFree 4.3.0.
The biggest downside of using cramfs is that when you build the cramfs image it
is *mostly* a one way process. It is not that simple to make modifications to
the cramfs initrd image (Although I did read that there is a uncramfs util).
Daryl,
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.