GNUnix --- [Pronounced NoonIX] An initially tiny but incrementally complete OS with a page-fault like JIT packaging system that transparently downloads and installs drivers or applications when the system or a user attempts to use that feature. ==Goals Minimal resource use through JIT download, install, start. Auto-hibernate procs by writing "resident memory" and handle list to disk allowing thousands of procs to remain forever running, even across reboots. Some kind of dashboard to display computer health and help such as: Process interrogation and control: htop, xosview, xload CPU schedule, split, cluster Memory Allocation and Protection Disk Storage, Throughput, Temperature: CoreDump.Free.fr/linux/hddtemp.php Network Throughput: Keyboard and API access The user downloads the installer as a platform-specific executable which prompts the user to split or overwrite the partition table. A minimal disk image (with a low-performance 'universal' network driver or with all known network drivers) is then downloaded and written to the target partition which is (by default) made bootable from the containing OS. Hardware is probed during the first (and anytime |SHIFT| is held during) boot; needed drivers are downloaded, installed and started. The video card is switched to graphics mode very early and the login prompt appears while services start in the background. Default resolution and refresh rate are sensible and easily adjusted by right-clicking the desktop. New users may create their own (limited) account with the [New] button at the login screen. Pressing the WindowKey or clicking the [Star] button displays a tree of software and media organized and sorted by community and/or personal rankings. Tools, toys, games, movies, music, books, news, etc. are downloaded, installed and executed only when selected. Titles appear slightly faded until installed. When a choice is made, it is downloaded from local CD/DVD if available or through bit-torrent backed by HTTP mirrors. The lightweight windowing system optionally captures and translates keystrokes so input can be standardized across applications. Mixable themes include: CUA/Explorer, Emacs, vi, Norton Commander. Each application frame drawn by the window manager includes an extra button which helps this user read and write community News, Bugs, Updates, Help, Docs, Fix, Ratings, etc. ==Global keys WindowKey Open 'root' menu (WindowKey-z in jwm) Ctrl-Shift-ESC System Monitor Ctrl-Alt-Del Menu to shutdown, logoff, restart Ctrl-Alt-Bckspc Menu to fix resolution, refresh rate, login portal WindowKey-e MinEmacs lightweight disk and net browser/editor WindowKey-r Open a 'Run' prompt WindowKey-m Minimize all windows WindowKey-c Open a Console ==Implementation ideas A text file or maybe a directory of files and subdirs used describe the menu layout and commands? Make the directory /usr/local/gnunix and put it at the *end* of our $PATH environment variable. Then fill /usr/local/gnunix with small executable installation scripts having the same name as the target command. When the user tries to run a program that is not yet installed, it actually runs the installer instead. For example, /usr/local/gnunix/xosview might look something like: __ #!/bin/sh sudo apt-get install xosview xosview __ Now, when the user attempts to run that program, the system will transparently run the installer and then launch the program. The next time the program is called, the system will find the *real* executable earlier in $PATH and run it directly instead. ==Long-term ideas: The GUI "Desktop" becomes a 3D looking first-person perspective with the same MOO text objects represented as icons or models. These objects are manipulated through a right-click menu or by 'applying' other objects. The HUD contains gauges for CPU utilization, speed, heat; Memory load; fan speeds, disk and net activity/load and errant processes or users. Programs are grouped in rooms dedicated to high-level goals like janitor, mail, music, TV, games. Computer hardware is represented by a 3D model you may administer directly. Networked peers may share read, write, execute access to their files and display. Security may appear as doors or windows that require a key or tool to open. A portable radio or TV can be added to your HUD. Changing channels lets you browse through Free audio and video blogs or feeds. ==Research MinimaLinux.org ==Example based on Ubuntu Hardy Heron ===Boot from HD partition $ wget Archive.UBUNTU.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/mini.iso Use LUBI.sourceforge.net and https://launchpad.net/unetbootin >>UNetbootin allows for the installation of Ubuntu, Fedora, Mandriva, OpenSuse, Arch Linux, or Debian to a real partition, so it's no different from a standard install, only it has the advantage that it needs no CD. ===Boot from USB $ wget Archive.UBUNTU.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/boot.img.gz $ sudo fdisk -l #list partition tables from /proc/partitions >Disk /dev/sda: 320.0 GB, 320072933376 bytes >>This is my SATA drive ... >Disk /dev/sdb: 127 MB, 127664128 bytes >> ok, this is the USB drive $ cfdisk /dev/sdb #delete all partitions, then add primary partition #1 as FAT16 $ gunzip boot.img.gz $ cat boot.img > /dev/sdb1 ===Burn to CD $ wget Archive.UBUNTU.com/ubuntu/dists/hardy/main/installer-i386/current/images/netboot/mini.iso In a virtual environment: $ qemu-img create QemuHD.img 1G $ qemu -cdrom mini.iso -boot d QemuHD.img For a physical machine, write it to CD $ cdrecord -dev=/dev/dvdrw -v -speed=4 -eject mini.iso #limiting speed may increase burn success Now insert the CD into the target machine and boot it. ===Booting At the "boot:" prompt type 'cli' and press ENTER After finishing the install and rebooting, login to a user account and run: $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install xorg wdm jwm big-cursor rxvt htop hwinfo xosview xfe epdfview firefox unzip aumix mplayer vlc xorg: Base X Window system wdm: Login screen jwm or pekWM: Desktop and application frames big-cursor: Giant mouse pointer rxvt: Virtual Terminal for command-line access htop: Manage running procs hwinfo: View hardware information xload, xosview: View OS conditions xfe: Browse filesystem epdfview, poppler-utils: view .pdf firefox: Browse web unzip: Extract .zip aumix: Adjust audio settings mplayer, vlc: View audio and video files fotox: View still pictures emacs: Edit text files, browse filesystem $ cd ~/ #change to our home directory $ wget EcoComics.org/.text/.jwmrc $ wget EcoComics.org/.text/.xmodmap $ wget EcoComics.org/NoteMacs.tar.bz2 $ tar -xjf NoteMacs.tar.bz2 The new X.Org (7.*) creates a much smaller /etc/X11/xorg.conf that is easier to understand, but who in the universe wants a virtual desktop larger that their real resolution?! Bah! $ sudo emacs /etc/X11/xorg.conf #force X11 to one resolution: Section "Screen" + DefaultDepth 24 + SubSection "Display" + Depth 24 + Modes "1024x768" + EndSubSection