![]() |
JUD developer's page |
![]() |
Most of this page assumes familiarity with GNU/Linux or Unix operating systems. There are some parts such as sound driver "zip" file building, minor scripting changes, or program reconfiguring that other ambitious people might have success with however.
Here are the basic steps I took to produce JUD as you see it today. These are likely to be the same steps you would have to take to do major rework or forking of this project.
I started with my Linux desktop system. In my case it was Slackware 9.1, but I think most any full sized distribution will do.
I chose to base the whole thing on the scaled down "uClibc" library so to have a chance if fitting everything on a single floppy disk. The uClibc folks made it easy by providing an i386 tool chain. All I had to do is to do a loopback mount of it and "chroot" into it and I was ready to start compiling software.
The first thing I grabbed to compile was the "Unix Swiss Army Knife": busybox
I obtained source files for the following programs: dosfstools, unzip, dialog, e3, ytree, and mpg123 typically by using Debian's "apt-get source xxx" from my Debian-unstable machine and compiled them using the uClibc tool chain.
I then built a 2 Meg empty retainer file for my root file system using "dd if=/dev/zero of=initrd bs=2M count=1", and associated it with a loopback device using "losetup /dev/loop2 initrd" and then built an old style minix file system on it using: "mkfs.minix -i 350 /dev/loop2". I then started copying some library files from the uClibc tool chain as well as my newly compiled programs to the the my minix root file system. Finally I "gzip -9 initrd" it up for placement on a floppy disk.
I then grabbed Linux Kernel 2.4.25 and compiled it on my Slackware 9.1 system with this stripped down config file. Here are some extra kernel modules might be useful by some for "zipping" up into separate optional packages. There are modules for additional sound cards, scsi controllers, file systems and a few other things.
Then I copied the kernel and the initrd file system to a vfat formatted floppy disk and ran "syslinux" on it so to install a boot loader. After I saw the whole thing mostly work, I copied it into a floppy image file for safe keeping and distribution.
Finally I began doing all kinds of troubleshooting, script writing, making use of the ncurses based "dialog" user interface program and various other configuration chores.
Finish and refine the user interface. This needs to be as goof-proof as possible for use by the general public.
Produce any extra documentation that might be needed.
Apply the disk drive unlocking patch as found on buried on Rockbox's website somewhere. I guess I need to make it work from inside the USB-storage device driver itself instead of the ISD-200 driver as originally designed. Does this problem even ever happen anymore? Am I going to have big problems applying this patch to a possible later version of the driver and moving it to the main USB storage driver?
Build a bootable El Torito CD-ROM version of this thing. Wow, we get a whole 2.88 Megs to work with, what will we do with all the space? While I'm at it, I guess I should make an image that you can install on the JB itself for computers that can boot directly from a USB device (I don't have such a computer yet).
Finish building sound driver "ZIP" files for more sound chips, SCSI controllers and Cardbus controllers. You can help by digging one you need to make yours work out of this file system branch containing all the modules compiled for this Linux Kernel. Then by using one of the existing zip files as a pattern, build your own "zip" module, then let me know what you did.
Fix the "-g" gain option on MPG123. I get "Can't get audio device features list" errors. Why?
The -b (buffering) option also doesn't work in mpg123, and we seem to really need it
Fix and configure "gpm" mouse support. Currently it doesn't work, perhaps related to it's failure to create a UNIX socket node in /dev. Maybe this is because this kernel lacks network support?
Related to networking, I wonder if I can squeeze networking support on this floppy? Want either a Windows or FTP file server? how about a streaming audio web server? run JUD from telnet? or does does anyone care?
You'll notice I have the the whole thing booting directly into an "ash" shell, bypassing any "login" program. I figure who cares about users and groups when dealing with a boot floppy accessing a VFAT file system? I would like to execute a system profile when the shell starts up because I have a bunch of old MSDOS commands aliased over to their UNIX counterparts, so most users won't be completely lost in a shell. The problem is that I can't get the profile to execute. "ash" claims to only do this if it finds a "-" in argv[0], which I guess the login program does somehow. What is the simplest way for me to make this all work?
If you plug in your JB, or do anything else that produces "Kernel messages" to the "console", it will corrupt the dialog screens and create confusion (just hit ESC to clear it up). I would like to have the console device set to its own virtual terminal instead being sent to the currently active one but I can't figure out how to do it.
Anyone want to attempt to get the ALSA sound drivers compiled an running on this thing?
It would sure be nice if after the player quit playing (on virtual terminal 5) it would automatically switch back to terminal 1 (where the "menu" program lives). Anyone know any tricks?
I need a script that will figure out the JB device from a bunch of other SCSI devices that might also be detected. Currently it assumes it will be the only SCSI device and figures it is /dev/sda. Currently if you detect any other scsi devices (or things like USB storage devices that show up as SCSI devices) before the JB then it will confuse the "menu" script program some.
If this project really takes off for some reason, I'll need to move it to a hosting site. It might be best on its own "Yahoo Group" or possibly even SorceForge. Maybe once I settle on a good name, I'll build a Yahoo Group by the same name.
It occurs to me that a nice fork of this project would be one for digital camera owners. The disk could connect to a memory card reader or the camera directly, transfer photos and display them in a slide-show using the Linux VESA video frame buffer.
| Downloads Page | JUD Home Page |
This page was last modified on 4/03/04 by James Stewart wartstew@yahoo.com