📄 linux--a free unix-386 kernel.htm
字号:
</LI><LI><TT>/usr/local/bin:</TT><UL><LI><TT>gcc</TT></LI><LI>links to files in <TT>/usr/local/lib</TT> of your choice. I link<TT>ld</TT>, <TT>as</TT>, <TT>nm</TT>, <TT>strip</TT> and <TT>size</TT> to theircounterparts in <TT>/usr/local/lib/gcc-XXX</TT>.</LI></UL></LI><LI>Edit the <TT>linux/include/linux/config.h</TT> file for your system. This file contains the system-specific information: memory space, disktypes, root partition number (again the numbering is the same as inMinix), keyboard type (currently just US and Finnish) etc. </LI><LI>Compile the L<SMALL>INUX</SMALL> sources. A simple <TT>make</TT> should do thetrick, after you have edited the <TT>makefile</TT>s to suit your system(ie, removed the <TT>-mstring-insns</TT> flag and changed the paths to suityou.) Users of <TT>gcc</TT> versions earlier than 1.40 will probably haveto add <TT>gnulib</TT> to the `<TT>LIBS =</TT>'-line in the <TT>makefile</TT>. </LI><LI>Copy the resultant <TT>Image</TT>-file to a floppy (ie, <TT>cp Image/dev/PS0</TT> or similar.)</LI><LI>Reboot with the new floppy. The startup screen should tell youthat the system is booting (<TT>Loading system ...</TT>), then some vitalroot file system information (<TT>xxx/XXX inodes/blocks free</TT>),followed by a <TT>Ok.</TT> and the bash prompt (initially <TT>bash#</TT> ifyou have no <TT>.bashrc</TT> file).</LI></UL><P>Hopefully you now have a functioning unix, and you are logged in as<TT>root</TT>. L<SMALL>INUX</SMALL> currently has no <TT>'init'</TT> process, and as soonas you log out, the system will <TT>sync</TT> and just wait. Use thethree-finger-salute to reboot your machine.<P></LI></OL><P><H1><A NAME="SECTION00030000000000000000">Things missing/incomplete in L<SMALL>INUX</SMALL></A></H1><P>While L<SMALL>INUX</SMALL> is meant to be a fully selfsufficient kernel, this iscurrently not the case. As already mentioned, you need Minix to setthings up, and to check the file system once it's running. There are anumber of other deficiencies:<UL><LI>Incomplete hardware-support. Some of the standard features of anAT are not currently supported. Most notably are floppy disk drives,making using L<SMALL>INUX</SMALL> for real work (backing up etc) currently notpossible. Also some of the features of the serial lines aren't yetimplemented (hard-wired to 2400bps, no hang-up notification etc).</LI><LI>Incomplete standard C library. The <TT>libc.a</TT> found in the gccdistribution package is not complete, and I'm very much interested infreely distributable library functions.</LI><LI>Some of the system calls are not fully implemented. This concernsmostly ``seldom-used'' features like debugging (yeah, who needs itanyway, don't all your programs work the first time <TT>:-)</TT> and someother features. </LI><LI>As mentioned, no <TT>login</TT> and <TT>init</TT> processes. CurrentlyL<SMALL>INUX</SMALL> boots up in single-user mode, with the root as console-user.This is enough for some porting work, but not really practical.</LI><LI>387-support is not yet implemented, although some skeletonroutines are present. The gcc-binary found on <TT>`nic.funet.fi'</TT> will correctly usesoft-float (ie emulation function calls) for the four basic mathoperations. 387-support will materialize as soon as a 387 finds its wayinto my computer. Hopefully in a month or two.</LI><LI>None of the important system-administration commands has yet beenwritten for L<SMALL>INUX</SMALL>. These include things like <TT>mkfs</TT>, <TT>format</TT>,<TT>fsck</TT>, <TT>mknod</TT> etc. Some of these need kernel features not yetimplemented (<TT>format</TT>, <TT>mknod</TT>), some just need to be written.As with the library, I'd welcome any freely distributable files.</LI></UL><P>As you can see, L<SMALL>INUX</SMALL> is as yet not a complete system. Your help isappreciated to make it better. I'm not interested in Minix-commandsrewritten for L<SMALL>INUX</SMALL>, unless you have written them yourself fromscratch. You are of course free (and encouraged) to use everything youhave in your Minix-distribution for your own L<SMALL>INUX</SMALL>-system, but due tothe Minix copyrights, they cannot be distributed to a wider audience.<P>Some of the probelms mentioned here will be fixed by me (ie seriallines/387/floppy support) as soon as possible, but I'm hoping to gethelp with the libraries etc. Bug-reports/patches and wish-lists will beappreciated, and if you actually have the patch to the problem, I'll tryto implement it right away. Small changes will be sent out as patches tothe mailing list and be set up on <TT>`nic.funet.fi'</TT>, but after heavy rewrites orbigger patches, the whole system will be updated at <TT>`nic.funet.fi'</TT>.<P><H1><A NAME="SECTION00040000000000000000">Porting software for L<SMALL>INUX</SMALL></A></H1><P>L<SMALL>INUX</SMALL> was designed to make porting relatively easy. Thus the full<TT>termios</TT>-implementation, and the somewhat <TT>POSIX</TT> library. The(admittedly relativly few) programs I've ported posed no problems.<P>Even though L<SMALL>INUX</SMALL> resembles Minix a great deal, Minix programs are notgenerally easier to port than programs designed for some other unix.Thus I wouldn't recommend starting from a Minix-version of a particularprogram, but instead trying to port the ``virgin'' program from scratch.Being closer to SYSV than BSD means that most programs port easily whengiven a <TT>-DUSG</TT> or <TT>-DSYSV</TT> flag.<P>One of the more difficult problem in porting can be missing libraryfunctions. These must be written by you, or copied from some othersource (Minix being one possibility for those that have it).Alternatively, some programs (notably GNU) have various flags making itpossible to define which functions aren't available (the GNU fileutilswill compile quite nicely, once a sufficient number of<TT>-DXXX_MISSING</TT> flags are added to the <TT>Makefile</TT>.)<P><H2><A NAME="SECTION00041000000000000000">Programs already ported</A></H2><P>These programs have already been ported to L<SMALL>INUX</SMALL>:<UL><LI>GNU cc (gcc, cc1, cpp)</LI><LI>GNU assembler (as386)</LI><LI>GNU binutils (ld, ar, nm, size, strip, ranlib)</LI><LI>GNU compress (16-bit)</LI><LI>GNU tar</LI><LI>GNU make</LI><LI>GNU bash (Bourne Again SHell)</LI><LI>GNU sed</LI><LI>GNU bison (yacc-lookalike)</LI><LI>GNU awk</LI><LI>GNU fileutils (ls, cp, rm, mkdir, rmdir, tail etc)</LI><LI>less</LI><LI>uemacs</LI></UL><P>All of the above sources can be found on <TT>`nic.funet.fi'</TT> (mostly in<TT>`/pub/gnu'</TT>), and most of the L<SMALL>INUX</SMALL>-binaries can be found in thedirectory <TT>'/pub/OS/Linux'</TT>. All of these programs compiled without changes, eventhough gcc (cc1) has some enhancements of my own. Mail me fordiffs/sources, but try first to compile them yourself.<P>Additionally I have reports that GNU diff compiles cleanly and works.<P><H1><A NAME="SECTION00050000000000000000">Technical help</A></H1><P>L<SMALL>INUX</SMALL> currently has a mailing-list, which you can subscribe to bymailing to the address: <TT><B>Linux-activists-request@niksula.hut.fi</B></TT>and asking to be included into the list. You can then ask questions bymailing them to <TT><B>Linux-activists@niksula.hut.fi</B></TT>, which willduplicate your question/answer/whatever and send them to all persons onthe list. <P>Note the difference between <TT>Linux-activists</TT> and<TT>Linux-activists-request</TT> -- the first sends mail to all persons onthe list, the second is used only to subscribe and unsubscribe from thelist.<P>Naturally, you can also mail me directly at <TT><B>torvalds@kruuna.helsinki.fi</B></TT>. I'll try to answer all questions within aday or two.<P>Although <TT>`nic.funet.fi'</TT> will probably be kept reasonably up-to-date, there are afew problems with it (ie, I cannot personally get to the files, but haveto go through a couple of persons). Thus people on the mailing-list willget patches/binaries faster if they ask for them.<P><H1><A NAME="SECTION00060000000000000000">Thanks</A></H1><P>I'd like to thank the academy ...<P>Seriously, this system never would have seen the light of day or wouldhave been much worse without the help of some others. Bruce Evanshelped me find the places needed to be changed in order for <TT>gcc</TT> tocorrectly handle floating point, and came with a lot of usefulideas/suggestions (and his Minix-386 was used to build the system). Also, Earl Chew's <TT>estdio</TT> package was used for the standardIO-library. More freely distributable packages like this!<P>Alain W Black and Richard Tobin made the gcc for Minix, without which Icouldn't have compiled the thing. GNU made most of the programs I useunder L<SMALL>INUX</SMALL>. Alfred Leung sent the US keyboard patches. <P>PS. ``Thanks'' to <TT>wirzeniu@kruuna.helsinki.fi</TT> for his``constructive'' criticism and ``witty'' comments. He was also my first<IMG WIDTH="14" HEIGHT="14" ALIGN="BOTTOM" BORDER="0" SRC="img1.png" ALT="$\alpha$">-tester, and should be given a medal for courage.<P><H1><A NAME="SECTION00070000000000000000">About this document ...</A></H1> <STRONG>L<SMALL>INUX</SMALL>--a free unix-386 kernel</STRONG><P>This document was generated using the<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002 (1.62)<P>Copyright © 1993, 1994, 1995, 1996,<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>, Computer Based Learning Unit, University of Leeds.<BR>Copyright © 1997, 1998, 1999,<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>, Mathematics Department, Macquarie University, Sydney.<P>The command line arguments were: <BR> <STRONG>latex2html</STRONG> <TT>-local_icons -address gohigh@sh163.net -split 1 Linux.tex</TT><P>The translation was initiated by root on 2004-05-08<HR><!--Navigation Panel--><IMG WIDTH="81" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next_inactive" SRC="nx_grp_g.png"> <IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up_g.png"> <IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> <BR><!--End of Navigation Panel--><ADDRESS>gohigh@sh163.net</ADDRESS></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -