Kernel Configuration As An Adventure
brent_linux writes: "ESR has developed a new kernel configuration system called CML2. Recently (as in yesterday) he posted to the kernel mailing list that he had added a new configuration for Expert Users. This new interface follows the interface developed from the old infocom text based adventure games. Commands such as 'look,' 'nearby,' and 'go' are used to navigate and options are items that you 'take' or 'put.' Check out the mailing list for his messages or download CML2 for yourself and check it out."
> take SCSI
It won't budge.
> take SCSI
Seriously, it is not going to move an inch.
> take SCSI
You try, but it won't move.
> take SCSI
It moves a little!
> take SCSI
SCSI: taken.
-- Robert
...or possibly hitchiker's guide to the kernel?
to mail me, first remove the evil spam.
Kernel Panic: You have been eaten by a Grue
There was some discussion as to why it had to be in Python. ESR said it could be done in C, but he declined to do it, since it would be _hard_. At any rate, it will be sweet when there is logic checking in the kernel and it won't be possible to start compilation of an invalid configuration - the idea is that with this logic, whatever you make will _boot_.
Now is they can just decrease my compile times from 20 minutes to under 1 minute...
It was the next natural step after the Kill -9 With a Doom Shotgun article from some time ago, I guess...
The next step will be have to be a lemmings-based office application, or maybe a combat flight simulator-based intrusion detection system.
It's 11pm, do you know what your deamons are up to?
You are in a series of twisty, turning tunnels, all alike
Damn, they really DID update GCC.
RW
This would go well with the MUD Shell mentioned on Slashdot a while ago.
Sleep: A completely inadequate substitute for caffeine.
Choose your processor architecture. A brass lantern is here.
/* fuck me plenty */
/. /    |\/| |\/| |\/| / Run, Bill!
There is a row of buttons on the wall of this room. They read:
X86, ALPHA, SPARC32, SPARC64, MIPS32, MIPS64, PPC, M68K, ARM, SUPERH, IA64, PARISC, S390, S390X, CRIS
The button marked X86 is pressed.
>take lantern
Lantern: taken.
>enter SPARC64
You are now in SPARC64 kernel, process.c is staring at you in its cage.
>look process.c
arch/sparc64/kernel/process.c:
(Actual quote from grepping 2.2.17 source)
 _
almost sadly, this is a real config option. its 'make adventure' in cml2 1.6.0. it is kind of neat to play with, actually.
:)" ... he replied he wrote this on a plane flight.
esr has some ideas planned for future versions, see your cml2-1.6.2/TODO.
when esr first posted to the kernel list the announcement for this new feature, I posted a reply to him on lkml along the lines of "_WAY_ too much time on your hands, dont you have some linux advocacy to be doing?
for those of you ready to take the jump to cml2, it is available at http://tuxedo.org/~esr/cml2/. You will need python2 (RedHat PowerTools has an RPM, Debian has a DEB in stable) to use it. you will also need tkinter2 if you want to use `make xconfig'. installation is simple.
i was one of the people initially against cml2 on lkml (i didnt want to install python2, i didnt think cml1 was broken -- and hence we were created problems) but now i am pretty impressed by cml2. its still not a must, imo, but i like it. it should be integrated in 2.5.2.
give it a try.
-- Robert
You have entered a maze of twisty little source trees all alike.
There is a device driver code fragment here.
> take code
code taken
> compile code
the code is buggy it will not compile
> debug code
You try and debug the code but fall asleep.
> drink jolt
jolt drunk.
> debug code
You spend the next several hours debugging the code.
The Lantern grows dim.
The Lantern goes out.
The code is debugged.
It is dark.
> N
You are eaten by a gnu, you are dead.
I'm compiling the freaking kernel!
/. /    |\/| |\/| |\/| / Run, Bill!
Oh yes, this is a Quake front end.
 _
