From: Doug M. <fil...@sb...> - 2002-05-02 07:14:47
|
Just an FYI- I've been developing a tool/project that may be useful for this project. I'm basically ready to release an alpha version, though I'm still polishing. Its several projects really. I break it up into 3 layers. Layer 1 - VirOS - A tool that converts an installed system, and munges it onto a bootable CD. I started using bblcd, then switched to bick with the philosophy- assume 2.4 tmpfs and devfs because they are g00d. I ended up tweaking bick so much, that I rewrote a similar project from scratch. It currently doesn't support the big bick feature of booting up sparc as well as x86 (on the same CD), though with enough work, that could be added back in. My primary divergence with the bick methodology is that I optomize less for storage space, and more for ease of use. Bick uses 3 very tight C programs for its stages. I optomized this into two stages, that use (my patched version of) nash scripts. Nash scripts are just nicer to work with than no library C code. My other main improvement over bick comes in the form of a new 3rd stage, run immediately before handing off to the real /sbin/init, which does 'g00d stuff'. The main 'g00d stuff' is that it automounts readonly, all supported partitions it finds, and puts them under /mnt/local/disc?/part?. If it finds one with enough free space (say, 1G), it will automatically temporarily mount it readwrite, and dump an image of the CD there. Thus in the typical case when you have /usr (or more, viros is very flexible here) mounted from the cdrom, now these can be mounted via loop from the local disk, thus freeing up the cdrom drive for user functionality (read: ripping music). Layer 2 - Gendist_mdk82 - This is a script, which given as input a spec file, and the mandrake-8.2 source media, with *generate* a minimal installed system. Obviously for the use of handing to VirOS above. The specfile covers a few things, though mainly, it is a list of rpm's to be added with urpmi (unless requested, urpmi and its rpms are removed after they have been used to install the rpms). Thus in the spec file, you don't have to worry about dependencies, you just say "I'd like a minimal distribution, but with xmms, xmame, WindowMaker, etc...". Also simple 'patches' (i.e. sets of files to just be copied onto the system) are supported as well. Layer 3 - TVOS - As a first proof of concept app, I wanted a bootable CD that served a very narrow purpose. Turn a random spare 300MHz+ PC with 128+M ram, into a living room jukebox PC. I wanted (it works now :) a CD which boots the PC straight up into xmms, having searched the cdrom, PC's local disks, and network for music. With full screen eyecandy as the default display. I optomized this 'system' for 640x480 resolution, figuring thats what most tv-out video cards play nicest with, and that can be fed trivially to hdtv's as well. And it keeps the fonts nice and big enough to read from a couch, even if its a crap 14" monitor thats being used. IR remote controls are supported, but for now, just the kick ass ast/logitech one. Grip is also started, configured for brain dead autoripping. Autodetection - ============ Most basic funtionality here is autoconfigured. Lan (defaults to dhcp client, if 2 nics, defaults to simple masq firewall). Videocard - none of this vesafb crap, I use XFree86 -configure, with autodetection/autoinstall/autoconfigure of the binary nvidia driver. Thereby booting straight up into 3d supported if available. Sound is autodetected with sndconfig --quiet, as well as just blindly loading all modules reported by pcimodules. Mice are currently not autodetected, except that I assume a logitech/ast IR remote acting as a mouse. User Experience ============= The main goal of all this is to provide a useful system/app (living room jukebox) for the user, with absolutely no user installation/configuration required. They just drop the CD in the PC as if it were a game cd for an xbox (I would love someday for my project to run on an xbox :). Then they get a splash screen saying "system loading" (no text mode at all, just a few splash screens while loading, ala tivo). The user does have to wait awhile, as loading from CD is very very slow, and caching to the harddrive is also slow (dd if=/dev/cdroms/cdrom0 of=...). But if the CD has already been cached, it is a very quick bootup. Anyway, the loading splash screen fades to an X splash screen as the user is told "just a few seconds more" while xmms, mozilla, grip and kin are loaded into X (behind the users splash screen). For simplicity, I load each app onto its own desktop. As I personally dislike the whole *windows* aspect of GUI's, which certainly have no business on a living room jukebox TV display. Anyway, it sounds like this could be a good base for a rapid prototype (and beyond perhaps) for opencd. I'll try to get it hosed on sourceforge in the near future. Here is an example of my specfile to give you an idea- gd_mdk_basedir="/mdk82" gd_mdk_updatesdir="/mdk82-updates" gd_mdk_customdir="/root/viros/gendist/basemedia/contrib" gd_urpmilist=" devfsd file losetup pciutils bootsplash autologin lirc sndconfig emu10k1-tools aumix syslinux dhcpcd frozen-bubble tuxracer XFree86-server xinitrc xinput WindowMaker xmms xosd xmms-more-vis-plugins xmms-mesa xmovie iptables rp-pppoe mozilla grip eject gzip bzip2 openssh-clients rxvt nmap strace Mesa-demos libgcc3.0 xli urw-fonts samba-client xmame-SDL xmame-xgl " gd_patchlist=" viros hack-tvos-bootsplash nvidia uemacs tvos tvos-lirc-logitech tvos-mozilla tvos-home-hack music-acdc-back_in_black music-black_sabbath-we_sold_our_soul_for_rock_n_roll music-pink_floyd-animals music-the_doors-an_american_prayer music-tori_amos-to_venus_and_back sendxevent tvos-mameroms x10 xmms-lirc xmms-goom XmmsChannels xvkbd snake3d " gd_remove_rpm=1 gd_prunelist=" /1 /var/lib/rpm /lib/modules/2.4.18-6mdk/kernel/drivers/video/riva " |