From gc@mandrakesoft.com Tue May 15 15:58:05 2001 Return-Path: Delivered-To: leitner-fefe-leitner@fefe.de Received: (qmail 9537 invoked from network); 15 May 2001 13:58:05 -0000 Received: from office.mandrakesoft.com (195.68.114.34) by fefe.de with SMTP; 15 May 2001 13:58:05 -0000 Received: from obiwan.mandrakesoft.com (obiwan.mandrakesoft.com [192.168.1.17]) by office.mandrakesoft.com (8.9.3/8.9.3) with ESMTP id PAA27561; Tue, 15 May 2001 15:57:58 +0200 Received: by obiwan.mandrakesoft.com (Postfix, from userid 576) id 59A074197; Tue, 15 May 2001 16:09:02 +0200 (CEST) Sender: gc@mandrakesoft.com To: future@mandrakesoft.com Subject: stage1 milestone: we now use dietlibc for everything Cc: Felix von Leitner From: Guillaume Cottenceau Date: 15 May 2001 16:09:02 +0200 Message-ID: User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Length: 3095 Lines: 84 Hi, An important milestone for mdk-stage1. First released with Linux-Mandrake 8.0, the new stage1 made use of the dietlibc, a smaller replacement for the glibc, for the cdrom and disk floppies. The network and pcmcia floppies were still using the glibc because of the need for dns resolving, nfs mounting. Also, the UI was an stdio-based interface rather than slang/newt. Now, mostly due to the great work of the dietlibc authors, we use the dietlibc for all the stage1 binaries, and with the newt UI. It's a great step forward since this will allow many more network and pcmcia drivers on the network and pcmcia floppies, and a far better looking interface using newt. Also, we protect for further fatterization of the glibc :-). Here's a copy of the file advocating the dietlibc in the source code of the stage1. -=-=----=-=----=-=----=-=----=-=----=-=----=-=----=-=----=-=--- (the dietlibc is a replacement for the glibc, which aim is to produce smaller statically linked binaries) The use for dietlibc in the stage1 was clear because currently used install process on x86 is from a 1.44 Mbytes floppy. On this floppy we need to fit the kernel, modules (scsi and network access), and the code to do the basic things to load the stage2. The only part on which we could progress was the code. As always, figures demonstrate evidences. Here are the size of the binaries used for the cdrom, disk, network and full floppy installs, using newt as the UI library: - with glibc -rwxr-xr-x 1 gc gc 569448 May 15 15:29 stage1-cdrom -rwxr-xr-x 1 gc gc 572264 May 15 15:29 stage1-disk -rwxr-xr-x 1 gc gc 624712 May 15 15:30 stage1-network -rwxr-xr-x 1 gc gc 720360 May 15 15:29 stage1-full - with dietlibc -rwxr-xr-x 1 gc gc 169332 May 15 14:26 stage1-cdrom -rwxr-xr-x 1 gc gc 172180 May 15 14:26 stage1-disk -rwxr-xr-x 1 gc gc 198612 May 15 14:26 stage1-network -rwxr-xr-x 1 gc gc 251764 May 15 14:26 stage1-full The `stage1-full' binary has code for many things, most notably: data decrunching (bzlib), archive extraction (in-house format), module loading (insmod from busybox), PCI detection, ide and scsi handling, cdrom/disk/loopback mounting, DHCP client negociation (redhat+grub), NFS mounting (util-linux), FTP and HTTP transmission (redhat), pcmcia initializing (pcmcia-cs), UI interaction (slang/newt); with use of the dietlibc, the binary is only 250 kbytes! Due to the modular programming, it is also possible to choose to not use slang/newt as the UI, but a stdio-only UI. In that case, the binaries get of course even smaller: -rwxr-xr-x 1 gc gc 104500 May 15 15:46 stage1-cdrom -rwxr-xr-x 1 gc gc 107348 May 15 15:46 stage1-disk -rwxr-xr-x 1 gc gc 133972 May 15 15:47 stage1-network -rwxr-xr-x 1 gc gc 187348 May 15 15:46 stage1-full gc [Tue May 15 15:58:34 2001] -=-=----=-=----=-=----=-=----=-=----=-=----=-=----=-=----=-=--- -- Guillaume Cottenceau