Hi!

That's a toughy! But I think it's doable.

Here are my SUGGESTIONS:

1. Develop the entire system on another machine (that's pretty much
obvious) in a chroot environment. Use symlinks (or mount -o bind) to
adress your Portage tree (you don't want to copy THAT back and forth!).
Follow the Gentoo docu as usual. Build a kernel 2.6.9 or above with
development-sources. Enable CONFIG_CRAMFS in your kernel. Emerge Samba.
Emerge sysklogd if you want to have logging enabled. Emerge cramfs. If
possible - don't emerge anything else. 


2. Clone this development folder to another folder. Here you will shrink
it.


3. Shrinking:
chroot into the environment you created in step 2 and emerge --unmerge
the following packages:

nasm, perl, ed, fbset, groff, help2man, man, man-pages, miscfiles,
setserial, slocate, texinfo, autoconf, automake, bc, bin86, binutils,
bison, flex, gcc, gcc-config, gettext, gnuconfig, libperl, libtool, m4,
make, patch, development-sources, linux-headers

Be aware: after shrinking you won't be able to emerge anything on your
target system

Now there's stuff left that can't be unmerge. Delete the following
directories and files:

rm -R /usr/include/* > /dev/null 2>&1
rm /usr/lib/locale/locale-archive > /dev/null 2>&1
rm -R /usr/lib/perl5/* > /dev/null 2>&1
rm -R /usr/lib/portage/* > /dev/null 2>&1
rm -R /usr/lib/python2.3/* > /dev/null 2>&1
rm -R /usr/share/doc/* > /dev/null 2>&1
rm -R /usr/share/emacs/* > /dev/null 2>&1

# select the charmaps you need on your target
# system - German stuff in my case
mv /usr/share/i18n/charmaps/EBCDIC-AT-DE*.gz /tmp > /dev/null 2>&1
mv /usr/share/i18n/charmaps/EBCDIC-US.gz /tmp > /dev/null 2>&1
mv /usr/share/i18n/charmaps/IBM437.gz /tmp > /dev/null 2>&1
mv /usr/share/i18n/charmaps/ISO-8859-1*.gz /tmp > /dev/null 2>&1
mv /usr/share/i18n/charmaps/ISO_8859-*.gz /tmp > /dev/null 2>&1
rm -R /usr/share/i18n/charmaps/* > /dev/null 2>&1
mv /tmp/EBCDIC-AT-DE*.gz /usr/share/i18n/charmaps > /dev/null 2>&1
mv /tmp/EBCDIC-US.gz /usr/share/i18n/charmaps > /dev/null 2>&1
mv /tmp/IBM437.gz /usr/share/i18n/charmaps > /dev/null 2>&1
mv /tmp/ISO-8859-1*.gz /usr/share/i18n/charmaps > /dev/null 2>&1
mv /tmp/ISO_8859-*.gz /usr/share/i18n/charmaps > /dev/null 2>&1

mv /usr/share/i18n/locales/POSIX /tmp > /dev/null 2>&1
mv /usr/share/i18n/locales/i18n /tmp > /dev/null 2>&1
mv /usr/share/i18n/locales/de_* /tmp > /dev/null 2>&1
mv /usr/share/i18n/locales/en_* /tmp > /dev/null 2>&1
mv /usr/share/i18n/locales/translit_* /tmp > /dev/null 2>&1
rm -R /usr/share/i18n/locales/* > /dev/null 2>&1
mv /tmp/POSIX /usr/share/i18n/locales > /dev/null 2>&1
mv /tmp/i18n /usr/share/i18n/locales > /dev/null 2>&1
mv /tmp/de_* /usr/share/i18n/locales > /dev/null 2>&1
mv /tmp/en_* /usr/share/i18n/locales > /dev/null 2>&1
mv /tmp/translit_* /usr/share/i18n/locales > /dev/null 2>&1

rm -R /usr/share/info/* > /dev/null 2>&1

rm -R /usr/share/keymaps/amiga/* > /dev/null 2>&1
rm -R /usr/share/keymaps/atari/* > /dev/null 2>&1
rm -R /usr/share/keymaps/mac/* > /dev/null 2>&1
rm -R /usr/share/keymaps/sun/* > /dev/null 2>&1
rm -R /usr/share/keymaps/i386/azerty/* > /dev/null 2>&1
rm -R /usr/share/keymaps/i386/dvorak/* > /dev/null 2>&1
rm -R /usr/share/keymaps/i386/fgGIod/* > /dev/null 2>&1

mv /usr/share/locale/locale.alias /tmp > /dev/null 2>&1
mv /usr/share/locale/de /tmp > /dev/null 2>&1
rm -R /usr/share/locale/* > /dev/null 2>&1
mv /tmp/locale.alias /usr/share/locale > /dev/null 2>&1
mv /tmp/de /usr/share/locale > /dev/null 2>&1

rm -R /usr/share/man/* > /dev/null 2>&1

rm -f /etc/localtime > /dev/null 2>&1
mv /usr/share/zoneinfo/Europe/Vienna /etc/localtime > /dev/null 2>&1
rm -R /usr/share/zoneinfo/* > /dev/null 2>&1

rm -R /usr/src/* > /dev/null 2>&1
rm -R /usr/portage/* > /dev/null 2>&1
rm -R /var/tmp/portage/* > /dev/null 2>&1
rm -R /var/cache/edb/* > /dev/null 2>&1
rm -R /var/db/pkg/* > /dev/null 2>&1
rm /var/log/emerge.log > /dev/null 2>&1
rm /var/log/kern.log > /dev/null 2>&1
touch /var/log/kern.log > /dev/null 2>&1
rm /var/log/lastlog.log > /dev/null 2>&1
touch /var/log/lastlog.log > /dev/null 2>&1
rm /var/log/syslog > /dev/null 2>&1
touch /var/log/syslog > /dev/null 2>&1
rm -R /lib/dev-state > /dev/null 2>&1

Ok. Let's see what du -sh / comes up with - should be between 60 and 80
MB.


4. Things to consider
a.) Recently sysklogd introduced some Perl scripts for clean-ups.
Check /etc/cron.daily/syslog.cron and replace syslogd-listfiles with a
bash script. The rest of the system should be Perl-free.

b.) With 32MB RAM Samba WILL respond .. aah .. not that fast - but I'm
sure you already did know that

c.) On your target machine you'll have to use a filesystem with REAL
small overhead like Ext2 or Minix.

d.) To fit the set you created in step 3 on a 40MB partition you will
have to use CRAMFS. In a nutshell: RTFM cramfs, create a cramfs enabled
loop device and copy the shrinked environment over. To finally load
you're system you might have to create your own initrd package that
mounts/prepares the CRAMFS device.

OK. I've done all of the above. It is working.

Hope I could help.

Am Dienstag, den 01.02.2005, 15:03 +0800 schrieb Qiangning Hong:
> I want to make a i486 machine to run SAMBA server,  with the following 
> requirements:
> 
> - The whole system should run under 32MB memory.
> - The boot partition is less than 5MB, the system partition is less than 
> 32MB, and the rest of hard disk for shared data. (Actually the hard disk 
> is an expensive flash drive, that's why we want as little as possible of 
> disk space used by system itself)
> 
> I know it can be done using some binary distro such as RedHat or Debian, 
> but I am only some familiar with Gentoo and just love it.  Is it 
> possible to boot the i486 machine with Gentoo LiveCD and only copy the 
> needed software (in binary format of course) to it from the developper's 
> gentoo box?  That is, no gcc, no portage, no anything that is only 
> required for compilation?
> 
> 
> --
> gentoo-user@gentoo.org mailing list
> 
> 
-- 
Mit freundlichen Grüßen

Heinz Sporn

SPORN it-freelancing

Mobile: ++43 (0)699 / 127 827 07
Email:  [EMAIL PROTECTED]
        [EMAIL PROTECTED]
Snail:  Steyrer Str. 20
        A-4540 Bad Hall
        Austria / Europespox


--
gentoo-user@gentoo.org mailing list

Reply via email to