summaryrefslogtreecommitdiff
path: root/archive/0.1/NethackBootdisk.html
blob: 6972422e1839b04e8b2b123a919e0b259c1dd1f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html>
<head>
	<title>NethackBootdisk</title>
	<meta name="author" content="Reiner Herrmann">
	<meta name="keywords" content="nethack, bootdisk, nehabodi, floppy, linux, busybox, uclibc">
</head>
<body>
	<h1>NeHaBoDi</h1>
	<hr><a href="http://sourceforge.net/projects/nehabodi">Project page</a>&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;<a href="http://sourceforge.net/project/showfiles.php?group_id=125889">Download</a><hr><br>
	<b>General description</b><br>
	NeHaBoDi (NethackBootdisk) is a very small <a href="http://www.kernel.org">Linux</a> distribution, containing the famous role playing game <a href="http://www.nethack.org">Nethack</a>.<br>
	Nevertheless it is completely fitting onto a single 1.44 MB floppy.<br>
	So you just have to insert the disk, boot the computer and are able to play a round ;)<br><br>
	I started this project to learn something about the Linux bootprocess and how real distributions are working.<br>
	A nice side effect is, that I am now able to play my favorite game at computers on which I am not able to install additional software ;)<br><br>
	You can also test the floppy image by using the CPU emulator <a href="http://fabrice.bellard.free.fr/qemu/">QEMU</a> (<i>qemu -fda filename.img -boot a</i>).<br><br><br>

	<b>Technical details</b><br>
	This distribution is using a Linux kernel in version 2.4.28, because it is much smaller than the recent 2.6 series.<br>
	To save space for nethack, I left features and drivers out, that are not really needed.<br>
	Busybox is used to provide the programs required for login (init, getty, login) and a small shell (lash).<br><br>

	The complete rest of the disk-space is used by Nethack and its datafile.<br>
	Nethack was patched with the hpmon and menucolor patches (I cannot play without them ;D) (you can find these patches via <a href="http://www.google.com">Google</a>).<br><br>

	The applications have been compiled with <a href="http://gcc.gnu.org">GCC</a> 3.4.4pre.<br>
	Busybox and Nethack are linked statically against uClibc to hold the binary size small.<br>
	The Linux kernel is optimized for i686 platforms to hold down the size (I needed nearly every byte...).<br>
	UPX (1.92) was used to compress the Nethack binary. Though UPX is also supporting bzImage compression, I was not able to boot with a compressed kernel and init did not want to start with a compressed Busybox.<br>
	If you have suggestions for saving more space, please report them.<br><br>
	
	To correctly copy the image onto a floppy, use the following command:<br>
	<i>dd if=filename.img of=/dev/fd0</i><br>
	(That works only at Unix systems. Use <a href="http://uranus.it.swin.edu.au/~jn/linux/rawwrite.htm">rawrite</a> for use with Windows)<br><br><br>

	<b>Legal issues</b><br>
	Nethack is licensed under the terms of the <a href="http://www.nethack.org/common/license.html">Nethack General Public License</a>.<br>
	The Linux kernel and busybox are licensed under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>.<br>
	The rest of this project (bootscript and configuration files) is public domain and can be used for whatever you want ;)<br><br><br>

	<b>Projects that made this project possible</b>
	<ul>
		<li><a href="http://www.nethack.org">Nethack</a></li>
		<li><a href="http://www.kernel.org">Linux</a></li>
		<li><a href="http://www.busybox.net">Busybox</a></li>
		<li><a href="http://www.uclibc.org">uClibc</a></li>
		<li><a href="http://upx.sourceforge.net">UPX</a></li>
		<li><a href="http://www.tldp.org/HOWTO/Bootdisk-HOWTO/">Bootdisk howto</a></li>
	</ul><br>

	<hr><a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=125889&amp;type=2" width="125" height="37" border="0" alt="SourceForge.net Logo" /></a>
</body>
</html>