Infocom compiled all of their games to a virtual machine to make porting easier. Clearly, if this is going to be a proper text adventure, it should be available for that VM. That way, if you want to configure your kernel on, say, your pilot or your VIC-20, it would be no problem.
One of Microsoft's biggest selling points for its server-based stuff is the "ease of configuration". That just means that any goofball can use the interface, and get at most or all of the options (usually before they know what those options actually do).
The point is, that Microsoft's interface is pretty interactive. Most sysadmin types that I know (windows or nix) prefer text-based interfaces because of the control, flexibility, and the ability to use scripts to make life easier. As a MS SQL Server admin I rarely use the GUI for anything but the simplest tasks.
The downside of the text interface is it's lack of interactivity and visual representation. In reality, there's no reason why one couldn't make the experience adventure-like. You could have verbosity levels, which would be great for novices and training situations; once you advanced in ability, you could turn down the verbosity (or it could automatically turn it down based on its own assessment of your skills as an admin). Unfortunately, everyone is having such a blast making the same Infocom jokes that they don't bother to realize that this might be a useful idea.
Rest assured, Bill Gates is not spending his time making campy "for the fun of it" user interfaces. This infocom thing might be a funny idea, but think of the CTO who reads about ESR and his thoughts on open source, and starts to consider implementing it, then sees this is how ESR spends his time. It only re-inforces the non-professional image that Microsoft is trying to portray of Open Source.
Speaking as someone under Microsoft's thumb, I hate it at times. And yet, every new release of their software has some truly amazingly useful features that sell the product very well. I get a kick out of this fun stuff, but it ain't gonna sell with my boss, nor his boss, nor his boss, the CTO.
ESR, sorry man, but if you're serious, it's time to change. You can't beat Bill Gates with geek subculture. And while you're doing that, Gates' army is charging, on a mission.
-----------------------
-----------------------
Stay in school, kids! Peace out, Dubya
Maybe if you would just bring it a shrubbery? A nice one, not too big...
Courtesy of xscreensaver/hacks/screenhack.h, and reprinted 'cause it's so damn funny and this is a worthy article:
Caution: contents may be quarrelsome and meticulous!
Your right to not believe: Americans United for Separation of Church and
I'm not a kernel hacker, but hasn't this already been done with the Adventure shell, and a few others which are based off of MUDs?
This is a configuration tool, not a command shell.
Then again, I guess that it's based off the the Infocom games, so that makes it slightly different. After all, it'll bring back memories to 'get babelfish' and 'put towel over head.'
I just hope it isn't more like 'computer, range is 360, theta is 150, phi is 30.'
But, darn, you gotta watch for them Grues....
Count yourself lucky you're not likely to come across any kobolds or paskalds. They're Red Purple Black Purple Red, through and through.
Chief Technician, Helpdesk at the End of the World "I am an IT-Goth and an Adept of Tantric VAX."
Hmm... is an IT-Goth like an Ur-Grue? :-)
> WEAR BOOTS
They are nice. You are likely to be hit on by a Goth...
Hmm. The only real difficulty I've had with FreeBSD 4.x (STABLE) kernel config (the flavor I have experience with ) is certain options not being documented *anywhere* (LINT/Handbook/errata) like
device agp
which was necessary for me to get my work laptop happy with X.
I actually prefer the one-bigass-textfile config approach, but, of course, YMMV.
Being able to set up and compile a kernle via a text script means that someone can make an entirely Web based front end using thier favorite Webified language (Perl, Python, PHP, Java, etc.) to allow the user to complie a custom kernel. The implications of this? It's one more step to making Linux a Mom and Pop OS.
One of the reasons that Windows is easy to install and configure (or seemingly so, anyway) is that Microsoft have insulated users from the gory technical details of thier hardware via friendly, easy to use, really hard to fsck up Wizards. So, if a vendor chooses, they write a Web front end that accepts the serial #. The vendors' database pulls up what was installed in that machine (CPU type, Chipsets, RAM, Disk etc.) and the CML2 Builder Web Page creates a custom kernel script, downloads it to the boxen and cranks up gcc. (Maybe XML would help?)Third party cards may be a problem - don't know how to make additions to machines newbie-proof.
All in all, I like this. And I'm sure the game interface could still be used in a browser. I haven't had the pleasure of meeting a Grue, but that damned Twonky...
"Depression is merely anger without enthusiasm." - Anonymous
Yeah, but if we were the kind of programmers who could resist the temptation to play with "useless hacks", we would have taken the job at Microsoft in the first place.
Warning: do NOT try the new kernel configurator! Look what happened to me!!
- look
Kernel Core
You are standing in the center of the most magnificent room you have ever seen. The chamber is enormous, with huge data shunts rising up from the floor as far as the eye can see, finally disappearing into the blackness above. Doorways, crawlway entrances, and ladders abound, each labeled with their destination and purpose.
Linus, Savior of Mankind is here. He wields a Text Editor in one hand and a copy of "C Programming for Dummies" in the other.
You see exits leading out, in, north, south, east, west, northeast, northwest, southeast, southwest.
- greet linus
You greet Linus, Savior of Mankind with a sincere smile.
-
Linus sees you and smiles warmly. "Welcome to the Linux kernel! Please note that this is an experimental version, so it's not entirely stable yet."
-
Linus takes a Text Editor from a burlap sack.
-
Linus gives you a Text Editor.
-
"Please feel free to use this tool to add to and/or repair the Kernel. Enjoy your time here!"
-
Bill Gates, Dark Lord of Everything That Is Evil wanders in from the west.
-
Bill Gates greets you with a sincere smile.
-
Bill Gates says, "Just looking for some new code ideas to "innovate" into the new Windows Anti-Christ Edition. Remember, 'ALL YOUR CODE ARE BELONG TO US'!"
-
Bill Gates removes a simple oaken pipe from a burlap sack.
-
Bill Gates removes a tinderbox from a burlap sack.
-
Bill Gates removes some marijuana from a burlap sack.
-
Bill Gates places some marijuana in a simple oaken pipe.
-
Bill Gates lights a simple oaken pipe until it is smoking nicely.
-
Bill Gates takes a long drag off a simple oaken pipe.
-
You see an aura of ultimate destruction appear around Bill Gates.
-
Bill Gates laughs evilly.
-
Bill Gates holds up his hand, closes his eyes, and begins to chant strangely.
-
Mystic energies swirl beautifully before your eyes.
-
Without warning, the energies converge into strange apparations, in the shape of flying windows, and float evilly in the air around you.
-
Suddenly, the strange apparitions rush at you with terrifying speed, ripping into your soul and shattering your mind.
-
You bleed 666 health.
-
You have been slain by Bill Gates.
You have played 8 games so far.
Thank you for playing 'make adventure'!
... I would refer you to this article which discusses structured environments. Basically to be efficient at something, e.g. preparing a dish, we line up all the instruments in a particular order to help cue us when a particular task needs to be done. Extending this into a semi-spatial (if ESR can get the right relationship of in-on-up-etc representing the true connectivity between kernel modules) setting would help people orientate themselves and get to work faster (so you can get back to that QUAKE game). Just like we would put a letter by the door, or shopping list by the car keys, each cue triggers associated memories and reminds us of specific actions that need to be done. Sure you can have a linear check-list like the space shuttle pilots but anything computing-wise is so variable that a more flexible arrangement is desirable. I've been looking into something similar for the make processing for reproduceable documents and it is not as easy (or trivial) as people think (at least to get right). For example, color assignment ... do you map this property to time-of-last-modification (ie heat colors) or to likely hazard (red=stop, orange=hazard, yellow=caution, etc). If you dig far enough, you eventually realise it is actually a text variant of scientific visualisation but in the qualitative domain. There are a number of theories on how you allocate the properties based on human cognitive functions (see Lloyd w.r.t. OpenDX and fiber bundles) ... but there are a lot of issues remaining such as what works for 5-6 objects doesn't work for thousands.
Like all ideas, let the users decide and if it works, it will be included into the meme-pool. Imagine TuX, the penguin avatar trundling around kernel space looking for fish or and fixing security leaks. At the worse, it will provide a few minutes of amusement.
LL
This reminds me of one of the funniest Usenet .sigs I ever saw:
;)
"DOS is, quite possibly, the worst text-adventure game ever"
Atleast text-adventure game errors made sense
Some people have a way with words, and some people, um, thingy.
The kernel is locked in the games process
look:
you are in a dark cave
search:
you find a treasure chest
open treasure chest:
the treasure chest is empty
give treasure chest to process handler
...
the process handler is not placing processor states into the treasure chest and exchanging them for inactive ones. Congratulations, your kernel operation has reached a new level.
Congratuations, you have reached a new level, select device drivers to install!
buy bttv.o
You do not have enough experience to install this as a module, build into kernel?
...
...
...
That was one of the original Macintosh interface guidelines. And it's still a very good rule. Think hard about that the next time you design something that needs "configuration".
The next logical step I think would be to take that Doom engine and this Zork configurator and mix them into some distros installation program. Make it so you can select your key maps, hardware, packages, etc all by running around and flipping switches and such. It might not be the most practical way to install but it might be enough to make some gamers try it out and prove that Linux isn't just for servers before the user even gets the OS installed. :)
:)
Hell I'd like to see a graphical multi-user shell enviroment on Linux. Not to replace the cli or gui but to go along with it and make it more fun for users and help them learn how different parts of the OS interact. They'd need to be able to do everything the shell usually allows as well as interact/chat with other users. They'd start in their home directories and be able to browse the filesystem from that point (seeing anything that was visible to them from the normal shell) and be able to teleport to different directories directly. They'd need to be able to create a new file or directory as well as delete them all in real time. They'd have to be able to run commands, edit files, etc. I'd have a little CLI part under the MUD-UI where they could type/edit commands they were selecting from the MUD-UI as well as chat with fellow users. I'd make it so any program could be written with the ability to interact within the MUD-UI in the same way programs can interact with X to create windows, menus, etc as appropiate for the enviroment. You could really do a lot with it if you don't get silly and think most people will want to replace their CLI/GUI methods with the MUD-UI and treat it as an addon. Start with something simple and well known like the Doom engine (the nicely cleaned up version) and first try to do everything Bash does for a user and then extend from there.
At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
KDE 2.2 will be shipping with a new kernel configurator too. It's build into the KDE Control Centre and is a very simple, fast and easy way to configure your kernel. It uses the kernel's existing configuration files/system but has it's own parser and intuitive gui. Check it out!!
If you were to actually follow the links, you'd see that the new system really is simple and easier. This front end is to demonstrate how easy it is to make a different front end.
The CML2 system even makes sure you're making a valid configuration, unlike the current system.
In response to the other reply to this, the system has significantly less code.
Erm, I was in the group that was talking to ESR at a Denny's in Lathrop, when make infocom (our original idea, before we realized infocom might not like it) was born, at least in the idea. Look out for Chuck, or the killer rabbit... so many things we talked about there, guess I better see what he created from all the idea that were thrown out...
bash: ispell: command not found
This sig left intentionally blank.
We now need a FPS kernel configuration routine.
:)
Need to upgrade the mud based shell as well. Anybody who's anybody does their work in FPS mode these days. After all, its the only truely intuitive process. I mean seriously.. whats more likely? Someone entering the workforce that "intuitively" understands the concept of files and directories, and double clicking, or would they more likely understand roaming around with a shotgun and shooting monsters to erase files.
Lets get cracking people.. Until we can fully emulate everything we do in full 3D, then we might as well just do it in reality since it would be more efficient that way.
-Restil
Play with my webcams and lights here
You attempt to ford the river. You lose sparcaudio, two filesystems, and ffb_drm. sparcaudio pulls cs4231 into the river with it. You are out of filesystems.
Man, OT was the best. :-)
I could say "Use Google!", but here you go:
http://uwsg.iu.edu/hypermail/linux/kernel/
See here and enjoy. - I assume the "forbidden hole leading west" then is write support for UDF :).
For beginning users, a graphical interface like this might be useful. I've thought of what I think is a good representation for files and directories, which could be merged with that DOOM-shell idea.
Directories are rooms. The texture of the walls and floor tells you what type of filesystem it is - e.g. marble for ext2, rotten wood for FAT, clouds for NFS. The color tells you what permissions you have on the directory - e.g. blue is read-only, green is writeable. A door to the parent directory is on one wall, doors to subdirectories are on the far wall. On one wall is a button. Push it, the wall drops down and there are all your hidden files and subdirs (.emacs, .netscape, etc.).
Files are objects in the room. The shape of the base tells you what kind of files they are - e.g. square for regular files, triangular for devices, round for pipes, etc. Colors indicate permissions again, and texture indicates detailed type - parchment for text, circuits for executable, etc. Height indicates file size, in a logarithmic mode. (Each unit of height means double the file size.) You can instantly tell a great deal about a file just by looking at it. Symlinks to other files are semi-transparent.
Like a game, you can select different tools (a delete tool, a copy tool, a link tool) and apply them to files and directories. Like most games, the "~" key brings down a shell console. You can switch to another user or "god mode" (root) and then the colors of things change to reflect your new permissions.
What do y'all think?
PHEM - party like it's 1997-2003!
Most of the options in the kernel configuration are meaningless to me and the help information in the generally primitive configuration tools is usually far from helpful for people not into kernel hacking. Luckily kernel configuration/compilation is rarely needed by users like me. Unless you need to upgrade (e.g. because of security fixes). Then it really doesn't matter how user friendly your distribution is because your only real option is to get your hands dirty and compile the bloody kernel. Meaning you have to fiddle with all the options you don't understand. A person like me could easily make some mistakes resulting in unstable or unsecure kernels.
It's time this part of linux is brought into the 21 century as well. Most users don't really need to recompile, they just need to put binary modules together. 95% of the users don't have scsi, do not have obsolete bus architectures, run x86 processors, would like to be able to mount their dos/windows drives. Why not build a set of kernels for different architectures for the most common desktop configurations and leave the compiling to people who really need it (i.e. those with older, more exotic hardware or those wanting to tweak optimization settings and so on).
It's nice to have the flexibility to compile the kernel, it is bad that it is the only way of getting a usable kernel. Maybe having binaries is not an option but in any case the configuration tools could be a lot more user friendly by for instance doing some hardware recognition, recognizing that certain options exclude each other, offering some presets which make sense on common architectures like x86 pc's. A nice option would be to automatically duplicate the settings from the running kernel into the new kernel, only prompting for settings that are new or require changes. That would make kernel updates a lot more painless. Even for the advanced users that would mean they could spend less stuff on the trivial stuff and instead focus on the important stuff.
Jilles
There's this new company, maybe you've heard of them, called RedHat. They ship with several different kernels, already compiled.
Jesus was all right but his disciples were thick and ordinary. -John Lennon
What's the actual command grammar here? If it's just parsing a verb-noun command, it's not like "Infocom" but merely one of the many precursors or poseurs which also littered the landscape.
Infocom's parser handled a fairly diverse set of grammars for commands:
floyd, put the wrench in the cardboard box.
put all the goo, the interface card and the canteen under the table.
open the satchel then put the thing into it
Until it can handle such a diverse command set, I wouldn't try to suggest it's like Infocom games.
[
There used to be a config file for bash to turn it into "Adventure Shell". I have't had to compile Bash for a long time, so I don't know if they still include it in the source.
Before that there was a real adventure shell, I remember one incident that was described by a friend about his boss using it...this person was trying to print something, and so he fed his document to the Print Daemon...it simply ate it...it turns out that you have to throw it at the Print Daemon to get it to print it!
And for those of us who remember it...(check out my User# here), I remember back when we only had a "Make config", and had to answer *EVERY* question about configuring the kernel...but then again, it was smaller then...then again, I remember doing kernel compiles overnight on my 486 system....My first kernel was v0.11, but I really only started to use it with v0.12.
ttyl
Farrell
CAN-CON 2019 - Ottawa's only book oriented Science Fiction Convention! October 18-20, Sheraton Hotel, Ottawa, Canada h
Last night I compiled kernel 2.4.5. (Note: I'm fairly new to Linux) and had to select which components to build into the kernel to support my PCMCIA NIC. Now, the machine was currently supporting the NIC just fine, but when running xconfig, I had to select the driver for my NIC. The default selection was a type of NIC that I've never seen, and I had to go run lsmod and then essentially guess which module was for my NIC (not hard if you know what to look for, but still) and then figure out which config option enabled that driver. So my question is this: why can't the xconfigurator look and find out what driver is being used for my NIC, and select that as the default? Sure, I could change it if I felt like it, but if I had gone with the default options for the PCMCIA NIC, (assuming, as with any version of, say, MacOS, that if the card is currently working, the incremental upgrade shouldn't remove support altogether) I wouldn't have been able to use my NIC at all. It's just plain counterintuitive. I'm not saying that the average user will recompile his or her kernel, but this is an example of why Linux is not a competitor to Windows.
"VMS is a single-player text adventure game. If you win, you get to use Unix."
(Back when DEC Alphas were running both OpenVMS and OSF/1.)
You cannot apply a technological solution to a sociological problem. (Edwards' Law)