[Peeweelinux] AutoBoot and X windows project release

Ken Emmons, Jr. [email protected]
Thu, 20 Mar 2003 10:51:24 -0500


This is a MIME message. If you are reading this text, you may want to 
consider changing to a mail reader or gateway that understands how to 
properly handle MIME multipart messages.

--=_550A1F99.CFAECA0B
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hello,

The initial Autoboot project with X windows support has been reworked. =
I've attached it to the email.=20

Hopefully users can try this project out and it will give them a great =
starting point with developing their own project, as a lot of the figuring =
out of dependencies and such have been taken care of. I'd like to get some =
feedback so that I can improve it for my own needs, and so others can =
benefit form it.=20

 What you get with this project is a pretty complete system with vi, grep, =
more, bash, XFree86, top, network with optional DHCP. Pretty much =
everything I can think of that one might need to have a not-very-deeply-emb=
edded-system. OK, OK, so you don't have emacs and Mozilla, but what do you =
want in a system that compresses to 5.5MB of flash disk space! With =
CompactFlash costing pennies these days this is pretty reasonable. Youc an =
probably find people throwing away their 8MB cards.=20

The way it works out of the box is to boot up and run normal scripts, and =
then su to a normal user, which then runs x windows (twm and xterm). I =
have defined this as another runlevel in inittab, specifically runlevel 4. =
I insert the module for my intel etherexpress network card and run dhcp =
daemon to configure my IP address. You can tailor all of this behaviour by =
modifying the files in the ./custom folder of the project. Here is a =
breakdown of what to do:

1) Unpack peeweelinux 0.61.1. (If you already are using 0.61.1 skip to =
step 4...)
2) cd Embedded_Build
3) mkdir projects

4) cd projects
5) tar -xzvf  <your path to the bootx project>/bootx.tgz
6) cd ..
7) ./pwlconfig

Answer the prompts to unpack tar files if it appears. Change projects to =
bootx if necessary. Choose the option to extract the filesystem for the =
project.=20

You should now be ready to build this project to flash. I recommend trying =
it out and see if it works before modifying what is in the project. You =
may have to change your target hardware config (I have the flash disk =
attached to my sandisk reader at /dev/sda ).=20

After verifying that you can autoboot to x windows (It uses VGA16, so you =
should get it to work with any VGA card at first.) you may want to go in =
and configure your particulars.=20

Network config:
************
1) Change your network module. I use the eepro100 module for my intel =
card. You can change this in the kernel-full package list for your =
specific card.=20
2) Edit the custom/etc/rc.modules file for the network module that you =
just selected.=20
3) If you don't have a DHCP server attached to your LAN, edit the file =
custom/etc/config/ifcfg-eth0 for your static IP address and such. (for an =
example, see the autogenerated file in the mnt/etc/config/ifcfg-eth0 =
file).=20

Of course if you don't have a NIC, just delete all network related =
packages in pwlconfig.=20

Stopping X windows from firing up at boot (i.e. normal autoboot to =
console.)
*************************************************************
1) go to custom/home/autologin/.bashrc file and comment out the line that =
says "startx".=20

Making your custom application fire up at boot.
**************************************
1) If it is an X app (probably static linked if using GTK or other =
toolkit) you want edit the sutom/home/autologin/.xinitrc file. Comment out =
the lines for xterm and twn and put in a line for your application.=20
2) If it is a console app, just add it to your .bashrc file.=20

I've included the Xfree86 Framebuffer driver in addition to the VGA16 =
driver. I haven't been successful in getting this to work, so if anybody =
has any insight into doing this it would be appreciated. Ultimately having =
a framebuffer basic config that runs on almost all VGA hardware would be =
desireable since we can get more than 16 colors potentially. This may not =
be possible but I am holding out hope for it. You can build multiple NICs =
into kernels, but I hate to maintain different peewee images just for =
video hardware!=20

I hope this helps some people out, and don't be afraid to comment on it =
and report bugs.=20

~Ken





--=_550A1F99.CFAECA0B
Content-Type: application/octet-stream; name="bootx.tgz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bootx.tgz"

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
qgYAuAEA

--=_550A1F99.CFAECA0B--