[0001] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 13:08 (4 lines) Subject: Reason for this meeting Linux_activists is a discuss archive of the mailing list about Linux, a free unix-like kernel for 386-AT computers, coming with full source code. It is meant for hackers/computer science students to use, learn and enjoy. --[0001]-- [0002] daemon@ATHENA.MIT.EDU (Robert Lund) Linux_Activists 11/07/91 14:19 (36 lines) Subject: No subject found in mail header Date: Thu, 7 Nov 91 14:19:23 -0500 To: linux-activists-mtg@tsx-11.MIT.EDU From: Robert Lund Reply-To: tytso@Athena.MIT.EDU Hello, I have installed Linux 0.10 using the minix demo to build the root file system on a hd partition. I couldn't figure out how to use the mtools commands to get gccbin, utils, etc. from DOS to linux but I did discover an alternate approach that might prove useful to others. I happen to have a 1.44 drive as my A drive so ubder linux I did mknod /dev/PS0 B 2 28 Next, I formated a 1.44 floppy under DOS. Then, I uncompressed the tar files that I wanted to get from DOS to linux (I actually uncompressed under UNIX but I assume that a 16 bit uncompress utility under DOS would work). Then, I used the rawrite command available with the minix demo to dump a tar file, e.g. gccbin.tar, to the 1.44 floppy in the A drive (back under DOS again) Next, I booted Linux and did tar -xvf /dev/PS0 and lo and behold, it worked; tar read the raw device and successfully extracted the files. Hope this helps someone. Bob Lund --[0002]-- [0003] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:20 (90 lines) Subject: Trying to answer ... Date: Wed, 6 Nov 1991 13:58:52 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Well, it seems people are starting to get some things working, and my mailbox has certainly been busy. > Does linux work on a SX? Yes. I've personally tried it, and there were no problems. It seems linux works on all members of the [3|4]86-family. Knock wood. > How do the mtools programs work? Urg. I fu**ed up. As has been pointed out, it is much easier to use tar on a disk-image. Stupid of me not to think of that, even though that's what tar is for. Even so, I should at least have done some kind of readme for the mtools files. If you want to read files from the DOS-partition, the mtools programs should work. They need some setting up: you need to tell them what devices A,B and C are. This is done by making the appropriate links to /dev/dosX (X=A,B,C). A and B are assumed to be floppies or small harddisk partitions, ie a 12-bit FAT. C is assumed to have a 16-bit fat. To read a 1.44M dos-floppy in A: mknod /dev/dosA b 2 28 # tell linux that A is 1.44Mb floppy mdir A: etc. To read your DOS-partition (16-bit FAT): mknod /dev/dosC b 3 1 # 1 partition on 1 drive: don't use 0 mdir C: # as that's the whole disk, not one prt 12-bit harddisk partition: mknod /dev/dosB b 3 1 mdir B: Note that if you have a small partition, you probably have a 12-bit fat on your harddisk as well, and you should use A or B for it, not C. If you don't know what type of FAT you have, try with both B or C. Note that A/B/C has no relation to the MS-DOS devices, even though that's the normal way of setting it up. > Somebody had trouble, didn't even get a "partition table ok" with his > IDE drive. There /should/ be no trouble with IDE drives, so hopefully that isn't the problem. One possibility is that everything works, but the video-card isn't a colour-VGA. If you are using a mono-mode, the screen map is elsewhere (I think, I'm not really used to the IBM video modes), and linux happily writes to the wrong location. Thus the only thing you see is "Loading system ...", which is written with BIOS-routines. If this is indeed the problem, you should be able to test it by booting up, putting in the root diskette, and pressing ENTER. Hopefully the drive will run for a while, and then stop. Try doing something blindly (write ls /mtools), and see if the floppy reacts. If the only trouble is the video card, this will be corrected in the next version. If it isn't the video, things are worse. Could the person please mail me with more info (BIOS, type of computer etc)? > nic.funet.fi is unavailable. What can I do? As you probably have noticed, there is now another site available that carries it. See my .plan if you missed the message. nic will give you the files eventually, but there has indeed been something wrong with it. > problems with gcc-1.37.1. Gives divide error (with the gnulib > routine). Could the 16-bit object files be posted? Arghhh. I haven't tested the gnulib routines (as gcc-1.40 never wants the divide/mutliply routines), so they might be buggy. Silly me. I'll certainly post the 16-bit object files (they are only a couple of hundred bytes anyway), and anybody should be able to get linux recompiled within linux (after some makefile-editing, so that make doesn't try to recompile the bootblock etc). > ESDI drives, shoelace, DLD? These I know nothing about. ESDI drives should work ok, but ... Shoelace? Anybody? I don't know how it works, though I use it for minix. About DLD's: if somebody comes up with a clever way of implementing it all cleanly, and can explain it to me, I could certainly look into it. Even better would be if somebody else wrote it from scratch :-). Linus (torvalds@kruuna.helsinki.fi) --[0003]-- [0004] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:22 (83 lines) Subject: 16-bit binaries Date: Wed, 6 Nov 1991 17:58:43 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Ok, here's the 16-bit binaries of the bootsector and setup. They are 544 and 340 bytes respectively, but taring made them somewhat bigger (8192). I decided to send them as a tar archive, as that increases the ways you can import them to linux. In order to use them, you have to edit the Linux makefile a bit: remove (or comment) the lines that have the 16 bit dependencies on them (I'd also suggest you change 'clean' so that it won't remove these binaries), and install these binaries in the boot-directory. The bootblock is compiled to load 196kB of the system (currently only 110kB is used), so there is some room to grow before a new bootblock is needed. This of course means that the load-time is slightly longer than necessary, but it's still quite fast. Also, as somebody commented, 'cp Image /dev/PS0' won't work with older versions of GNU cp. Frankly I don't know if the version of cp that linux uses is corrected, but a 'cat Image > /dev/PS0' or 'dd bs=8192 if=Image of=/dev/PS0' should work (change /dev/PS0 to match your bootfloppy, of course). Additionally, I'd like to know if the floppy-driver works for 2 (or more) drives? Nobody has commented on that yet. Do a sync before you try it though (just in case...). Linus (torvalds@kruuna.helsinki.fi) ------- uuencoded compressed tar-file starts here ---------------------- begin 644 bin16.tar.Z M'YV08MZ\H3.GS!@Z !(J7,BPH<.'$"-*G$@1 (B+-VK4 &%1Q@T:,6)P!.%Q M!HV-%B^J!!$#!@T8%VNTM %#AHR6-%32K&FQHL^?0(,*'4JTJ-&C2),J70C('F!#:*X2PZ&8 0(>,8DH',@!K 4V 2#3@+HU"!?, / 1]D.!F!6AP2X7/7> M)@#40< _!G0"P"@4^C=*?/7=M\P.*?] ,4444BQB@8:+.!!? M$(A4(R.%B%CC6"#BD$6+8!/(48 666R!Q3")'388DDJFL\P_4N@BSP"P .". M%L,DU( "3+P1!AEIN'$&"'/D,0<=9;0!@@MP?OEE4W36:>>="1DP0!6JX.GG MGX &*NB@A!9JZ*&"%D1''7 @ZBAV&&DTDD<@B=31#2:AM-)*-< $P@RN52# M#"_-<(-*-KJJ[#&*FNL3T4UE457^92K0IIQU=EGH25B04*T(-), M!:-4E1A7Q=A 0&9?A?4+( #D @$ \Y"R+#;-8@#M9K] 4NVUV7I5@2R!#&8D M(/P,0 <$O0(3[KB/8:N*/HGQ$]:)ND%"AP-A@@?$WYH"!3A081V .".L D+(YH*2<,BP@F!." MRQBC8$XH-,-"@,PY"W!SS@'PK#( /P\-RS]"KQQ*A T#,]UD V=,CEDH") M'?9TZ= _IB6D"3!W=0V )& [A$ ^ B2P4)%')KEDDPD]Z;:45%J)I99<>@FF MF&2:B:::;+H)IPMR*C#KX8@GKOCBC#?N^..01R[YY)17;OGE=H919AD 4 " M 0DM0 L \A#!@!M(0!'&&R\P488:"!D1D&AUT8 $Z:E7N89K,]1QQL C '' MZ0 LP T !!"3.V1KA"$'[&N\X89"AA?/#EE\C-$Y\L^K$08 :2"4$ ,*F6/& M]@6X44<;;:0! !G? \" YP& ,P+JD-$1_1K1OPZ #&, GOQ00#H5L"IUKX-# MF5[7!@!(SP[CXP%97&&@U-&!#FEH@_3*,#TXP(%S\F,"\B"@@^T9@ UIJ /_ M@"<^!H A(2AX ?X0H(;VK=!_' ! \8G/GTH889S<%X8W(!!-B0D 1Z3'R=( M1XTAS/!U=I!>"N>0$ (E\[SN#'0OB0=;%CP&H\!)'!,"+[Z5.#H3TY/@2TP N M$D 2VTF=&M!0!CFTH0YN "$!C."E0!*-!28,(!M0.+TC>(D*9 &"#;9W #H0 MDPP<5$@#T$ 64D!AAG; HP?KX#\T:-!+?$B(($KH2#=\< X;3,@Q0N$E1HSP M!.A[71WD +QCB,)+2Q2 )]; S#F\[I'1DV:6!D (*!CR7NC6]00[0'*8#ZZ ]'6(#>8C( A AR08XI%.'U-3A]0!@"1_8,0RL MH\-)"6!0 %@Q(?KH C/;0(='JK**UPH %:Q@0C74 0VN^QXR;4H"TMD">*EK M ^O*$#OI >!: Z@B#LC"#*A"Y@U2)68T=5@V!R !>::8GN<,@(9')A4 S*AB M$E7!!6:&H0[9S.7TJFA$ AA@"3,8X 50PG >CP &:J 0X)C1TE M;2HN +BA"8+,PQ?EH$>;BM"FI$@(-XQHP3G@T0X!;$])8OW @#G:\J!OH^08JVA01W#VL'SXPPS;D$8.Y;"@('T! M4N+AH,UCE ))&[6F27 _+BO[M(0O3"6B9G<%>'M?H ^-. 1A0G93M->* !H M+&"&:E"#:G- ;+<;10 /' 5SQ7 >=D$WO.X2RT"+!%];7A_@6DT0=:U?C"GP!/B N I M!U:,ZBV1JE< &-&\#P"'7[2AA]\ZCW^=?< +FP8/TB'!H-=]0YDVN->K*H01 MA7#L&R3[S81 @'ZX.,1O-8C'(>JR#GYN*BD)8<*V1K*M (#@5;Z_[L.KGSY+ATJE;0QW2T.%HID$,"H' "^LGB(.V-0P]]1YWCW=5\5E"7*EK MJQR,VF7D[<'/Z 6 /MR9ZS(4FG_?X_15E^CB1P#Q#=!$)2[]?-^K9HD L(B/ M!7^7U[%"@+57!1L!()#GM:Z.GOZ3X%6I,4<1;EL.&-2<6@$@80B@XX^M/J6Q MPVAH -"RHQ!09(6=O58W$)B;WSL? ") /@(@@MB04<.>PQ#6[]4R#PF) $=P M3-&(UP&F;)#I7@E@B(QS,0#J\,03J8K!YADQJ!D_JU^],,,WK"&(KXN=G^VR M\+H" !F-A$PV:[F^1YHPXXTR([529X21_4,]'0#4HVX<$Q*("$!<(6@93D'27)VKP/(,^;VSO>^ G^_WO@ ^\X =/^,(;_O"(3[SB%\_XQCO^\9"/O.0G3_G*6_[RF%<< end --[0004]-- [0005] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:22 (127 lines) Subject: Devices Date: Wed, 6 Nov 1991 19:15:45 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Before the actual article: a quick question. Are any of you using DOS version 5.0 ? If I've understood correctly, 5.0 changes the disk-layout rather heavily. I doubt mtools can handle the new DOS partitions, and possibly even the partition table has changed. Again, I'd be interested to know if everything works fine with DOS 5.0. Mika Matti Jalava: "device numbers" (Nov 6, 18:08): > Hi! > > Would it be possible to post some kind of a table of valid device > numbers? [ for people not having minix ] Ok. Here is a short table: Memory devices: Major = 1 (characted devices) minor 0 /dev/ram - not implemented (never will be, I think: minix special) 1 /dev/mem - not implemented (easy, seldom used) 2 /dev/kmem - not implemented (easy, but I haven't done it) 3 /dev/null 4 /dev/port (implemented, but untested - don't play with it) example: "mknod /dev/null c 1 3" Floppy disks: Major = 2 (block devices) minor = drive + 4*type, drive = 0,1,2,3 for A,B,C or D-diskette type 1: 360kB floppy in 360kB drive (5.25") 2: 1.2M floppy in 1.2M drive (5.25") 3: 360kB floppy in 720kB/1.44Mb drive (3.5") 4: 720kB floppy in 720kB/1.44Mb drive (3.5") 5: 360kB floppy in 1.2M drive (5.25") 6: 720kB floppy in 1.2M drive (5.25") 7: 1.44M floppy in 1.44M drive (3.5") Thus minor nr for a 1.44Mb floppy in B is: 1 + 4*7 = 29, and to read an old 360kB floppy in a 1.2M A-drive you need to use minor= 0 + 4*5 = 20. Example: "mknod /dev/PS0 b 2 28" (b for block: 2 for floppy, 28 for 1.44 in A) Hard disks: Major = 3 (block devices) minor 0 /dev/hd0 - The whole hd0, including partition table sectors etc. 1 /dev/hd1 - first partition on hd0 ... 4 /dev/hd4 - fourth partition on hd0 5 /dev/hd5 - The whole hd1, again including partition table info 6 /dev/hd6 - first partition on hd1 ... 9 /dev/hd9 - fourth partition on hd1 NOTE! Be /very/ careful with /dev/hd0 and /dev/hd5 - you seldom need them, and if you write to them you can destroy the partition tables: something you probably don't want. The only things that use /dev/hd0 are things like "fdisk" etc. NOTE 2!! The names for hd's are the same as under minix, but I think minix orders the partitions in some way (so that the partition numbers will be in the same order as the partitions are physically on the disk). Linux doesn't order anything: it has the partitions in the same order as in the partition table (ie /dev/hd1 might be physically after /dev/hd2). NOTE 3!! Somebody wrote he trashed his DOS-partition with mtools. Are you sure you didn't do a "mkfs /dev/hdX" with the demo-minix, where the X was a DOS-partition and not an empty one? One way to be sure to trash a DOS-partition is to overwrite it with a minix filesystem. Not that I'm sure that mtools works (/I/ didn't write it :-), just wondering... Tty's: Major = 4 (character devices) minor 0 /dev/tty0 - console 1 /dev/tty1 - serial 1 2 /dev/tty2 - serial 2 Example: "mknod /dev/tty2 c 4 2" Personal tty: Major = 5 (character device) minor: 0 /dev/tty - "linked" to the tty that your process has got: normally /dev/tty0 in linux (until someone makes a init/login). Example: "mknod /dev/tty c 5 0" > I think I'll have to try a couple of old MFM disks, as my ESDI does > not seem to like Linux. The test that someone suggested, > cat /dev/null probably did not do what it should have done, > it just hung the machine. Don't be so sure: using direct reads/writes on a device is rather slow, and on a bigger partition (>10M) this can take some time even for a harddisk. I've never tried to optimize direct devices for performance. If you can get out from the "cat" with ^C, it probably works. If ^C doesn't kill it, ESDI drives probably won't work. Another way to test the drive would be to write "cat /dev/hd1". This prints anything it reads onto the screen: if nothing appears, linux is unable to read the drive. Use ^C to break when you have got enough. Again, if ^C won't work, the drive is unsupported. (note: pressing ^C repeadetly may kill the shell, as it will catch only the first one). Note to everybody: currently I have these debug-statements in the kernel, so that when you try to read past the end of a partition or diskette you will get "xxx I/O error". This is normal (but reading beyond the end of the disk may not be :-). > BTW, Is it possible to use a secondary HD controller? If not, will it > be some day? Not currently, and as I haven't got a second controller... It should be relatively easy to add a driver for it: copy the code from hd.c to hd2.c, change the MAJOR_NR to 6 (or something), and change all the IO port addresses. That /might/ do it (VERY simplified explanation). I won't be able to do it - no way to debug the thing. Linus --[0005]-- [0006] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:27 (20 lines) Subject: Re: nic.funet.fi unreachable From: tytso@Athena.MIT.EDU (Theodore Ts'o) To: linux-activists@joker.cs.hut.fi A quick scan using Archie shows that none of the FTP sites for Linux that it knows about are on the U.S. side of the Atlantic. In the hopes of reducing inter-atlantic traffic and reducing the load on nic.funet.fi, I've made Linux-0.10 available for anonymous FTP on TSX-11.MIT.EDU (18.172.1.2). I will make an attempt to keeps things reasonably current. I've just recently heard about Linux from the Hurd mailing list, and from looking at the source code it looks very, very exciting. I haven't managed to install it on my hard disk yet (it looks like I'll need to blow away OS/2 in order to reclaim one of the four primary partitions --- shucks), but just from looking at the source code there are a bunch of things which look like interesting projects --- like supporting DOS extended partitions and multiple threads per task. Now, all I need to do is find some time to do some playing.... :-) - Ted --[0006]-- [0007] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:28 (40 lines) Subject: Linux, minix, and a drive that is a wee bit 'Scuzzy' Date: Wed, 6 Nov 91 20:30:11 PST From: rafetmad@cheshire.oxy.edu (David R. Giller) To: Linux-activists@joker.cs.hut.fi Hi y'all. I have recently joined this group, and am quite excited that someone is involved in this project. Thank you all. I have a few problems with joining the fray, myself. I have a 486 PC with an SCSI drive. A no-go with Linux, as of yet. Can I A: play with Linux from the floppy, at first B: get an additional AT or IDE drive, and be assured (relatively) that Linux won't screw with my primary HD? I keep alot of important information, and I don't want to be in constant fear. Failing all of this, is there anyone with enough experience to write a driver for the Western Digital 1003 standard, if I provide the standard? I can't provide a drive, and I don't have the time or experience to do this myself, but if someone can get the framework down, I can play with it until something works. Note that I don't have a working copy of Linux. I can't even start the installation, because I don't have minix, and have a 3.5" FDD. What is the current copyright status of Minix? E.G., is it possible for someone to make a demo copy for me that will image to a 1.44Mb floppy? I have the 1.2Mb version, but can't use it. Thank you, -David Giller PS: is there a manifesto for this mailing list? I don't want to step on anyone's toes. --------------------------------------------------------------------------- David Giller -- rafetmad@oxy.edu | "Some of us wake up, others roll over." Box 134, Occidental College | "Shrouds, they have no pockets." Los Angeles, CA 90041 | -John Lydon --------------------------------------------------------------------------- --[0007]-- [0008] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:28 (9 lines) Subject: init/login and /etc/ttys Date: Wed, 6 Nov 91 22:19:08 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi If no one else has volunteered yet, I will take a stab at modifying init to read /etc/ttys and fork a login for each. This means of course writing login.c as well. If someone else has started this already, please stop me now! --[0008]-- [0009] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:28 (26 lines) Subject: Re: Linux, Minix etc... Date: Thu, 7 Nov 91 9:48:12 EET From: Mika Matti Jalava To: linux-activists@joker.cs.hut.fi Hi there again David Giller wrote: > PC with an SCSI drive. A no-go with Linux, as of yet. Can I > A: play with Linux from the floppy, at first Yes, I do that all the time (I have an ESDI drive that does not seem to like Linux). You should be able to use another HD with SCSI. > Note that I don't have a working copy of Linux. I can't even start the > installation, because I don't have minix, and have a 3.5" FDD. What is the > current copyright status of Minix? E.G., is it possible for someone to make > a demo copy for me that will image to a 1.44Mb floppy? I have the 1.2Mb > version, but can't use it. You can ftp the Minix demo diskette from various places. For instance plains.nodak.edu in directory pub/Minix/????/demo (I haven't tried, this info is from a posting by Linus). You get a rawrite program with the demo that you can use to write the images on a diskette. 3.5" work well. Mika --[0009]-- [0010] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:29 (49 lines) Subject: Installing Linux Date: Thu, 7 Nov 91 10:08:32 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! Last night I started installing Linux on my Computer...well, tried to install it:-( First, for all of you out there trying to install Linux from DOS: The bootimage works (Use debug Bootimage, then in debug do "w cs:100 0 0 200" This write will write from cs:100 200h sectors (512 bytes) of mem to drive 0, sector 0. Adjust the 200, if the bootimage gets bigger, but at the moment you really need less than 100h sectors. Its just to be on the safe side.. ) Forget about installing the rootfs directly from DOS with debug. It's too big, so DOS can't load it. Something like rawwrite will do, I think. I did it from Minix, smashing my Minix-bootdisk on the way. (Again, one of these 'tough guys need no write protect'-story. But who needs a Minix-Bootdisk with Linux, I thought. The answer is ME! Linux just doesn't work on my machine. The same problem somebody else on this list got. It just booted up, showed Loading System, cleared the screen and then died. Well, I think I found the reason for this, but I am not sure. Correct me if I am wrong. Somewhere in the code, I found that the kernel reserves the first 640K of mem. About 640K - 1M, I found nothing. Then, at 1 M the Linux mem starts. And now main (linux/init/main) determines my machine has less than 4MB (it has 2MB) and just allocates 1MB. That sums up to say 0 bytes free, and I think that this has to crash somehow. But still it remains a mystery to me why I get no msg about the partition table because this is still in the kernel, and kernel couldn't run out of space. (Could he?) Now Linus, (and all others out there) what do you think about reserving only say 384K for the kernel and use the remaining 256K as a cache. This will at least leave 1 MB for running some processes in it. I know this isn't much (too few for gcc, I think) but it should be sufficient when I come up with my port of CvW's CC386. How I'll do this in 2 Megs? Simple, order another 2 at my local shop :-) BTW: Will the demodisk from plains do as a bootdisk for Minix? OK, cu l8er Robert --[0010]-- [0011] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:30 (43 lines) Subject: init/login and /etc/ttys Date: Thu, 7 Nov 1991 14:14:32 +0200 From: Ari Lemmke To: linux-activists@joker.cs.hut.fi >If no one else has volunteered yet, I will take a stab at modifying >init to read /etc/ttys and fork a login for each. This means of course >writing login.c as well. If someone else has started this already, >please stop me now! I have started init/getty/login stuff ;-) mainly based on bsd-reno stuff. arl BTW > (NO, NO MORE nic.funet.fi unreachable STUFF, I CANT > BEAR IT) *FLAME ON* I TOLD EARLIER THAT NIC.FUNET.FI IS HAVING REORGANIZATIONS .. WHY DO YOU STILL CRY ? ;-) *FLAME OFF* nic.funet.fi is _absolutely_ the best FTP site. Problems _are_ going to be corrected. nic FTP file areas: Filesystem kbytes used avail capacity Mounted on /dev/rs4c 1015790 693649 322141 68% /ftp/disk1 /dev/rs2c 1015790 743216 272574 73% /ftp/disk2 /dev/sd0c 1374491 817095 557396 59% /ftp/disk3 /dev/rs3c 1009846 872018 36843 96% /ftp/disk4 /dev/sd2c 1374491 1193968 180523 87% /ftp/disk5 /dev/sd4e 913596 676080 237516 74% /ftp/disk6 so you might guess how big/huge 'job' is reorganization. arl --[0011]-- [0012] tytso@ATHENA.MIT.EDU Linux_Activists 11/07/91 14:30 (19 lines) Subject: hard disks From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Thu, 7 Nov 91 8:33:57 CST Hello, I reckon the most important part of getting linux up is to use anything other than HD partitions hd0 & hd5. After I reread the stuff I had, I found that either one will destroy the partition table and linux will not boot with out a valid partition table and a fs on it. So after putting back the partition table with a 4 part partition and one defined for the disk, I used the minix demo disk to place a fs on hd1. After that things are working great. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0012]-- [0013] tytso@ATHENA.MIT.EDU Linux_Activists 11/08/91 15:43 (16 lines) Subject: Symbolic link Date: Fri, 8 Nov 91 17:44:52 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: linux-activists@joker.cs.hut.fi G'day, I am trying to port g++ to linux and have the problem of creating symbolic links. It seemed that `ln' only support `hard link'. Quite a number of packages (tar.Z files) require that in the Makefile. Can we modify ln or is it something to do with the file system? I have ported bison to linux, if anyone is interested. Is there a way out of this "symbolic link" problem. Thanks In Advance nicholas@cs.uwa.oz.au --[0013]-- [0014] tytso@ATHENA.MIT.EDU Linux_Activists 11/08/91 15:48 (87 lines) Subject: Looking for a FAQ Date: Fri, 8 Nov 1991 19:25:43 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Right ho, the subject says it all ... Linux could definitely do with a FAQ (Frequently Asked Questions for all you who haven't been on the net all your life :-). And as I'm sure anybody who has read my "help-files" would agree, I'm not the best possible person to write it. Thus a new project: getting a FAQ done with help from the linux-activists. I've talked (yes, you can try to talk with me if I'm logged in) with Robert Blum, and he's promised to help. Our idea was to get as many of the linux users/would be users to ask questions they think ought to be in the FAQ, and hopefully you could try to answer them too (and don't be shy just because you aren't certain you get it right - I'll go through the FAQ for techical soundness anyway, but your answers will make editing much easier). I'm especially interested in some tutorials/"true stories" from people who installed linux without the help of minix. Not only will they help make the FAQ, but I could try to make things easier for the next version. The FAQ should also contain some pointer to what people are doing, and what has been done (like init/login, the bison port, g++, etc). I guess the easiest way to organize this thing is to mail me with a subject containing "FAQ". I'll then compile it to one big thing and send it out to whoever wants to edit on it. If you want to be one of the people working on it, please mail and say so. I'll be happier the less I have to do with this thing :-), and even if you just think you could try to check for things you find incomprehensible, mail me and tell me you'd like to help with it. Alternatively, you can mail Robert Blum (whom I happily let take over the main responsibility for this thing if he wants it) at "blum@messua.informatik.rwth-aachen.de". If you can get your grubby little hands on the minix FAQ, you could try to make a skeleton one for linux, trying to answer the questions yourself first, and adding/removing questions of your own. Also, please resend the questions you've already asked (and hopefully got answered), as I really cannot sift through all my mail looking for questions, and rewriting the answers (my mailbox is about 400kB - most of it on linux). Editing the whole thing would probably be easier if you did some pre-editing yourself: trying to get the thing to look like part of a FAQ. After we have gotten something that looks like a real FAQ (possibly divided it into several parts: one general FAQ, one on installation etc), I (or Blum) will post it to the mailing-list and set it up for ftp. It will take some time: waiting for questions, then editing them, mailing the new versions to the persons interested in this project, revising them again after comments ... But hopefully we'll have a better FAQ after that. I hope enough people mail questions/interest, that I personally can get on to write the system programs. I'd suggest a simple form for all the questions/answers: Something that can easily be (semi-)automatically edited into something more appropriate: QUESTION: Xxx xx x x x xxx xxx xx xxx? ANSWER: try to have some kind of skeleton answer here. If you honestly haven't got a clue about the answer, please still ask the question - nobody will flame you (sure, sure). Linus (torvalds@kruuna.helsinki.fi) PS. It seems most people who had problems have got it working now. To summarize: It works on SX's and with only 2M of memory. It also "works" with a monochrome card, but you won't be able to see anything. Mtools doesn't understand DOS 5.0 (big partitions at least), but Linux seems to boot ok anyway. Anybody who simply cannot get it to boot out there? PPS. I wrote over my minix-partition yesterday (don't even ask why - some things are better forgotten :-), and although I got minix-386 up and running again, it's kind of limping now (no bash, no make). It seems I'll have to write fdisk/mkfs/fsck for linux just so that I wouldn't need minix any more. Something good came out of it. PPPS. As there still isn't a fsck-program for linux, be very careful about rebooting the computer without syncing. The buffer cache is /at least/ 500kB, and 1.5M buffer-cache is normal for machines with more memory, so if you don't sync, there could be A LOT of buffers that aren't written out to disk. --[0014]-- [0015] tytso@ATHENA.MIT.EDU Linux_Activists 11/08/91 15:50 (73 lines) Subject: FAQ and a true story Date: Fri, 8 Nov 91 13:17:14 CST From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Hi All, First of all since my real job is administrator of a multi-server Novell network, I need my DOS. So, I backed up my 70 meg drive and used fdisk to create a bootable 20 meg partition and a 50 meg partition. After booting back up with dos I reformatted the partition and placed a system there then restore 20 meg worth of stuff. I am using Microsoft DOS 5.0, by the way and would not give it up for anything. Next, I downloaded from plains the demo_dsk.ibm file along with rawrite and used that to create a bootable minix1.5 disk. Yes, rawrite can be used to write any kind of file to a disk, just follow the prompts. Using minix I wrote 50 meg fs to /dev/hd2 and then quit. I then used my linux boot, made the same way as the minix boot, and booted up the compter to the insert root system disk. Inserted said disk and let it mount and I was up and running. Mounted /dev/hd2 to user and copied over the stuff from the floppy root disk. Back to DOS, and changed the bootimag file as per instructions so that it would acces the hard disk upon bootup. Made a new boot disk and tried it. Now when the boot disk finished reading it mounted the hd partition as the root, mucho faster. I then used the mread program to copy over all the *.tar files from the dos partition on the hard disk. No problem! Untarred all the files to whatever directories they wanted to go to. Question 1 - after untarring the gccbin file into the gccbin directory, where do I place the individual files so that gcc world.c will compile. Question 2 - can all the files in the utibin tar file be copied to the usr/bin file. Comment 1 - most times when booting linux after running dos I get the following error when booting the boot image disk. --begin error-- invalid TSS: 0000 EIP: 0008:00006718 EFLAGS: 00007206 ESP: 000f:00006719 fs: 0010 base: 00000000, limit: 000A0000 Pid: 0, process nr: 0 cf b8 17 00 00 00 66 8e d8 66 Kernel panic: Trying to free up swapper memory in swapper task - not syncing ---end error--- A second three finger salute will always work. Comment 2 - rarely but it does happen, I will get the following error after putting the root disk in drive a (when using the floppy root) --begin error-- floppy I/O error dev 0208, block 1 Kernel panic: Unable to mount root --end error-- Well that's all got to say and would some please send back the answers to my two questions. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0015]-- [0016] tytso@ATHENA.MIT.EDU Linux_Activists 11/08/91 15:51 (13 lines) Subject: editor Date: Fri, 8 Nov 91 13:21:33 CST From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Hi all, I forgot to ask, what editor are some of you using under Linux? -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0016]-- [0017] tytso@ATHENA.MIT.EDU Linux_Activists 11/08/91 16:32 (80 lines) Subject: Re: Looking for a FAQ Date: Fri, 8 Nov 91 15:43:20 -0500 From: tytso@Athena.MIT.EDU (Theodore Ts'o) To: Linus Benedict Torvalds Cc: Linux-activists@joker.cs.hut.fi I, too, I have managed to bring up Linux without the need of Minux. I have a 40 MhZ AMD 386 with a 200 Meg clone. A couple of notes: N1) The Minix demo disk which you can get from plains.novak.edu only works for 5.25" disks --- this isn't documented anywhere, but I spent a lot of time trying to get it to boot on my 3.5" A drive. It would print the first message about "loading Minix system", but it would hang before printing the menu. I finally had to give up, recable my drives so that my 5" drive was my A drive to get Minix to come up. N2) The numbering convestion for partition in Minix and Linux are different!!! The way I dealt with it is to use a disk editor to write a message "This is the Linux parittion" in the first sector of the partition, and then use "head -3 /dev/hd[014]" to find the right partition number on both Minix and Linux. N3) I have MS-DOS 5.0, and the mtools worked just fine on my hard disk. All of my partitions are less than 32 MEG, so I'm still using the FAT-16 filesystem. It would be nice if Linux understood the DOS extended partitions, though. This would allow mtools could read my other DOS partitions. In addition, it would mean that I could use one of the DOS extended partitions as Linux partitions, so I could avoid chewing up the 4 primary partitions available on my 200 meg drive. [ Note: whoever decided that IBM hard disks only needed 4 partitions should be condemned to recabling machine room floors; CP/M on Heath/Zenith machines had 8 partitions available, and much more friendly tools to modify said table! ] N4) I have also experienced the panic which Patrick L. McGillan has described. I suspect DOS setting some cruft which isn't getting cleaned up. The panic happens happens right after the "Loading system" and before the system has a chance to print the "Partition tables ok" message. N5) I have managed to build the Linux kernel under Linux, using the 16 bit binaries which Linus provided. One little gotcha is that it is necessary to rename the binaries provided in gccbin.tar.Z to the names which the Makefile is expecting. Other than that, though, things went very smoothly. N6) It wasn't obvious that the "em" program in utilbin.tar.Z was actually MicroEmacs. I was really happy once I found it, though! Perhaps there should be a quick note mentioning this fact somewhere. At the moment, the programs which I seem to be missing the most are 1) more, 2) gdb, and 3) fsck. The first should be a lot easier to get working than the last. :-) And now, for some questions: Q1) On nic.funet.fi, I found sources to shoelace, which seems to be a way to boot Minix without needing a floppy boot disk. Is anyone working on something similar for Linux? The other interesting thing about shoelace is that it came with a file "shoefsck.c" which seems to contain the necessary code filesystem checking for Minix. However, there's no copyright notice on that file, and no email address for the author, either. Does anyone know what the status of that code is? I was considering trying to use that code to make a fsck for Minix. Q2) Similarily, there are sources on nic.funet.fi for a fsck program for Minix. It looks like it was derived from the Minix fsck, but since it is available for anonymous FTP with no notices saying "don't touch this", I wonder if would be consider fair play to base a fsck for Linux on the code, and either distribute the code or patches to the code with a note that you can get the rest of the program from nic.funet.fi. Q3) Linus, can you provide the configuration files for gcc and friends? It would be interesting to see what's necessary to actually compile one's own version of gcc/gas/etc. Thanks to everyone on the list! I don't think I would have managed to get Linux up and running with out a lot of helpful hints which were posted on the list --- and I've only been on the list for a couple of days! - Ted --[0017]-- [0018] tytso@ATHENA.MIT.EDU Linux_Activists 11/08/91 18:19 (21 lines) Subject: using em From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Fri, 8 Nov 91 15:41:43 CST Hi all, Short note on getting em running on my machine. I used my minix demo disk to mount my linux partition and then edited termcap with mined. The entry console:/ was changed to console|dumb:/ Hope this helps others to. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0018]-- [0019] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/08/91 22:59 (15 lines) Subject: shoelace and init Date: Fri, 8 Nov 91 19:45:08 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi I too noticed that shoelace has code to do fsck and mkfs functions. But fsck doesn't seem to work on my hard drive. I am also trying to get it to load Linux as this would allow passing environment variables such as video mode. Also nice to boot from multiple partitions. To Ari Lemmke: If you need it, and haven't already considered it, maybe fvk-crypt and getty as posted on plains can be used by init/ login/getty. Let me know if you wish to farm out anything like ttys or ttytype. --[0019]-- [0020] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/09/91 04:23 (22 lines) Subject: shoelace: fsck lockup Date: Sat, 9 Nov 91 01:19:04 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi It seems that the failure of shoelace to fsck on my hard drive is due to the number of inodes. An alloc of memory is done which wipes out the stack! Ouch. Bitten by the 16bit bug again (the very reason why most of us are using minix). Anyways, if we can find a way to reduce the memory requirements of shoelace, then fsck and mkfs should work within shoelace. I suspect that removal of this excess funtionallity is required. For example, commenting out the single call to fsck in shoelace resulted in the code size dropping from 49K to 30K!!!. Add stack and data to this and join the over 64K club for a voyage into lala land. Either way, the code to perform these functions already exists and can be extracted from shoelace for standalone products. If no one objects shortly I will begin this project. BTW: Earl Chew is the author of shoelace and must be given credit for its existance. Please speak up if you know if the code for fsck in nic.funet.fi is PD. It appears to be suspiciously like Earls shoelace code. --[0020]-- [0021] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 11/09/91 11:39 (30 lines) Subject: boot image From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Sat, 9 Nov 91 10:37:09 CST Hi all, Well, I was able to run make and build a new boot Image file. Unfortunately I am unable to copy it to a disk. Tried cp, dd and cat. The error message from cat looks like this. --error on-- bash# cat Image > /dev/at0 floppy I/O error dev 0208, block 0 cat: write error: EIO bash# --error off-- Any thoughts anyone? Incidentally, I have a 1.2 meg as drive A: and a 1.44 meg as drive B:. Even tried writing to drive b with the same apprx. error. I suppose I could be wrong, but it would seem to me that it would be in the best interest of the group if replies were also sent back to the group, instead of to the person with the problem. I.E. Others may have the same question, but are waiting for someone else to ask it. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0021]-- [0022] daemon@ATHENA.MIT.EDU (Christian J. Darken) Linux_Activists 11/09/91 14:34 (45 lines) Subject: Elvis spotted on Linux! Date: Sat, 9 Nov 91 14:32:50 EST From: "Christian J. Darken" To: linux-activists@joker.cs.hut.fi I compiled elvis version 1.4 (a vi clone) under Linux today without difficulties. I used the System V settings in the makefile, with the following changes: CC= gcc EXTRA= tinytcap$O LIBS= PR2= elvis v.1.4 is available from nic.funet.fi (/pub/gnu) aeneas.mit.edu (/pub/gnu) cs.uni-sb.de (/gnu) and other fine ftp sites near you. I have some questions for you fellow linux fans out there: First of all, by way of introduction, I am running Linux on a 386DX 25MHz clone on a small partition (20M) of an IDE disk. I don't have MINIX. 1) mv doesn't seem to move directories properly. It looks for something called mvdir and dies. I want to fix this right away, so I'm goin to start working on it unless one of you drops me a line and explains what stupid thing I've done. 2) When recompiling the kernel, the makefile looks for chmem and gar. Since the resulting image seems to work, I suppose these things aren't necessary. But what are they? I'm curious. 3) Lately when I boot linux (with the hard drive as the root device) I get the message "child 2 died with code 0000" (or something of the sort). What process was child 2? Should I be worried? Everything seems to work fine. Thanks folks. Chris darken@cs.yale.edu --[0022]-- [0023] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/09/91 19:31 (30 lines) Subject: Re: Elvis spotted on Linux! Date: Sun, 10 Nov 91 08:31:16 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: darken-christian@cs.yale.edu, linux-activists@joker.cs.hut.fi G'day, In answering question 3, >3) Lately when I boot linux (with the hard drive as the root >device) I get the message "child 2 died with code 0000" >(or something of the sort). What process was child 2? Should >I be worried? Everything seems to work fine. I had the same problem but was more serious, after the message "child 2 died with code 0000", NOTHING happens. After I have copied everything from the "floppy root file system" to the "hard disk root file system", I FORGOT to do a sync. Syncing is VERY important, Linux uses a 1.5 Meg buffer, there will be alot of information lost if a sync is not done. Listen to the disk activity when you do a sync! I even did a umount /dev/hd2 before I reset the machine. The bootimage with 0x302 written at location 508 will mount the /dev/hd2 again. Hope this is of help nicholas@cs.uwa.oz.au ---- Department of Computer Science, _--_|\ Nicholas YUE Tan Meng University of Western Australia, / \ "You THOUGHT!! BUT did you THINK!!" Mounts Bay Road,Crawley, W.A. 6009 X_.--._/ E-Mail: nicholas@cs.uwa.oz.au PHONE: +61 9 380-3816 v FAX: +61 9 382-1688 OR 380-2716 ---- --[0023]-- [0024] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/10/91 05:09 (148 lines) Subject: Linux fsck.c V0.10 Date: Sun, 10 Nov 1991 12:07:44 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Ok, This is version 0.10 of the fsck program for linux. Everyone is encouraged to use the (old) minix fsck program available on nic if they want to, but as it isn't clear what the status of it is, I would rather have one especially made for linux. This is it. It's a fast hack (2 days), but it seems to work relatively well. It doesn't repair a destroyed file-system, but it should tell you about problems. Repair is on the way... The reason I'm posting this is that I would like to get all the bugs ironed out before it starts writing to a disk. Now it just reads, so this version will not f**k anything up, even if it has bugs (and hopefully there aren't any). Although it isn't commented, it might give you an idea of what the file-system looks like. This is NOT a standalone version to be used at bootup. It is meant to be compiled and used under linux, on filesystems that aren't mounted. You can use it on root, assuming there is nothing writing to the disk (and this includes fsck itself: don't use "fsck -l rootdev > tmp" or similar). This isn't recommended though (you might have two boot-disks, one which boots from floppy just to use fsck on the normal boot-partition). Linus --------- snip snip ----------------------------------------- begin 644 fsck.c.Z M'YV0+U0H *$"A)DY8]:X& .B!8@P!M.P*0-B3IXY=,JT 3'FC9LY:3"6<3,F M#T-BH$""(% ,20$B1HX<,4# E#D'!!67=L*P(3/' MA5$T(2-.!-$FC$DQ%.64(1.2CIPT8NID)/.P*)R5-D'002DTYDR.;^#D^7H& M#9V:!%\H4! P+8P<+F+$< $41$/#528-%.' M))TT'N?83!L#1N#!A0^#J .'3)BQ+$"0>5.FZ!B4"6.>B>WFC>0R<,(\+IKG M,EX5"1),&4D'Q!NQ:GTSIBJX6UB.;<:FV]FL<)#E%%-& M'&(.F5-&_A6EWQW4N;%9C',XFVNCW+%XEAPMB,'&&PF%Z\9VYF[$:QLQI8$' M=FF0"(((22H&9G-C3,0@&2* <$=F;NBFX$T%4<&68J=25-55%$$D,,&=H@PE M1=Q!U-ZE-,OJ41FQA=4!SN'2<4!2X;=1QFT&=&?G0 M29EIBZVI,X.@0PN2@F"37@J,$%/&E%'$ T9$"&CZ4?38;:8/ 0V==D?%V MW&:31+?%:WNEV]YR^UTW#V:,81\;A/>--N!L6R=&XW,?_N$+&+U&>.&/JVV= M3'B\<-#F(RCF&)\@2/'$$U1\D8033_2T5^G\Q411%5! 4804*("D!\]N>-M[ M&K^O\&T+,:20P@O!EVVZ[2"\_@0117PQ11):%)&3[V6\84;O7DG='!E?Q#1F M&# ##F8N6%AC24'@((@Y08J8@6$5I_68'L @-F'P%;"@Y,78K*M=92@C"%ZE MQCG,2XT?V],7*I9&&&#Q-46L(E>TLBV7Y$&-6CE#'=B0&36^+"$H4^-M,I/( M+ZXQ)FN8@QKI\ ;,L,&+0NP@])H0!"Q\@7I0H (20% #& PQBWFTCX&6^ 7% MP$%#/;3C*?'(D$6R9(=?>-46..E)4(JR"UMP0A":4#TF%,$)*XA!%S(Y12,6 MQ'R*^4)8S&"&E8"@ATZ$HA -"+TD],9B* @G1B:S+=F4[YL440%/H%D&:=:! MFBM) ?*R# P\*3#HOUPP!QVR,U\$ MI8@6GN"$_>4$!2)- TF9=-(SI/2@I/5]I2/53EJH?,:DQ!8(0D2&$*5)AI M36_ZU:?V=*Q4;:EC($,'UV"&J'S2J@?ENC\(TK6I8(4J2J<:U)8.[ Q? &P[ MN2?8378RH!%DZDCM*E;&"K4J>/@"9=?*R2,D80@Y\6Q+JW(&*%46=;"30A.^ MT-:WQI6F$93!"I+0U15HH;<3'"#]7(C*6J*')>R<8QC@\$_AIA G2?A"4JT7 M/Q$.M)['!8%DEB\PL=Z4QSL/G$ M**:WB.N53W8+LMWXJI*^VMR+'=Z0AC>EQ$L@,0]\<;,&S3J5254T7PHR>52* MB"%#.Q65B("A!#%A0 AGP.#T9 P$)OE@"&'3L MPSH000_.T#$4X%C''E9 EN7091BG@ 44Z[)"TZ-BY:'9RCF!@?)X_&&MT,%+ M!?IR;>BL@#[LY<*4A(/2,H1F$3@+T!D>$AT C>8Y&%H!B!9TQMA%:!&,X=$V M%C'T(OS>F'Q!2&5P<&*K:&8%[$$!"; SGD$ :!0D]ZPL,+,0_9SI$;M8NSL[ MYZ>').JGDEJCID:UJO?$Z@RA8+NPAG$+:@M7PB9SPGT6\!L(^9FI#+C JYD# MSE!P;3(XZ]0), ,-K_4]MJUDQ2*H%,XT58*B?(J0WXTR H%(8 Q"/C !P.QQ <]).P4> +N M!,1)T6V*SXJ_Z-T-ECS5E\%SR?V< *>?T+F858'40]!#-@RI# U^76S*7@2Y M)WT*12C"$JQ7!"JD+SD/%_+=.V6&ZFQ%YZAV.PKX#@*Z#YT,$G0"&,6^=[A# M\/ )2+P(.A,&@0WJ\JS6YQH@_W--HT[H9ST+^;1"]+0N5'SF9"=.V,D"5+>X MB@); XQC@V(V,QW5]@Q^G!AS$/;L!U5*.]]JIW-3I;X(,T1'9G M6XB^'+K N,+'.UWWM/:42W^AO3P!B67O/AY4(,8R*#ZR:$]^6S/3NY[7[); M< /D%WSGIW]%%U*(]51NY!+-H4X$&'YL('SC5WYB5X!IIWZHQG;MUP(]5']. M)FQE@'TPHWWGXW_?QR=;@ ,#&($"9X"VAX";Q20+* <-F (/*'XOX($KN 8M M&(+[EWTP^&!D,8,U>(,1"&,EH(,4V&8(IP!"9X"887ISP&T-1W%>IQ%@]VK+ MQ0)?Q#W>0X+1=%9SAFI?=QG'EFNPUH7$TSW?@VS+-8;/]W;,AUF55W>+EWF= M-X<0%!N )WB$9WC.@G@YHGAE@'<&X7@<(W"21WF6IW]X>$\/E5;\E%%YF$&8 M!7JB1WJF]Q[Z!XDLD5:0%X'EXJ(5PT#]=)9>>MT%?*61AR9*^T8FZ=U9NF1/_ M. 5ZJ8?98XJ.J'=N>)>'F9B6^'E]J9)B>7J=N):$.9(3])$.1(>-Z(-U29%/ MN6*=R4"?29GK")9(B9D^:##GXV@C&5NSQ6RW-5>69YN$A8PG1P??(P)7 #*Z MH2E&,!QTL):6YP0ND4-[A1&259B],R_XEP"]^9LEX)#H- M3_G5YU" M=IVI!S/:J6\LL)5G!YXB4)Q\Y5=A(%D]()XH<)TIL)VZB5LL0)NTY5;-AEO? M>7&^*61:4%1K&)]DL)U\MT*]:';6IYY-$ 9XP#T&NIV\=(GK1VOCA'ODHWL% M@2ET<$[G8W38^6+'EP 96DX;BDZ[ATZ9)(I1QQ+@*'7DZ#_(.&P%DDWVE0"4 M9$DKL +QIZ(]Y$WG P(K8'7QMXU"F9-; &-=,)V2]S]), 5$X%9@6 8F2$>@ MEXQ\1$F:T:-GUR?N\J2N,P524 1'4*57>CY9&DB#E!E>:GU@2B1/!Z53, 1( MP#O]UWUSI*;(F "VA#)OFAQQ&BYS.J;PLP1HJJ=8VJ=I!:@^FH$18G=E8'V? M$TF!*GDAT*-)*E]+.G[(N*GVT:E=T (M4'(V"IN*T81")R+[5$.51(4%9H4G M.CX@:C'N-:1!JJ)%JCJLXSJPTZ*8JGO@& )T.J5XNGV*RJ>K*62NBBPJ*C1 MLMQ?-5$5L=H*A]GNJI >EUG3;"*XP6G7D.HY9AUOJF'\76""R MY*(]VI6A2JY-:GWR2@=;0*^D:JKMVA--F*VJM*W;%1.8YZW-0:ZR6EQ&I'Q\ M-U!MITII *S;*+ [! (\E@9V(X>3F3T^ MX /)0[+ATJ/(2+%\$DXB6A'Z08,2]8!IT*3\FGX%$@/_JK#:&A_JNINA MTR YR21 TR$;HG]Y\ -Y87TV^J.X&CVZ&BY'FH_%2J5YZGU8"@(F8 *51Z=E M>J:YNZ>* 7JO*[8L0;8NFP;3M[QNFQQ7FZC_!WYY6W)P>[3#"X "*'!PRQ5N M@'G9"WXJZ'/2AFV]^07!L1:PZFU+&V&8Q+B&LG"NQ@.XY$IKP9L ^ILO4 *! M00..%FNLI$MIT*,\BVKJ^0+7ZK?8QJIK\ 60$FJSBKA#6A![%!N$ZST'<1D) M2TL+^[0-6W(1G*(3C*IE\*/.^@8EAV([U**QMQ4YYK6V5\$8K&@OP'<>RX(E MMT-7&7Q$FA,S?!E)]D%IRQ-%^H$/ZQL]5! U6[?J9"Q+U +W![L6TT,>6JNA M)F&U"W4_3)0@T'7!NA[@.$YCT :")@(NL&\RUZ?J*02P.*U]I!F:<@(N< +A M,@=#$Q%\E7/G-ZC'FP!L)WE;?$W$: -.BJ1@7'5B3,9"Y@)G#, !I\;Y*V1L M['"/0:U^%,>,3,?0VE IX1$'JF][+*F_X;/KU[CHI+66*XJO4L@Y<49O,"20 M7',B4 (V0!95=@.^L6_FPP+#BZ7I":#H^QIH@ +_*&"0<=#ME-"$*V%+&\)6?$2/47(73$V*UJ)[=)5":C%%:CY9 M3*S@3*5[E*;%6YG7LA('XB?GYA*A&+*!'$LN&\CKW-)ZRCT[#=) O *#C(S9 M_, H(,-"392J^K?9/)13V&U62+6,&[)IT -!8;;K[#_.NP+E')2=Y@:[=L4\ MX M!FJNE@(J<-9IO=8Z5*E%T0,]E+EIW:<=81]N4<(-2M=V?9WL%C0% FJ\P=@& M2GRE2P83:I[6EP:\'-9C7=C33,TB<"S[AM@[J]BN%TF]EQR07;T/'6YC>]7W M.5=:[8_JVM7E/+!B3=AIP!..C6M\@I.6G1SJ.:"HH]E)QMG9 MQC-LN22D?9W;>=HL8-RKG=RMG66P7=ZY-I21?:'EJU\CLKY66(9T4*7.;1]< MR)V3JP)>^#TJD+EP:-]GV-Q#N=]:Y]]K^(4J<*]PF,W4B *\VCK2TX,%/=$( MS6 2OCH4#CL"]]0Y.87DFVG-414QH7W-D1EG, ;$MU\%H>)V,-5/I^(,X5V8XD7!%K&(KQ.Q5M(@ (M< )]*GDP-W)]F@!"LFWG-W"2*M>AYR0S,W)7 MJ>5<_J6B_.04D5 ]2N?UFAPFBB%T,#51?@9VL.5=WJ1=[.9CH"(4<0)L< *: MPD9 RVJTMP9GEQR+[BXG$ :0WBN4-$9C@-4\QD5R(.J4'H*6KNB,#@(G( >= M'D:?3DN8]!O$4NJ3+@:5?NE^NNKET>FN/"2FCNNHKNN9WNAST.D+> ?!GNNJ MKNEMT.EO/<[+/NQN;CIAQ 9TH"EICBG$?.EL]\?;6.8R9WW;'FH"]SI7N1]N MD-1PGD3,3.H_\ 1?( 5$< 52H /R3N\TQ019P)E.<+)RMJRCUYKOH>ZLWFXG M$(I0>)DBGL(,EF-O\*H?KN$C^>OHD^C63=?Y1LL&)DCPUB'E*0+6-\NU+!N5 M_,8Y$O(CS_$QI#76!',@GW,K7_)IQ34[$O/Z-O,F!4DJGQPB0*I WP(R[_,L M_\ A?]MHY_&9\7(G7ZTL\*=. To: Linux-activists@joker.cs.hut.fi Patrick L. McGillan writes: > Hi all, > Well, I was able to run make and build a new boot Image file. Unfortunately > I am unable to copy it to a disk. Tried cp, dd and cat. The error message > from cat looks like this. > --error on-- > bash# cat Image > /dev/at0 > floppy I/O error > dev 0208, block 0 > cat: write error: EIO > bash# > --error off-- > Any thoughts anyone? Incidentally, I have a 1.2 meg as drive A: and a > 1.44 meg as drive B:. Even tried writing to drive b with the same apprx. > error. Urgh. This is definitely the kind of error I wanted least to show up. The floppy driver is the least mature part of the system, and any errors are likely to show up there. I'm unable to reproduce this error: the only way this kind of write error could occur is if the floppy driver is totally unable to read the first block. Normally write errors won't be noticed by the writing process: it just writes to the cache. This definitely looks like a driver bug: UNLESS you are using floppies that aren't formatted? You have to format the floppies (currently possible only under DOS) before trying to write to them. Please, please tell me that was the reason :-) Is somebody else getting this same kind of error? Could you please report the hardware you are getting it on (5.25"? 3.5"?)? Are you able to read the disk (as a root-image for example), and does the error happen all the time? > I suppose I could be wrong, but it would seem to me that it would be in > the best interest of the group if replies were also sent back to the > group, instead of to the person with the problem. I.E. Others may have > the same question, but are waiting for someone else to ask it. Yeah, I'm lazy. It's much easier to do a simple "reply", so that the person with the problem gets it solved, but nobody else. I'll try to reply to the mailing list in the future (unless it's something very machine-specific.) darken.@cs.yale.edu: > 1) mv doesn't seem to move directories properly. It looks for > something called mvdir and dies. I want to fix this right away, > so I'm goin to start working on it unless one of you drops me a > line and explains what stupid thing I've done. This is a possibly deficiency in the linux kernel. I don't allow links/unlinks to directories, as keeping track of the parent is too much work. I /think/ it's impossible to allow a hard link to a directory, but I'm not sure. Anybody with ideas is free to mail me. I think the best solution is to write a "mvdir", which simply copies the directory and removes the old one. Obviously I haven't done it. (Does minix allow hard links to directories? How does it handle the '..' file in such a directory?) > 2) When recompiling the kernel, the makefile looks for chmem and > gar. Since the resulting image seems to work, I suppose these > things aren't necessary. But what are they? I'm curious. Most programs starting with a "g" are GNU software. This is also the case with "gar". Gar is just a shorthand fro "GNU ar", ie "ar" ie "/usr/local/lib/gcc-ar". Likewise "gstrip" is the same as strip, "gas" is the same as "as" etc. I have most of the gcc binaries linked to three different names: /usr/local/lib/gcc-xxxx, /usr/local/bin/xxxx and /usr/local/bin/gxxxx. chmem is a Minix brain-damage. Ignore it. It isn't needed under linux. (it tells the kernel how much memory to allocate to the program, as minix doesn't allow a process to grow). Remove the line from the Makefile if you are running totally under linux (and it's probably not needed under minix either, if you have the right patches). > 3) Lately when I boot linux (with the hard drive as the root > device) I get the message "child 2 died with code 0000" > (or something of the sort). What process was child 2? Should > I be worried? Everything seems to work fine. Linux has two special processes: The swapper (#0) and init. The swapper is used as a "null"-process: When no other process wants to run the swapper just sits and idles. It may not sleep. Init (#1) is the real father of all processes. It should really do a lot more than it does currently: execute the /etc/rc file and start logins. Currently It just starts 2 processes: /bin/update (#2) and /bin/sh (#3). It then just waits for any of these to exit, and syncs the filesystems (Normally this happens only when /bin/sh exits, as /bin/update shouldn't exit for any reason.) What has probably happened is that you have deleted (or changed) /bin/update so that it won't work any more (possibly due to a corrupted filesystem). It isn't deadly, but it's a bit uncertain: The filesystem is never synced automatically any more. Not even a "logout" syncs it, as init synced it once when /bin/update exited, and thinks that is enough. The possibilities for a upset filesystem are much greater... Check for file system errors with the newly posted fsck (although you are still unable to correct anything with it: backup and reinstall.) Linus --[0025]-- [0026] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 11/10/91 11:21 (34 lines) Subject: problems From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Sun, 10 Nov 91 10:11:52 CST Hi all, Just an update on where I am at and the problems I am encountering. By using my minix demo disk, I was able to create a new boot disk by booting minix and mounting the hd parttition. Afterwards a cp Image /dev/at0 created the boot disk. Clutzy, but it worked. Using minix I made a fs on a 1.2 meg disk and copied some files to it. When I try to mount it under Linux i get the following error; --error on-- floppy I/O error dev 0208, block 1 mount: error 16 --error off-- I also note than using the new fsck program which seems to run fine on the hard disk I get a last line to the aboave error of can't read super block. I even unplugged my second drive and told the bios setup program that it doesn't exist. Any thoughts anyone? -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0026]-- [0027] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/10/91 18:31 (34 lines) Subject: help installing linux on hd Date: Mon, 11 Nov 91 00:23:34 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi Hi, In fact the subject says it all I've been able to get the minix demo disk from plains also the different Image for linux I was able to rawrite them on floppy quite easily. In fact the problems arised when i wanted to put linux on my hd: I used a 386Sx with 2Mo Ram, and 2 HD the first one is a 120Meg, and the second one a 40Meg The big one is a single partionned disk under DRDOS 5.0 The other is a 3 partitionned one Using Minix I've tried mkfs /dev/hdX with Xgreater than 5 the only reponse i got was/is no space on root device 1/0 Error: file system is too big for minor device Line 1 being processed when error detected Oh, the number after /dev/hdX was computed as in the manual of the demo disk of minix 1.5 On the other hand I've tried under linux the cat /dev/hdx for x in 0...9 some accesses were refused (since the partition does not exist) cat worked on hd0, hd4, hd5, hd8, hd9 Question : Am I supposed to patiotion my first disk in 4? [mmc] le continuum spatio-temporel est une veritable passoire --[0027]-- [0028] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/10/91 19:01 (43 lines) Subject: Re: help installing linux on hd Date: Mon, 11 Nov 1991 01:58:27 +0200 From: Linus Benedict Torvalds In-Reply-To: Marc CORSINI's message as of Nov 11, 0:23 To: corsini@geocub.greco-prog.fr (Marc CORSINI), Marc CORSINI: "help installing linux on hd" (Nov 11, 0:23): > Using Minix I've tried mkfs /dev/hdX with Xgreater than 5 > the only reponse i got was/is > no space on root device 1/0 > Error: file system is too big for minor device > Line 1 being processed when error detected This seems like the error which happens when there is no /dev/hd? special device, in which case the minix demo will make a normal file on the root-device, filling it up totally. Thus the "no space on root device". What does "ls -l /dev/hd*" give you under demo-minix? Are all the listed files block devices? I haven't used the minix demo for a long time - could it be that it doesn't support hd5-9? I guess I'll have to make a mkfs for linux in the near future, and make a new root-image with it, so that we could scrap the minix demo. It is too confusing. > On the other hand I've tried under linux the > cat /dev/hdx for x in 0...9 > some accesses were refused (since the partition does not exist) > cat worked on hd0, hd4, hd5, hd8, hd9 > > Question : Am I supposed to patiotion my first disk in 4? Don't use /dev/hd4 - that's probably your big DOS partition (and I doubt you want to write over that?). Also *never* use /dev/hd0, /dev/hd5, they aren't partitions at all, but the raw disk. The partitions on your second drive are probably called /dev/hd6 and /dev/hd7 under minix, /dev/hd8 and /dev/hd9 under linux. I don't see why "mkfs /dev/hd6 blocks-in-partition" wouldn't work unless the demo-minix cannot access the second harddisk. Some clever person used minix/DOS to write some easily distinguishable string at the start of a partition, and then "cat /dev/hdX" to find out what the partition numbering was under minix/linux. A good idea. Linus --[0028]-- [0029] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/10/91 19:38 (329 lines) Subject: patch to use shoelace with linux + fsck and mkfs Date: Sun, 10 Nov 91 16:21:27 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Following are patches to shoelace to allow it to boot the Linux image (sorry, no building by parts cause there are no parts). This also means that the fsck function of shoelace is available, including fsck -m, or mkfs, which I have not tested. Please note that by using strip on the shoelace executable, I was able to fsck a 20Meg partition. 64Meg partitions, I doubt it can handle. In this way, both minix and linux can be run from the same partition, with a bit of mv'ing of directories like bin. You will need minix to build these because of the 16bit assembler. I also have not tried compiling laceup under linux yet (no disk space). Perhaps some kind soul can do this and post executables for non-minixers. If you are not already familiar with and using shoelace, please install and learn it first!!! The following assumes this. To use: - Get shoelace from plains or wherever. - Apply the mxvid50 patches (may not have to, but my diffs are against them) - Copy makefile.bcc to makefile and then apply the patches in shoelace.pat. - Put the bootsect.x file in the shoelace dir. - Type make and cross fingers. - Use strip, ie: strip shoelace - Copy new shoelace to your root. (Might wish to try floppy first). - Reboot, hit enter when shoelace prompt appears and type "load /bootimage" or - If you want an automatic boot, edit /etc/config and set "load /bootimage" You must also ensure config doesn't allow shoelace to find system, fs, mm and init or it will boot from them by default. Either move the executables or set them to a bogus path. Why Use Shoelace: 1) has fsck and mkfs. 2) doesn't require a seperate boot partition. 3) allows passing environment variables to kernel (like video mode). 4) doesn't require kernel patch (byte 508) to indicate root device. 5) allow you to dynamically boot different partitions and different images in the same partition. Disclaimer: This patch is a bit of a hack. You can set your rootdev in the config file and it should work. But I didn't implement the bootdev. I also did not try to pass on the environment to linux. Acknowledgment: Earl Chew for shoelace. pmacdona@sol.uvic.ca table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 slpat.Z M'YV09<:@>0,"#X@6(,2\>4-G3D Z+O H<$@&Q(D77K"\F/.BXPD0/A(N;/@Pz M(@@>/"R^.*$ "Y^6?!(H9.AP#,0Y"1*@&)("1(P<.6* 8)+&39TY(*B\D6,Gy M#!LR" D/.F#IVB9>:P !'&3<4V;^P$GHJU#!LS(/J&?0.9K=L[8=32($0+YR/9-)\MLE&v M;1@S=,K( 9&&Y&,0*$3#D'$VA6G#:]N"F).';IDV4\&*Q1.#-(S!1XN> 2$Du MR9,IS-TDER,G;T,7(&+S >'D"94B(8 P1AWTE2%?<=MUEUP;S"$E'F)T@8"#t M"C;44,,,-J257%9ON'$&?E2@@=5V ]7Q5$)NN?'&5'#P)08;WPU6AF*W%96=s M6V;X16 9^"4! F;RK470&F64H5=SVZ6Q&HP@BHA4#3'( ,(:0DQ%I!QN.):Dr M'F[-4>*)8KAE8%]GH"'C'' $E(93"(;1FI,@D/%&8&Z<$-88'=9EHV53B5&'q M&68H)V 8 KGE9GP@M%%4&A*Y-%6(;N76U7)H'!JF@8ER92A2$I7U%UQ#759UR!H!Q?$FM&J=4<:VZOTX$*@U;58Kn M86$!^U<;E[65I6++C3I'J4RVU)(+R>%A+18N=&4&8"!\09===+#!:J/\EN&Om MOEA,400554#!1!%.@- #"#3DE--^;BQ'V7;CYC770TM%A8403_@G\1$@:#P>l M#&7!X/%^2Z5Q1E%.$4:&9Z!%!MFS)]NT5$M).)$$%2_'O+%T9]W\HUN(*495k M6&U]=E!D?@E]XX^9M20QQ5 T_30>HU$G=6]Y;5?774AE78;864S1M-/CE1?Uj MQPEZQZ"D7K&;MWG057BA#2G AL544K1,Q1=$%&&%#@F,1=K6$R5XS$##$(A-'"M8<&!<'-PW=8A"*]'Z%D:5H\[1DN-^P>Yh MY#*/M;J4^QD/@PT0&_QVP@OKT!(("52=0!AXL# "RRX7<<3TU2>6 %0L8 ^^g M]=AKG_32+Y\O?F#E-WK&&Y2CG_T8*H=OQ_B"F8^%_@F G__V X>N'6P,:Q"\,:e MOB I@Y4,#M);G&R.,*XX826!N[.:[#P(K_D(9CMI&D,:!C8&-JDE9%Y+5\I>d M0 1b MX PG8<:)HQP(J9UGO>@-"(RA!-6PFC14C@5CJUC[9 BQ-LSA##&(80)<$*WDa M^&0&+"B/!%W@)B&F 00B8,)6@J-'[O@-!"X(I@AFV4JWQ "6Y8DE,F$ L88]z M# L&(D._Z!##@($E#"V))AFN64TQW"N;AO'F'*3W @4$9" %V5H;\&"'-)"Ay M!LRDB$HRLI&.K 0DB6*G.^%YDI1@%!#GR22@OI8'4@@ (1J. 3H,2@)4&XRT)AI .N8FBK(\/3u M:EP0%Q3*-RX.@#T+VMP <5:T(01NJ%008T<=)80r MAC2TH IW<(L44MT,#.P.!CH6Nq M,7P&4YWB$NZ6 H(F+,H@*)@!#A#7DB: )@SB:D$2B-!6'OPD*%C%@0NB=);Rp MN& &,[C!#(1+7..")0W)76YS#01=%T3.!RTA EC*T%8<@ "K6A5*E'1P%AV4o M!P1': (5Q!9-Y;3UHAPNKAR."V+E5H&YSBVQ=%$ 7J1,04'?\2X6GB"',Q0Fn M#7KX<(?:2H5SJG0.A0)!%51*KT[5I88C?JZ\!D/#(1QO$= 4I0N[O^K! &.P45UADl M: F2BJ(J&JTT2$[!3'>$)*!IB0L$*E (6U1 HCFQ@5"&PLZ5LL2&%ZBJKTP:k M PM:,IS1I4B:&=7]PSA9:(P4V!$W<9"(+N4$TM5Q8OY#3Wh M&Z0^XV P,:!!9)83@PS]&@^.B=N[%0 (>_=,@I^ D"&_HZg M&!\5L#9W($AO#&2';NOV-%>Y3;YU!NZANZ'HB_X"GG9^$CS@P0QL[>>C+H-R0S>9DS9"$ 8'$*5YNMP@K#7%P2Y\#3R#%NW/B(K$+&08SASJLd MW4U<7WS%,33O2%/!(7JDP>44HGFDH."8,L"##'#0$_X6\F"&T3P(K'"$(*S%c M86&I.*'MC4TL!.?0GPD2NU\><\Y[GOA(P0$>/LX$2N4T7^B$R=E,#!SUB2!08!VL2:F8BN(YC-=P6=#HART]@)GH!4N0'S8y M81==,BZ:=AOJ9VL'V"#!(D^_XC;U81/]IG@M>( MT15C\&H>9'.W$6F%U$[Zv MUS.+5B2WX2?(=U!)(3="YA;)%BL"V(7 4E"->(($XQKW5VB%$2RB(R@*@6F1u M<1NW9U^:N"4\\HDL*$((:'X#$1=S@P64J(38HR2JL1VXB%]8YA:O-P-28A#Pt MU!-%-(!?LTUUH8M>(W%,G-N@"##EWC0^!:*!F4,@@(?q MM8O^A5OAFT^X0(P "P8J'YW61D$\0)'n M(0<;(0=C\ +JUQ(8V&N=!"KJEXAZB7<@, 2FUB4#49=E4)5+MQZ11GF31(QAm M8 =]X5&NM'B)TG@Y9QB#X2E+41?R,1A;691")BZU01 N]4A?@RXABZ8A=,j M:#4H4)-DX'F!4W=>8A??5X\S(&7V21# YT2UH1T#4X5F,%#9D9^**2**P7FEi MF8>YF7@3>BJ[4C7#^)MV) =X)")Z="R)(7G:(0+O&9_S*0*X03 LNJ&):)UNh MT77V%J)?X ::4P8BH#@C4)^98FXPD ,O ,X\ (/)F.I) ,94@54P)9U!YY g M !6=TD;*00HF1RW(2S_AQ04)8AHHB8#XQ5PB@7V"2<'NARJHB=N,$Y&e M"B,>4FBK:6XQLZG;%J1&V@*@&JH'$:JD"JJC6JJHFJJJNJJE:J0Q0QT#B4AWd M(*NT"@)24 1!0 1-4 2N^GW+ WZT*@>S*JP((9C'UZL"]A,'0:S,.JMVMY<\c MJW6:JNXJJM%H#'8^JW5JFF5$1AAT0*0<0*WFJN[^A$M "Q8b M( (D$ ,T&@(;\ZX4)0([<".$]S_G1! G8! (,0=KD :B4R[IRJW0803\YA2Pa M0@9J(:=T 8 E7+#V*\6 ;"RXB\0:K#;NJO0T67^D@( )4^\@1$:<4\H81%3z M (A?4 1/8 0?$1+HVK%%\!$F8 )(@Y%[1FI_]H5],6CX=WR!DGR*MHR-UGB0y MQE]-,&F)>&E;AP6;]EP=XFF)1AAL(&JMH9N9B6KUQFJ5R9>!V8WKUR&XQE+\x M")F_!BH8.&RR I**(T-A*I3*YA;GYVS/*FU]1FW,86W85G.)QVT&]VTM\3_Aw M=GGD9FX\@&[JMGP@X&YE$F_S5F_WIAV?6:?!%A\ 9Q.\LXOWB12!BW#CHG#Mv M\1X.!W$5H9H5=RC9A7&'HG' YW*D1GTA-W(^87*,DG*-NW+C)Z%YTK@P][B"u M2'.2B',@H',\)Y0_MQ9!9TA$9W0'!Q6(\IDQ1+A>IXQR('5^A10\8'58IW69t MA@74.R[-&W5BI[UE=W98D'8+17Q:XW;R%'?:,9D&NIG0FG=[MQY]Y[E_5Q$5s M643["G.N@7C @KK>]WB11VJB:7GCEGDOY7R?IS*$VWWF1GHM87JHMQZJYY.Lr M]U*N!WNR1WNT>WNRN4TOM7N]]WO^DJFM2'R-.$1#6[6,Z[CPYL#0)R'3]YK6q M)R'9AQ;;-[@)4+CC-GKA-[B[BRG V&SI)[:V1K;M=X0H '\?9C7PZQ;V]R/Xp MYX[[QP;]Q\3_%X :V853>(!.-H$-^( 1.($5>('8X8<,"(@?.*G)(8)F0()Zo M(3" X8F0 L:+^()3HS6= 7(74TA):F#5GIH?9(1YLO($=^(%(,8#^=AOZV42>UR[8D!MFJ8**Z(M( 8P+X1 5',U4"5^T#)T$e M4L&E>9K-08"&J\*MN7G,L1JQ61AT0)M$&1:W64-]MIL/T9MO\)NG$9QI,)SCd M4IS'F9P@N9Q#YIS[M1P)/!]WU3,ZJM=8D)UBEEVVVIU:_)W4+9X=YF;(Q2^Hc ME9XDMIY=(38LZ[)&T']HX&AB80/JK:WJVJU\\!+0)!#^^AET(=,C<[ >ZRW b M1@8 =05C('4]( )@< =CX1 +^+74T^MX2a M9+$SV]YME3,[ Z2Z8I8%R:3G(2 $0K2Z^!'P6N%C4'II0*W@BJV++,A_=7S>z M&N/7*JZ_%R'F:A'&.D3LZJ[P*J\@0*\@8*\MGJ^VD>'R?;&8,[ %JT<_#ADHy MH+!JRP8-^[!X,*<2FTT[5[%-_J];\Z !5RY3_K' )[(M0;(<04\HZT\KVX$Mx M^[(QZ^.(?7PVB[-8H )\#@(Y.%)HX <)0 4C! )*8"(%"7XU1@,W8&,W4%9!w MT1*B^N<[..B%?NBZ(@/@]Q,Z( ,Y0&,B]Z0MP>>D7NJFK@*CWNH]NR4t M!@*Y_A_3[NMS<)39ONW%?NP$D93_G"5>P2E;_1E5TS/.WA(K (C,$0",QM.s M\!],\ 70V!Y,(_ 9.Q\U$B2][( 0F($4^ 06>,9_^,L[ /$C$$U#1,30CIRLr M9F"(@:*ZZ(D!7_+MONL9(RR=<@994A' ]P7P8DK-&.S;OBA_X13-6!%UYR8.q MT0:FDH_/TS9X8FXM3^H"4H00,0:"3NAN@>F)+A8PT.DSH ,7 NEGA06BVL@(p MPU&67O6(KNEEU>DXH ,TX&*BON>G'O>H#O>LE@.PE ,N5NJQCA!V'TO+1*L_!00 52T!-B8! ;\RQ?L$-!ZD.L! <&X[]+[Q8;LT)@n M\09I4/AV [?\F-_=L#]@9WR)?_.'^Y+?8A/__4^_H?Qj MTA@ W S.S_!!/_K7R]R8S/!_\('5L+$T1@!#GF$8>24O9O0!P1V'OJY$]JF?H=&#:FSU:S^NE.KEGh MZI8@"+ !L(0GO3H^M_>>("R)5;:NY!6\YR)"S,WKXPO)P2;LH'FS[K;@(ZH#g M7G!;Y($Q2/*DG\$[00CO^C4\]@'Q8@84J )"@ DD ;;DZT"@S.!4V(< VD$\f MJ ?Y(,5#8QH//FP,3F60!&%8(81[D-IUP%_V!V/&0$)I-< 1C@ [EB4P7A,(e M O^#4_DC%3"-0![%JH,$CQ.Z!3_(J5HA]M%VK.8W,1L(1?S$&K *FZAY0V\d MF+$)55$G'(&)L!6V0H,$"PE>C9HS8NT6,1KSQ_UXH2K$>+XL$ G#F($"_* (c M1(06* 440UE8*6CANFAG7:*:Z<)-U0O)F2<$A0F 4TU"#V0*3^ Q(3(J2Q'3RJ&B$%%z M"(2!(J)D $4L81?QM&7$C=CTF& 3I'L@X ;$ !9P [:*WM."SS!R&($O8 28y M0!5860SH/5"!=.@39$ Q7&6] G>($"_1;2+$/W2&'I$],($@, 260$Y8B,7Px M11"*!+(Q(.)R0 LHX'9(KI0X4A*16>P)5S$59L4K@ 261A'XBC'C!A1#]>5*w MRJ)?X2^/+BUN(H9@;]@B?L! ;Y$9(H1R2#!8X3348=NPU#@SFU +==(QS(7/v M;C$^0V!H@1[CJZH!D1$7BJ2O\<]:GF;,BNL0/CS&:DC&+!Y!XHQ30!MN.VXXu M&7U(,G1GXE#=845S> 2> %%\ E+@"G0@(N 9;8;WLR]^15<(&H)B9 0&Y_2#XD"2X6D\Q$'D"G$4.$RCJ<(!5]#%D*HE:!.I($Z,r M 3?@!L02 #D%Y]ZZBQG;#@EH'N:('RL?\?.'NG%3^;JE< :R73&T%[3C=HR,q MW'$GNB%^L!%C( \\HH5BS9 /1^14OFY U(JEX"&W'64P ]\OKA"(OK(<*E1Np M&3GKH>4%B!8X$.Y"9.!$6R U=@&>QVJF68BK9IQH:+W(305MC*18= -K8 YLo M@3P8!)S $I".56 HCL0BL"3#XC43%)&JNJ@4/7(E$\@L9'D9L@_,P"H8 P9,n M+,D!4F) ID"3!P(DY$NAD'Y&^(FO6H$A62"UXY UDM6 R/(W(H5#A)B%)U+Im MJ$B%4>"BI*"(BS$C1NY(&BGL6,V-S)&004;R2-QAH3@D,QR2K<9(VJ0_D20Gl M$'DLD]O.25JO7&0IEP.F3)70XM5@22W));TDF!23")%,,LD6*273Y*)@D[K2k M379#."GXY"3)BW,+B+R9-_2V/-;;F<-P\0V=G #ZIBZH&&0X<_H-1O"WEL#Bj M MR *W"%RI],N1.PX+X1N?)54/ @1+@)Q^(N''P+(&%NRG4XC_+A,%%"6QU0i M<##(2!1GEE0-PW,:X;#;.8>8XJ#6N>-RY@IA [B (N7@Uh MK^J5"+A72DY>,#EMB;$$%L'Z-;U$L-DE&U?E%A:6*P-<0DUR:;9O TP1D*L34]'8S+$VRN0/]'IN4U:=])@7=Q$"(,32@ ^d MP7=Kc MPYRO;G/.P!98%QRGX@%]H1-0D<[*^6\$9C=,G1NPW+E.T&E([$#%*9VU$W7Rb M.=7).%LGBRP*C>='Y:.!< <<25BIG+42U1#/DN=I.FTGa M@AJ>G)- %D@G: -R $\4.3]15-V \W #,H2>?) @8 ]T'=$Y(T3 8! !0&ISz MC,Z%XA:H9 VI9%"H:M$%C[*BD,+^Q#;V\S'VAM'9!_@1_)2?,D][VH$$BC^#y ME&?L"M1&3#R=)^0&+IDA4@\)U#-NJ@@J.QNHH92?+>+?$!T**D(W50H-$@"Tx M@PK0)J(>XM]@:*%^AH"64'ZT"^,G$)LXZ(:"5IQU(Q^Z0 NL(02L*[P QK4%w MFE3(<5(V0-[W(/E+@MN@)+GK,$7^+3)CI!&I #:D"KPWL-v ML@J2404));;*^Q2&711^QE%.I2T(Q&V 02PBZX B#?LZJ#70J*G#=WXT6>Wu M1[E?]7R=D;.*5APC( .Z9Z Y [I&>*H TU!E[("4&7A[P &VF]\%;^:? Z1Rt MC[3 A02A<$FI1P+H#5_ BG8%%! [<(9L -;( 9T@>E92.D?X0NE^$1*E-($s MD$FY7TZ086%A8[322KH%9, L)8 YX98"4V^E-]^;[[I(U;(T1E<,]]HS7P*7[XF3@R;FTF?VLVSF3?=WM:+ 6WS;0)!N%4GPJ20;Y1W7D\@X1#\$_RP@X@o MA=*),:P JO&>MO(U!0G-R3E9YX>m ML9JM^LS\#.B3#Y=2W6%4N><$\20+R &/+GV:JKX'%!9G%IV?LC.$(,IW24RQL3I#P-*0,_(P9=11+&**5*/I:@ \XJG!@"[B!+C 83D /. $]i M8>#%@-6YJ8+K;4 !555SBH4\*O#XZ-S;A7\4DP72QC-(NZLAS:I/M772'55EHN>&EQ":E53*:V\^"C25L&*9;'R G;+JD9!,)& PR;T',,XFA*z M)EI:B[@4AJ*X#V@ Q6C!4+MHS\U_B;1T80=)6U$U6FE=ZUBMO/#,=L(TNT+8y MK I[LWM6W'[$.8MG[VS2R+.@,-WV64([)@?MKBJT\9;2+EM1NZ."B:F]-1#!x MT[8$5RHR[(N/I1356=I $L0 ;4V)&: /# 4A@?V8,,-(IU=_OD0^J0r M)24/OM$_3@('$@ N^A>UM&!HTQX&#WVIYY4#UR-[^ _Z5T1RA>N= W; O-(_q M^]'J4(#QVZ7_YO0RD]J[>E>#Z]46PE?V!MAMFB=B2.SMO)\W?>Q>ZM%[V<#Op M#;[,EWH07QI@?$G?^4,?9F($B-.O-WS%Q^.;(N9!D](!Y6M>22_K?;Y "(RFo MW@1 0]H%8A 6DP$R&%YH.>?*&Q80"-12O64(C D9L*6&XY;V#3(P8-Q17<1En M?T.8YI+ &;B38!$8,+MD<.\R6;G1>;GB$*:]')G^B@'O2YU!G;21"!:8)TZ m M-B.#62\59C;9Nl MVWCR,-OM/'DW-6,@A HS3#'O 9@$$T/U%UC7KN@9%:=#((ABAT@T41-Q;9AKk M5MB'EC MR ",D .HPFIA+2N&<<($?L"AFZH%2(&CX! PSA7 %0I#<[R1Q5%.j M+%;)++(?:2($CHM 3SA"T0P)E^TC&% N-i MKN1P/:W[]425)7:H9#-$<&(GX(ESHEC8>EV6[;F]IPMFPVR?6Y\\D?(:2)NZh M.Z^G>;$_0:)T#M!C)B""GY%SL*W<,QG?3O!I^I@Q4:T(g MBC4:4]5I3%--7X XI#)/9]0\$U<@Y,/HY)Z@X,!-Y[AT9M=Ef M[%1Y)V%M7E/U="ICZ&>-TRMAC<>TG)?FR/?0TP#@O"V)@AHO^V0\)"0];'W)@>'U+>^8PM:#YFR 2Y>F8C7S\.ETb MJ5JV!C:?#G@6'9G4 (L#FB)4@T\IR,PP9@QCH9;Z<'_PR7.9J*, R$V;#?!T1y MLV*6,E@9)ZXZ\TD#9L#;_(F2>4\Y+3XC-P9#-TP5C:?XB"TAC!3'%_Yx MV8UFNER:W7%%Z,FJ.09@UVE,FV:$;67-!?DO:\@@,3K?HXKM7YYL@<,UB-%YOL.8=FZ=R:2;-,?L?Tv M,SMOY^_9G>W =R[(X?DU^[KRK!K.\[9+SV]G/;>3]OR?F:'3HTLJ9Y,O[2LS$P1)X:'!K!/4= I2!NCHL*OI/HZJp M%CD3N3X3Z"[:EP<>62U_*F *=*BP'%^@0!,YRGWT0;*:)_!<1)E%$B]EM5*4o MCEQT@@(%951MD8HOZ KWA8#@%U8(S;A#6&BN#D%P((VV+G]AXL.]";< *W2%n M5X)*D$%2E MAJSAX=)\S2*S.(.GBN2>J#!+FE5(E+0O&#/$<,ZKJ9U(A; &Q"D*Z]I35([NT[29X(4/!Y'TG@"T@4#A2@11]@&=*"6?IMQ8H@2[S$>j MTL;R'7C QP:E5Z@'5/ST7B: =?DZ)^BO#?$*\IY.GB&C(#>LR60$M'/T7*K'i M-U#?["6@@#IRIH]HP@L D. "@#'0$L2C=S2;D8U>RX+PQ=*!\R ZRL!g M^HNX4$HZ)>*>L':K'5Q@L0Z&$/6=O?$T]-MG@/76$?K >D%.3FZ%731 B.Y-f MA2,1R!> 7AM#3MDZ/"\$_?Q9=QUP'%;[S*P F@ AJ6TVQO,K!#\(3.4=W4>Q\S;<"/Nd M:2R]4P#Z5M\/YWI'T=\]O&.&\2L*?UIB9.[-/2:/L@H,U)S*^(FXA]F,*$/@c M/KY;XX"[ 3Q@^D05%,2\ZDTBZVN]W0KY-NX&W/;[0 \SCZR_H7=N/=_4^W$'b M\#(@N2GW:YZ&EWN!+Z!ZZ[F!C5D*W?";3[I0'6JZ10#JUFB@8Z&P[H3FNHE,a MAXC="91V!RGMW0IQM^Z>%;W;)Y0^(3D-";<*: .=HXG(C,%]OP-'_B;?^_M[z M]N\M $]PP/M&E7MU&H-QOL 09 8"G /5<%=_ZHO- D0 '2^L]9.* V;H,$#'y MP&I 7-\)/3Q9Q%8-V X#@?CGEQF1 XK\ 60 !% "P,/,S-J5!XSw M-+DKW]M4S@VX$*.Q+DIL&^+ED!R6E_+Q *MLMPCUY7B8E']RV1,#QH S!]ZHv MO$__Z>F:S9]TE"X>:,,\7/,(CC+_-"C?Y/+TD5.L^(G*N??Q7D@$B8RK\,*-u MQEVX=H7AZ;MZSW#L_<:GH3OWWO4[?)?Q%9Y;G7<:C]Z*VW_'\/7=OONY,'3Gt M]!M\RW/33-";=_GFWPG]?^MSB+,"!O@XWU0:/(%C;LV]PX/E1P_>)/R!K[O7s M+,$3&@7G$A8\U9"^#%[.3=_<%JT@O :@3Y_]!'$Q3Q+A9?>W=IO1L1D.^@O7r M"[F\G \&-PVE@V=+YQ)!>7O[\(1V$"(?:]AY-]Q)Z-P^>$]TZ8ZZ>\+FAN@.W7!/<)SA"PJ?-W3J5?!Y=&P^0;?@IV8OVn M%SC:D>,HT^K6_*&-KHCV)"6Z(ISHF)$A-"_7:W0&:P9"" J(^T2WYDX)OD&#]%&-F(-B(&Y?$HCl M2NZ=(JJ';W@&FO,$18YZ9^^GX;V/@!8P%N)[ M@/@J:1B*-])=[%QQ?1'D.@k M$"Z!*0 %=MT2J!*D-SUYWR\B-)NQ>L-?$?"^X<>[1BSO_WTO: [T+H36.Z5M[V) OX^%5QCCY[M>B!(Ni MYK[?^/PN1OC[]+$9,3[ #Z4[0.#%KX'/'B,@P>_!!=_@I<"#;_$FPO4>7?,^h MXR^\@,CPX=W)[X\.+]_)%<\H?R(^T53B@%HW?_MW5\4T^A/3#!NSHF?QUH71g M6+-N-O8^GXP#,.QJ&-NI4e M[V0 22:-.T@%A$"8- *[;DR6R6(([C:8T#N3MI) 9\H@D08L-*LI"EW!(*QId M5)CI-_W%EAD:^U.?=JB(AK9J&7#>GRFJI_3C!AU^SBQ$ 2<@=D/7?)6O@+C3c MPRE$(D2QDFM#HDUT*\X0-YH&2/>3M% 1 KI713"BW0OW=Y_HFJZ-D1*"'O(Zb M/8/$ GH@HD^[IW0SR8F#4I9B=(&C2V( 1QXA+K#A$WZ>_R@//Z!>8KLC\0L]%O\$R>\C1)?^G!@@^9LIYTU\]A[R%0680?ES0KGYT[X<,Z!57K!):J 'z M) ";?UX*\JU0*<\"Y^M\NM06N )=L6) ?R30E2I(\ U^K,ZF"K^N-/PY ?.=y M1<<' 1\?X=--C&]W!"K'/R@>O^+3)>Y=]4U^U5?Y8?_&MWRLP% R?LQG3D?Hx M6:2+H;O2UQW/%_H['];DA:6_[GY^&@CZ8B#GA_RB3P:.OM\W'2OB\8I1G.B;w M6QW>GGM:/^H?E,!&]2F_U9_\6%_LA_JC?XK- .??3!*?(&1]4SKV1[[E-_N6v M7^6+?I9/EUP^)K8[,C_QTWQ@,@5N?1+ EZ:H"LQ1%0U_M%*u MGZ'^G%CXG[_RVYV(C_E'O_'OFA_%\NM3RQ_Z,S_(+_T()/FW$:UP\E/_=SCZt G'S] /'_7K_UC_]68^[*?A+N VG]!;G_N7R4$@??_CG47$8"_ B@Gs r end --[0029]-- [0030] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/10/91 20:34 (39 lines) Subject: shoelace patch #2 Date: Sun, 10 Nov 91 16:57:48 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi There is a big difference between floppy the device numbers on linux and on minix. In particular linux has fd0 as 0x208 while minix uses 0x200. ie. linux /dev/fd0 == minix /dev/fd0-dshd5in The following patch will keep linux from using 0x200, which it doesn't know about and instead use 0x208 and 0x21c. Apply this after all other patches. pmacdona@sol.uvic.ca *** shoe.c.bad Thu Nov 7 08:43:30 1991 --- shoe.c Thu Nov 7 08:52:27 1991 *************** *** 638,646 **** longjmp(errjmp, 1);*/ unsigned *myptr = (unsigned int *) (&((char *) bp)[508]); char *myroot = getenvs(SaveConfigPtr,"rootdev"); ! if (strcmp(myroot,"bootdev")) ! *myptr = atoi(myroot); ! else *myptr = 0; if (*myptr == 0) { if (diskcode) --- 638,645 ---- longjmp(errjmp, 1);*/ unsigned *myptr = (unsigned int *) (&((char *) bp)[508]); char *myroot = getenvs(SaveConfigPtr,"rootdev"); ! *myptr = atoi(myroot); ! if (0x200 == *myptr) *myptr = 0; if (*myptr == 0) { if (diskcode) --[0030]-- [0031] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/10/91 21:10 (14 lines) Subject: help installing linux on hd Date: Mon, 11 Nov 91 03:07:38 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: torvalds@cc.helsinki.fi, linux-activists@joker.cs.hut.fi In-Reply-To: Linus Benedict Torvalds's message of Mon, 11 Nov 1991 01:58:27 +0200 <199111102358.AA06456@kruuna.helsinki.fi> This is it, there is no hdX with X in 5..9, there is at 0 and 1 ps 0 and 1, tty, and some pat devices ?? aarrrggghhhh :-( it seems that i have to keep on "playing" with linux OR [mmc] La vie est un long fleuve tranquille ou il ne fait pas bon ramer --[0031]-- [0032] daemon@ATHENA.MIT.EDU (Bruce Evans) Linux_Activists 11/11/91 01:06 (46 lines) Subject: Re: Looking for a FAQ Date: Sat, 9 Nov 91 18:16:35 +1100 From: Bruce Evans To: Linux-activists@joker.cs.hut.fi Ted Ts'o writes: >N1) The Minix demo disk which you can get from plains.novak.edu only >works for 5.25" disks --- this isn't documented anywhere, but I spent a It should work on 720K disks. The Minix /dev/fd0 does not support 1.44M, /dev/PS0 is needed for that, and the demo disk has fd0 hard-coded. >N2) The numbering convestion for partition in Minix and Linux are >different!!! The way I dealt with it is to use a disk editor to write a The Minix hard disk drivers sort the partition table :-(. This problem goes back to DOS 3.0 (3.2?) and before, which have a different idea about the partition order than 3.3 (but I think it is just a straight reversal, not a sort). N3) ... >It would be nice if Linux understood the DOS extended partitions, though. >[ Note: whoever decided that IBM hard disks only needed 4 partitions >should be condemned to recabling machine room floors; CP/M on Kai Uwe Rommel says that extended partitions have worked to solve this problem since DOS 3.3. I wonder where this is documented. >Q1) On nic.funet.fi, I found sources to shoelace, which seems to be a >way to boot Minix without needing a floppy boot disk. Is anyone working >on something similar for Linux? The other interesting thing about Since Linux uses the Minix file system, the shoelace binaries should work immediately. The sources probably require changing because of different header files. >shoelace is that it came with a file "shoefsck.c" which seems to contain >the necessary code filesystem checking for Minix. However, there's no >copyright notice on that file, and no email address for the author, This file was copied from the Minix fsck.c so it is presumably copyright. Most of the rest of shoelace could be used by Linux without copyright problems. Bruce --[0032]-- [0033] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/11/91 03:28 (24 lines) Subject: help installing linux on hd Date: Mon, 11 Nov 1991 10:24:45 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Marc CORSINI: "help installing linux on hd" (Nov 11, 3:07): > > This is it, there is no hdX with X in 5..9, there is at 0 and 1 > ps 0 and 1, tty, and some pat devices ?? > aarrrggghhhh :-( > it seems that i have to keep on "playing" with linux OR wellcomed except the "do a partition on ur big hd1"> Ok, here's one possibility: mount the /linux/ root-floppy from the minix-demo, and use the devices on that. mount /dev/fd0 /dir mkfs /dir/dev/hd6 partition-size-in-K ^___ 6 or 7 (minix numbering) This should work. (I hope). You should still check which partition is which (unless you don't care). Linus --[0033]-- [0034] daemon@ATHENA.MIT.EDU (Kurt Wachmann) Linux_Activists 11/11/91 04:24 (55 lines) Subject: About mvdir and linking directories Date: Mon, 11 Nov 91 10:04:54 +0100 From: kw@dde.dk (Kurt Wachmann) To: Linux-activists@joker.cs.hut.fi In reply to your discussion about keeping track of parent directories in the kernel; the answer is: DON'T. The filesystem should work like this: Directories may be lin-- ked and unlinked by the superuser only. The filesystem code in the kernel should not check the correctness of these opera-- tions, except for the root priviledge. The superuser is suppo-- sed to know what (s)he is doing. The file "." is a link to the directory in which it resides, and ".." is a link to the parent directory. This should at least least be true after an mkdir operation. When you issue the mkdir() system call, it should make the directory and the "." and ".." before it returns. The mvdir command must make a new link from ".." to the parent directory, this is not a kernel task. The SVID manual also states, that neither the old or new directory may be a subset of the other. This must be checked by mvdir. The kernel should check that the link is possible, i.e. the files are on the same filesystem. And by the way - yes you can have several links to a directo-- ry, though this is normally not wanted. So the approximate code for the mvdir command is something like this: mvdir( old, new ) check uid == 0 check that old is not a part of new check that new is not a part of old link new to old - if this fails it's probably diffent file systems link the ".." to the parent of new. unlink old. Note also, that the rename() system call, should be able to rename a directory, but not to move it. I guess I have said enough for now - and that it makes some sense. I do have one question though: Is there a reliable ftp-mailserver out there? I can't do ftp, and I would like to join your effort to make a PD real operating system. Kind regards Kurt \/\/achmann, M.Sc. EE/SE --[0034]-- [0035] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/11/91 04:27 (76 lines) Subject: Re: More answers Date: Mon, 11 Nov 91 04:21:55 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: Linus Benedict Torvalds Cc: Linux-activists@joker.cs.hut.fi In-Reply-To: Linus Benedict Torvalds's message of Sun, 10 Nov 1991 18:09:31 +0200, Reply-To: tytso@athena.mit.edu Date: Sun, 10 Nov 1991 18:09:31 +0200 From: Linus Benedict Torvalds darken.@cs.yale.edu: > 1) mv doesn't seem to move directories properly. It looks for > something called mvdir and dies. I want to fix this right away, > so I'm goin to start working on it unless one of you drops me a > line and explains what stupid thing I've done. This is a possibly deficiency in the linux kernel. I don't allow links/unlinks to directories, as keeping track of the parent is too much work. I /think/ it's impossible to allow a hard link to a directory, but I'm not sure. Anybody with ideas is free to mail me. Actually, some friends and I spent a lot of time discussing the very topic tonight. What we basically got out of it was this: 1) Allowing links and unlinks to directories are a bad idea; it can potentially completely ruins the fundamental assumption that the filesystem is a tree. 2) The right way to do this is with the (as yet unimplemented) rename call. However there are a number of interesting locking issues that come when you try to implement this cleanly. There are a couple problems which rename has to check. If it is moving directories around, then the source directory must not be a parent of the destination directory. (If it were, there would be no way of referencing that part of the filesystem after the rename.) It could check to make sure this was the case, but unless you actually lock the directories against another move, there could be a race condition which could cause the source directory to be a parent of the destination directory after the check but before the actual reaneme operation, and bad thing would happen. There are also other race conditions (not as sexy) that happen when two processes try to rename a directory at the same time, and when an rmdir attempts to remove an otherwise empty destination directory. We talked about trying to fix this problem by adding a minimal set of locks which would be required. One included just using a top-level lock on the rename system call, so that only once process could call the rename() call at any one time. This solved the problem, but at the cost of losing parallelism for the rename call. We also discussed some other designs, such as locking up to a common ancestor in the tree, which might also work. ------------------------------------------------- Speaking of hard disk corruptions, I've found an easy way to get Linux to corrupt the hard disk. Simply follow the following instructions: 1) Copy a large compressed tar file (I used snapshot 312 of gcc20.tar.Z, found on dg-rtp.dg.com) to your linux disk. I used kermit to get it over to my PC and mcopy to get it over to my Linux partition. 2) Run "compress -d < /tmp/gcc20.tar.Z |tar xvf -" 3) Afther this completes (it will take a long time), run fsck and notice that there are alot of unused inodes and zones which are marked as used, and one or two inodes which marked as being free, but which are actually being used to point data on them. 4) Do a "ls -lir" on the new directory created by tar. This will almost always cause the kernel to panic: freeing inode: already free. I suspect it has something to do with the extreme amount of cache thrashing that has going on because gcc.tar.Z was a huge file. I haven't had a time to look at it, but people should be aware that a problem exists. - Ted --[0035]-- [0036] daemon@ATHENA.MIT.EDU (Kurt Wachmann) Linux_Activists 11/11/91 08:06 (22 lines) Subject: About mvdir and linking directories Date: Mon, 11 Nov 91 11:35:36 +0100 From: kw@dde.dk (Kurt Wachmann) To: Linux-activists@joker.cs.hut.fi In reply to tytso@ATHENA.MIT.EDU: You can let the system call rename() do the trick for you, and forbid linking of directories - correct. If you forbid linking of directories, you see if one directoy is an ancestor of the other *by looking at the names*. That will take away your race condition for free. We do however still have to avoid concurrent directory moves from the same source directory - and into the old tree. open()'s etc. are ok (I think), they must be atomic, and will fail or succeed depending on how far the rename() operation has come. Kind regards Kurt \/\/achmann, M.Sc. EE/SE --[0036]-- [0037] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/11/91 08:36 (16 lines) Subject: Standard Conformance? Date: Mon, 11 Nov 91 21:33:33 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: Linux-activists@joker.cs.hut.fi G'day, In Makefiles, there is usually a choice where we can specify what system we are compiling the given sources, e.g. SUN, USG, SGI , SYSV3, SYSV4, etc,... My question is, what system is Linux conforming to? I read about POSIX somewhere, but what does that means? USG? SYSVR4? Thanks In Advance nicholas@cs.uwa.oz.au --[0037]-- [0038] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 11/11/91 08:41 (15 lines) Subject: floppies From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Mon, 11 Nov 91 7:37:55 CST Hi all, Yes, Linus, I did format the disks under dos. In fact I made a bootable and could not corrupt it with any kind of write action. Also tried 360k and 1.44 meg disks. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0038]-- [0039] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 11/11/91 08:55 (14 lines) Subject: more on floppies From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Mon, 11 Nov 91 7:52:51 CST Hi all, I also note that a known dos disk with files on it gives back an error with the usual stuff and a last line of mdir: Cannot initialize 'A:' -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0039]-- [0040] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/11/91 08:57 (55 lines) Subject: rename, file system errors Date: Mon, 11 Nov 1991 15:53:55 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi kw@dde.dk (Kurt Wachmann), tytso@ATHENA.MIT.EDU (Theodore Ts'o) et al: > Rename needed [rephrasing] Yeah, it'll be implemented. Hopefully not even by me :-), as darken-christian showed some interest. I'll do it if nobody else does, but it will take some time. Currently you can always use "tar" and "rm -rf" to move a directory (but look out for a full filesystem). There are quite a few problems with rename, most of which have been mentioned here (and that's why I left rename unimplemented :-). I wouldn't say checking the filename is a good idea: it breaks when linux gets symbolic links. I think the easiest way is to move downwards from the "to"-directory via ".." until one hits root (or a mount-point) or the "from"-directory. It shouldn't be hard, it's just SMOP. tytso@ATHENA.MIT.EDU (Theodore Ts'o): > Speaking of hard disk corruptions, I've found an easy way to get Linux > to corrupt the hard disk. Simply follow the following instructions: [ "Nice" little script deleted. ] Happily, things aren't that bad (I think). I don't think it's a buffer-cache problem (which is hell to find - lots of race conditions etc. I kno - I had those kinds too), but a problem with handling "out of disk space". That's still bad, but easier to spot. Could you (tytso) check if the partition filled up? It's probably a bug in one of tha namei.c-routines which want a new block, and crap out if they cannot get it. I'll look. I just tried copying my gcc-1.40 directory using tar, and it moved 9MB of diskspace quite happily from one drive to another (ok, it took a while, but no fsck errors). somebody (my mind is going..): > Do I use USG, SYSV or what when porting? I've used USG/SYSV when porting everything, and have had no real trouble. The biggest trouble in minix when porting was with the bad "termios" (ie minix has no such thing). Linux has a relatively complete termios, so that's no problem (and termio also works). Thinks that need very SYSV specific things like shared memory or whatever, are of course not currently possible to port easily. Linus PS. I'm still wondering about the floppy drivers. Has nobody else had any problems with them? I haven't had an IO error in ages, and it seems a bit weird as the floppy interface should be relatively similar across all PC-clones. Oh, well, I'll look into it. I hope it isn't some timing problem (which are "somewhat" difficult to spot). --[0040]-- [0041] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 11/11/91 12:58 (17 lines) Subject: C-Compilers on a 2Meg-Machine Date: Mon, 11 Nov 91 18:54:57 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! I recently ported CvW's C386 to Linux. I can do development on a 2Meg-System too. (BTW Linus, that caused the gcc-errors..) But C386 is non-ANSI. Now are we a) Giving it an ANSI front end ? (any gurus out there?) b) put an #ifdef _STDC_ in all includes c) Forget about the 2Meg-machines (NO, PLEASE NOT:-() What do you thinnk about it ? Robert Blum --[0041]-- [0042] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/11/91 13:55 (47 lines) Subject: Re: C-Compilers on a 2Meg-Machine Date: Mon, 11 Nov 1991 20:49:07 +0200 From: Linus Benedict Torvalds In-Reply-To: Robert Blum's message as of Nov 11, 18:54 To: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum), Robert Blum: "C-Compilers on a 2Meg-Machine" (Nov 11, 18:54): > > I recently ported CvW's C386 to Linux. I can do development on a 2Meg-System > too. (BTW Linus, that caused the gcc-errors..) Wow. Things are moving along... > But C386 is non-ANSI. Now are we > a) Giving it an ANSI front end ? (any gurus out there?) > b) put an #ifdef _STDC_ in all includes > c) Forget about the 2Meg-machines (NO, PLEASE NOT:-() a) Not very easy (mild understatement). b) I *HATE* unclear include-files c) No way. I'd like to propose a following change to /usr/include/*: Add a directory "/usr/include/non-ansi", and to each file (example ctype.h, cdiff type adding): #ifndef _CTYPE_H #define _CTYPE_H + #if !defined(__STDC__) && !defined(__GCC__) + #include + #else ... old ctype.h unchanged (except for the bug-fix, see below) + #endif /* __STDC__ */ #endif /* _CTYPE_H */ That way we can keep the non-ansi headers distinct. Anybody got something against this? I'd suggest Blum do all the hard work :-) and set cdiffs somewhere? No? The non-ansi files could be a part of the C386 package, and not everyone would need them. At the same time you can correct a bug in ctype.h (I don't remember who noticed this one, but it sure wasn't me): tolower has a '+' where there should be a '-'. I never used it, so I never noticed. Urgh. Linus --[0042]-- [0043] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/11/91 14:06 (35 lines) Subject: shoelace patch#3: put environment ptr where linux can find it. Date: Mon, 11 Nov 91 10:58:22 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi I know, I know. Three patches in 24 hours... I plead end of term instability. The following one line patch puts the environment offset relative to the shoelace corpse which is located at segment 0x80000. Thus, an offset of 0x1234 would put the address of the env at 0x81234. This offset is stored at location 0x90506: ie. in the word before the root device word (508) in the bootsect.s corpse. By including the shoelace header file shoeconf.h, the linux kernel could now read in any of the environment variables it wanted (including scr_cols and scr_rows ;-) BTW: Given Bruce Evans comments about shoelace:fsck ties to minix, we may wish to remove it from the code. Who wants a facility that only works with ~20Meg or less partitions anyways :-) pmacdona@sol.uvic.ca --PULL_TAB_HERE ------------------------------- *** shoe.c.bad2 Thu Nov 7 09:33:34 1991 --- shoe.c Thu Nov 7 09:45:28 1991 *************** *** 650,655 **** --- 650,656 ---- else *myptr = 0x21c; } + *--myptr=(unsigned int)SaveConfigPtr; Linux = 1; LoadPoint = 0x90000; bpinx = 0; --[0043]-- [0044] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/11/91 14:18 (82 lines) Subject: Re: rename, file system errors Date: Mon, 11 Nov 91 14:12:19 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: Linus Benedict Torvalds Cc: Linux-activists@joker.cs.hut.fi In-Reply-To: Linus Benedict Torvalds's message of Mon, 11 Nov 1991 15:53:55 +0200, Reply-To: tytso@athena.mit.edu Date: Mon, 11 Nov 1991 15:53:55 +0200 From: Linus Benedict Torvalds gets symbolic links. I think the easiest way is to move downwards from the "to"-directory via ".." until one hits root (or a mount-point) or the "from"-directory. It shouldn't be hard, it's just SMOP. Well, the problem is that another rename() could be happening while you are traversing up the tree (towards the root) checking to see if you hit the "from" directory. The simplest case where you will have a problem is if rename(/a/b, /a/c/d) and rename(a/c, a/b/e) are running in parallel. Another problem is that two rename()'s could try to move the same directory to two different places. Now, locking takes care of this quite nicely, but the interesting CS question is how little locking can you do and still be make things be "correct." Or, is there some way that we can finesse the issue without using locks? tytso@ATHENA.MIT.EDU (Theodore Ts'o): > Speaking of hard disk corruptions, I've found an easy way to get Linux > to corrupt the hard disk. Simply follow the following instructions: Happily, things aren't that bad (I think). I don't think it's a buffer-cache problem (which is hell to find - lots of race conditions etc. I kno - I had those kinds too), but a problem with handling "out of disk space". That's still bad, but easier to spot. Could you (tytso) check if the partition filled up? It's probably a bug in one of tha namei.c-routines which want a new block, and crap out if they cannot get it. I'll look. No, my partition didn't fill. Originally I tried it with a partition size of 65535, so I had lots of free space. I then tried it with "mkfs /dev/hd3 32768"; the problem still happened. The second time, I noticed the following things: * /etc/fsck reported that the disk was completely happy before I ran "compress -d < /tmp/gcc.tar.Z | tar xvf -" * During the untaring process, there was at least one time when tar printed somthing like this: ./stbout.h tar: Cannot change owner of stdbout.h: ENOENT tar: Cannot change modification times of stdbout.h: ENOENT tar: (One more error message which I don't remember): ENOENT This tends to indicate that the file just disappeared after tar closed it, so it couldn't adjust the ownership and mod times. Perhaps a directory update is getting lost? * After tar finished, I sync'ed the disks and tried running /etc/fsck again. This time, it reported 10 "Inode not in use, nlinks=0, counted=1" errors for 10 consecutive inodes starting at #82, and 9 "Inode in use, nlinks=1, counted=0" errors for 9 consecutive inodes starting at #143. This persisted after I logged out and reboot the system. * Upon reboot the disk statistics which were printed were: 12876/32768 free blocks 10461/10930 free inodes 1500 buffers = 1536000 bytes buffer space free mem: 14680064 bytes * If you run a "ls -l" on the directory into which tar placed files (where stbout.h disappeared), you will get a kernel panic: "free_inode: bit already cleared". I wonder if the problem is due to the fact that I was using the same drive for both source and destination for the "compress -d | tar xvf -" pipeline. I did notice that it was very slow, presumably because there was a lot of buffer thrashing going on. - Ted --[0044]-- [0045] daemon@ATHENA.MIT.EDU (Lars Wirzenius) Linux_Activists 11/11/91 14:49 (41 lines) Subject: Header structure for mixed Classic/ANSI Date: Mon, 11 Nov 91 21:45:18 +0200 From: wirzeniu@cs.Helsinki.FI (Lars Wirzenius) To: linux-activists@joker.cs.hut.fi Linus: > Add a directory "/usr/include/non-ansi", and to each file (example > ctype.h, cdiff type adding): > > #ifndef _CTYPE_H > #define _CTYPE_H > + #if !defined(__STDC__) && !defined(__GCC__) > + #include > + #else > > ... old ctype.h unchanged (except for the bug-fix, see below) > > + #endif /* __STDC__ */ > #endif /* _CTYPE_H */ > > That way we can keep the non-ansi headers distinct. Anybody got > something against this? I'd suggest Blum do all the hard work :-) and > set cdiffs somewhere? No? The non-ansi files could be a part of the C386 > package, and not everyone would need them. Wouldn't it be easier to make two header trees: /usr/include/ansi /usr/include/classic and either use the -I option to select which tree is used, or put files like this: #if __STDC__ == 1 /* not: not just ifdef; see comp.lang.c FAQ */ # include #else # include #endif into /usr/include. This would IMHO be more neat than your proposed solution. --[0045]-- [0046] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/11/91 16:12 (153 lines) Subject: Weekend hacking and other randomness... Date: Mon, 11 Nov 91 16:08:15 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: Linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu Over the weekend, I've managed to put together some stuff which other people might find useful. First of all, I've managed to build GNU diff, GNU sed, Larry Wall's patch and tr. They pretty much built without needing to make any changes --- the only real problem which I encountered while trying to build them is that the configuration progam which you need to run to build sed itself wants to uses sed to build the Makefile. Oops. :-) In any cases, if anyone wants to just snarf the binaries, they can be found via anonymous FTP on TSX-11 in /pub/linux/binaries. If you want to submit some something Linux-related for the FTP site, you can put the file(s) in /pub/incoming and send me a quick note describing what you left there. -------------------------------- I've made a quickie change to the tools/build.c program so that it can optionally take a fourth argument which specifies what the root device should be. Add to that a definition in the makefile for $(ROOTDEV), and customizing kernels for a particular system becomes a snap! Since the patch isn't that big, I'll include the diffs at the end of this message. ------------------------ Other comments; maybe I'm doing something stupid, but I can't seem to get mtools to want to write a file from Linux land to MS-DOS land. The other way works fine, but when I try something like "mcopy foo.tar c:foo.tar", the program just returns to the prompt without actually performing the copy. Another bug: if you do "mcopy c:foo.tar .", the file which will be created in your directory will be "???.???". So you can't just specify a unix directory as the target; you actually need to give the name that you want in the directory or the name will be unrecognizable. This also happens if you try "mcopy a:*.* .". Final problem: the program will hang if the destination file already exists; you need to control-C out of it when this happens. ---------------------------- Also, trying to compile RCS for Linux apparently tickles a compiler bug in gcc. When you try to compile ci.c, gcc gets an "unrecognizable insn" error. When I mentioned to a friend of mine who is a gcc expert, he was a bit surprised because he thought all of these bugs had been fixed in version 1.40. His suggestion was that I should try compiling GCC 2.0, which led me to discovering the filesystem corruption problems. (Which are very repeatable, by the way; I can start with a newly mkfs'ed partition and corrupt it just by untaring GCC 2.0.) Another problem which was uncovered by trying to compile RCS: In sys/wait.h, the definition for WIFEXITED(s) is missing a close parenthesis at the end of the line. ------------------------ That's all for now.... the patch tools/build.c are below. - Ted *** build.c.orig Sat Nov 9 21:50:51 1991 --- build.c Sat Nov 9 22:23:13 1991 *************** *** 17,24 **** --- 17,27 ---- */ #include /* fprintf */ + #include #include /* contains exit */ #include /* unistd.h needs this */ + #include + #include #include /* contains read/write */ #include *************** *** 25,30 **** --- 28,36 ---- #define MINIX_HEADER 32 #define GCC_HEADER 1024 + #define DEFAULT_MAJOR_ROOT 3 + #define DEFAULT_MINOR_ROOT 6 + /* max nr of sectors of setup: don't change unless you also change * bootsect etc */ #define SETUP_SECTS 4 *************** *** 46,54 **** { int i,c,id; char buf[1024]; ! if (argc != 4) usage(); for (i=0;i To: linux-activists@joker.cs.hut.fi In-Reply-To: Robert Blum's message of Mon, 11 Nov 91 23:56:40 +0100 <9111112256.AA17302@messua.informatik.rwth-aachen.de> I try to keep track on Linux at nic.funet.fi, but help is welcome ... After some thinking, I changed Linux FTP directory structure to be more understandable (just check nic's Minix directory /pub/minix !-) nic.funet.fi:/pub/OS/Linux kernel has kernel kits and device driver add-ons. images for all image files. bin binaries to /bin and /usr/bin tools binaries not usable for 'common' user. doc documents and man-pages. lib /lib and /usr/lib libraries. xtra stuff not in previous categories. Comments are still welcome! I try to keep "ls -laR" listing in file 'ls-laR'. Informative README file is at main level. Fixes/suggestions to that are welcome. It is possible to "put" with FTP your fixes and add-ons to the main Linux directory - they will not be available/readable after putting ... not until I enable them (I try to find right place for them - still mostly to 'xtra' directory). arl --[0048]-- [0049] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/12/91 01:48 (45 lines) Subject: Re: Weekend hacking and other randomness... Date: Tue, 12 Nov 1991 08:39:35 +0200 From: Linus Benedict Torvalds In-Reply-To: Theodore Ts'o's message as of Nov 11, 16:08 To: tytso@athena.mit.edu, Linux-activists@joker.cs.hut.fi Theodore Ts'o: "Weekend hacking and other randomness..." (Nov 11, 16:08): > Other comments; maybe I'm doing something stupid, but I can't seem to > get mtools to want to write a file from Linux land to MS-DOS land. Urgh. I should never have included the mtools package :-). The problem is that the root-diskette filled up, and mcopy is just the front-end for other programs. mwrite, which actually writes to msdos, didn't fit. The only reason I had even those small mtools programs was so that linux wouldn't be a closed system in the way the minix demo-disk is. I don't like the suite very much, but as I didn't think of tar ... > Also, trying to compile RCS for Linux apparently tickles a compiler bug > in gcc. All bugs are probably of my doing :-( I've hacked the machine description to add the string instructions, and that's probably the thing that wen't wrong. Another problem with gcc-1.40 for linux is that it sometimes can give up while optimizing. I don't know if it me again, but this time I think it's the soft-float: gcc runs out of registers when optimizing. It hasn't happened wery often, but it's very confusing when it does happen. I hope 2.0 has a corrected soft-float, so that there is no need for hacking on that too. Re: file-system corruption: You were right. I think I've found the bug, and will send out corrected "buffer.c" sometime today. Hopefully that cures the problem. First kernel patch for this version: not too bad. I haven't found the floppy driver problem yet, though. And lastly: Everybody out there making changes to the kernel, please stand by for the next kernel update... It will probably be in early december, and I'd suggest you mail me any cdiffs for the kernel before the end of november, so that I can try to incorporate them into the new version. 0.11 will not be a major upgrade, just some minor fixes + the ability to handle other screens than VGA. If things work out with rename, that might be incorporated :-) Linus --[0049]-- [0050] daemon@ATHENA.MIT.EDU (Bruce Evans) Linux_Activists 11/12/91 10:15 (36 lines) Subject: Re: Header structure for mixed Classic/ANSI Date: Wed, 13 Nov 91 00:28:25 +1100 From: Bruce Evans To: linux-activists@joker.cs.hut.fi, >Lars Wirzenius writes: > >Wouldn't it be easier to make two header trees: > > /usr/include/ansi > /usr/include/classic > >and either use the -I option to select which tree is used, or put No. Who adds -I to 1001 makefiles? Who keeps all the versions up to date? There probably have to be minor variations for classic-compiler1, classic-compiler2... I use _P((arglist)) to hyde prototype args and don't think it is particularly obscure. >files like this: > >#if __STDC__ == 1 /* not: not just ifdef; see comp.lang.c FAQ */ ># include >#else ># include >#endif It's not clear what happens to the header names if the user has maliciously #defined ansi, classic, foo and h :-). I think something like #include <__implementation.h> is required in many header files. Just deciding what is quasi-STDC takes a lot of ifdefs. Bruce --[0050]-- [0051] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/12/91 10:17 (11 lines) Subject: Maths library? Date: Tue, 12 Nov 91 23:09:03 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: Linux-activists@joker.cs.hut.fi G'day, It was mentioned that maths (software emulation I think) was available? I don't seems to be able to get maths working. Thanks In Advance nicholas@cs.uwa.oz.au --[0051]-- [0052] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 11/12/91 12:05 (22 lines) Subject: Header structure for mixed Classic/ANSI Date: Tue, 12 Nov 1991 19:00:30 +0200 From: Ari Lemmke To: bde@runx.oz.au Cc: linux-activists@joker.cs.hut.fi, wirzeniu@cs.Helsinki.fi In-Reply-To: Bruce Evans's message of Wed, 13 Nov 91 00:28:25 +1100 <9111121328.AA08248@runxtsa.runx.oz.au> >Bruce Evans writes: >>Lars Wirzenius writes: >> >>Wouldn't it be easier to make two header trees: >> >> /usr/include/ansi >> /usr/include/classic >> >>and either use the -I option to select which tree is used, or put > >No. Who adds -I to 1001 makefiles? No problem if we just used imake ;-) arl --[0052]-- [0053] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/12/91 14:57 (135 lines) Subject: corrected buffer.c Date: Tue, 12 Nov 1991 21:47:49 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Ok, here's the new buffer.c-file, hopefully correcting the bug which caused file system inconsistencies. NOTE! This file is NOT official, and won't be used as a starting point for future kernel cdiffs. Thus save the old buffer.c before using this. It's just a temporary bug fix before a real release (which should come out in December). Hopefully these kind of rather urgent bug-fixes won't be too usual. The changes are mostly to "getblk()", and are not final: it's a bug-fix, and I'll have to tweak it a bit more for the real version. The current version works fine, but it's a bit overzealous in trying to avoid reclaiming dirty blocks: with this kernel patch the buffer-cache VERY easily fills up with dirty blocks, at the expense of ordinary ones. Thus "sync"ing is even more important with this fix: the dirty blocks are kept around longer (too long in my opinion) with this routine. Linus (torvalds@kruuna.helsinki.fi) PS: Re: Math libraries. There aren't any. When I talk about gcc soft-float, I'm just talking about the general idea - I haven't implemented (or ported) any real math functions. The only floating point math that gcc currently knows about is add/sub/neg/mul/div (and only for doubles, not floats). Gcc in the original 1.40-version cannot handle soft-floats correctly: linux gcc has this corrected (thanks mainly to bruce evans), but not used very much. There might be stubs for sin/ln etc in the library: they should just return 0.0, and are there (if they are) to get gawk to compile (and yes, it works - kind of). If you do find routines for floats you can use (and they are available out there), you can add them to the library with "gar d libc.a stubs.o" (remove old routines) "gar rs libc.a sin.o ln.o ..." ------ snip snip ------------------------ begin 644 buffer.c.Z M'YV0+U0H *$"! @V:=S4P?/"S)P78NJ8,5-&CHLQ P42-(AB2 H0,7+DB&&0 M2<(Z2/'3A@V9.9D?*% 0<",!D]$G%CQX@D0:=K 85.F31DW=%+205,& MQ$Z*B$80'BC1G);^K(F5,F!>N(D1/.H5,FS%ZBAA,F+BWY M)5$Y(,B\ 4HGK),G5(J$ !$D94+>6-4 M,L(6N]. H!VGSM'/*IF;MZ]="Q751ECK"&:'#C-011H+7@EE7%@J<04 M;?.A$1M,3C75&1W[&<5&7_6E42!K2\5V!AJ;)0&"A7#4YL),-=VTT7/134<% M4_L!E9)73:$UQQ@LH884"&Z\P=N*%96A@V1,%2C<56R\ 0<<:921DADLX>2C M@9-5%M:-:5B7TATX-I7656FE)-=NK*FX5$)KL!:&=9'-86$=,.&4D$L(H79D MEV?H!:64<.31PI8/#@@6C J,D- 8;-21%P@\[(::'&>X@(8/ S7Z:*23\H"0 M0@P!Z889:62ZJ:=:@=J4J"NQ4U+*[%AHKL"UT-J\"&%7UW'0A'D;&# KLYMA5F/,GQ!5.^;;2; M?G1\\51%(/2P6;AUC/NNN>CNI<)')G3[+;WV9E;1N;WIN^*<:'RAFAA$;>&$ M%%\@$<042'3QKVIG)N+&XD:FVAQK? %P M9 5]'-Z9\CI1!1-,?+OMPU\(48411@@V1;P@P/ MN!BOG-"H3=EQUUXWM^N5 MNP++@<+,Y$(%LL%BH)&" GLHD "D::"0PK<)D)D&49N%W8(/8IC\1H%C)Y" M@G/!\857*)@@-]U?5+VVV?&I_6T?-6V[[!PRYZ$5"E+C-7;9"6R;!MM+0MB'ZYW& M:^.C,7?=: 6?M][H?2'''>Y&62 *5TB11'37B\TVXPG8#QUD\QVE*8!Q"G < MZ;Z0%SL<;T@-O)S9-,:(Z7O.FEP7D0@U[1 MI' TYJ6A>OW+'@BV=[ZXJ8]P#01!".050;/IS52'L0_;N.>]J]TK?>7+'/H& MQ[XRV"%>/'0B"$Q@ J?4[@-*+G-Q !CVY M@4]X28V5ZH(>W$5E*@-JP5$X5"7K?&.0A'3\V1$$J8HZ/BH$=0 M7G'G8[RBF!.T(39(^0M.+E=E-Y (1VT8&P$P0F-I$,=-I2H#B>2C&SV@Q1WODE,K7&# M.XLWJ"EUDT16P4MO=)35MD2&,GWQ#5K4XH:7I+,H;W )PYI2R@(=RHDB:LH= MWL8&$*"D*6^59TUQR0*[4T#E]J++F&WI"\E\8&1ZB#D*(LZ"'LM:!FNV MP9HH<3--"((2GB %%$10A_*2P?M:"2RV-; '34C"<[K[W2K" \PF,$.$M Z MMU6EKH5J:%I^0!#>"3($LATF\F;U7!C P8 +H2L(Z M-@]H4Z@"% 1CPNP%$GU;>\S &KN&+:2A"RZ 7 [=BX>)Q#<%FNRAWA( AYK* M3,1:FP..OU@@$Z-8Q8ED6QL_*$DYR'$S=#3A'54H/1?"T(^ -!^(+[GBI+78 M#"\&+R+MH$@@GL21/H2D$;-&R0]O9I XE"*+73R#CVARRXJ\Y&,"Y*>FR(O* M68R,@\V(P!'D!57] <&Y$&8&-QC8#M>SWQH^@H)&9\6@9^@/&5)P:"^0. 4I M* '0)$:QL?FY#(#&)\(.G6@P?J28"5M8PP9MIT*3^M)=J,FZ,K88J(%@N(>] MZ%N^,#+V?*$^9;"/ZCHGW<]15X*MZU!BF]+K-AS,3BT MGWZ.\$E7O$+_<%# M*'UXR6S3@9!PV$\F/4FX<#N1;9:\MKFYS&UUBYN0WD9:MS>$;O2A&LU-1/0E M2>P&.;CYSF+SX;VI[,3^$9+?_I;WM;W]K60C5I_-O@K)#A(FFOD7?2' ]Q?6 MS6N2?80/?-"AQKW=\;E@VH=PH(R(4" "(TR]B*!\E^3XR.8" M[PV5W,[DKAO)=P[FWBW@XYM MI),,EDQ3F<:>ALM;3VTQM F>Z9#RAE_;1]A;@ZXUIWMULMFD(#7^:V2ZU9K7 M$#WF%F?CT;7-='EEO>)"=O?3_VYXDE%]-TZW ]3-=GC(EWOI22?IHO]U,KSE3,173P,A2V^B11YK.>);XGFM; M]SOK6;4W$P*"LUMOY'5#[S6_(:0-_-H--#CA$%Z^YW^RX/M6=+_=/'K!^_[; MEY=BYP\HZZ9IC-@8-#::F%EDY6Z9-=NZ--GT]MR6S5W]=!"*Z"BQ,1]AD WYA#IF4DL%(X,P M@GY>HWZ!TBZHIC!AL%CN%WVVXQ2*)D%[(W>>4S :M'\CM ,[$&77A0(9%S8] M &ADT'X!6(HGIX$)!BQ^$7Q#=$E ,EK5\TC=8S7@&41'+M!=050:18E#Z%!&)H6QO M42L9H3=,( 14 !(QX (Q,)4C 2.?%FH@( 1!0 1_,053@$1GAD2?E&<\P ,Q MD (K0):$4XI,8W^I&#(@@(YL$$;;$GWQYY:8@XD#@W]"P1K4M33[T2*IH0/# MESY(LXFLEFJ?2!2OIHL^M(':F $V'AS\7AT8%[+04/H4X'(A5';-F->IA!% M%XO%AR(@MY5=^95AV7\IP -5B$F9EFPSBM,U8A,!TD^#:2U11\$QI5\R1TE5DD5D]&(0:H MTQ=$22%AB :!USHO,86'J$^")2@B\%8B0(I)>#L(215,$1;%Q5#!%8NVB(O8 M!YEZ4Z#OB:"M\P1+P!I&H%Y!P#-9 !Y-T5IO\%I^98[WTE#$$5$I%6@JE18G MD!)KD! 126TDRDR@E1MTD*66I1 0&3>?.5K)8QMEJFB",CYV4R!K&I3NT1O? M<:,"BA0]$ /+AT7!DSQ]^@5SACK2!*@>^' ETVQN%VQ64F:X!X$]T$"!>H$D MAFY?41'M\=3Y5\I&*5A=@FGQ*45)9$Z:P@13WR!T%D19AD02$ MB(TI88! \1K$ 7/AD1)9,86-60; 11-\B2^I2JT%$XH%EY>F9G>G>*KI%[#: M>)BSB 8]0)=AE(NFUJLIYP8K)P*C6C!+(K&'!:N2]HL\PP5NH*R'*6>00:B\ M\:JN-)FCQ&-A) 5%T)6JM*Q%1*OB@Y[I1DB#6FBHTB*WP( M)((@0(ZWH:_%D8T%)5-J,H6.^%=,]8->81S^M!QMH!\&8B0X$A>*=B6C,85/ M,B=*BAYA401@2ASZ<09U8!1#HG7@D18HJ6YV8W?!HX^5)QF([G=XKR56SZS M>IX FI[7-KXK&YE&&[2D6@:.NH$H8("'$ZIG]S$!10V:XMB^;@08KD)8? 8O0)WZO)'!E&3Q((V$)<&WRF\9#=&W?NF=F3#@" M#'1J?&U5 WR\-\="UWPY XQ\O''BIL?"IS?0EQJ7 <23@1Q<+ 9O''J,MR(M MP*>!O'ESX7Q?_,;%Z$//DT=&L\E2IL1O%L3Z\A'O=<,1%F%Q]L);;,IX$ 2I M+&$ I#[T.V&?5W4<_$8?;,N7"7KA)WF17%UK[)R1+)U'5F$[<$*;-C%(D,P> 09L@(XXF+Y6,] (('E * ,N7 end --[0053]-- [0054] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 11/12/91 15:34 (8 lines) Subject: UseNIX BoF? Date: Tue, 12 Nov 91 15:26:11 -0500 To: Linux-activists@joker.cs.hut.fi From: John T Kohl If any of you are going to be at UseNIX in SF in January, perhaps we can arrange a BoF session to chat about Linux? John --[0054]-- [0055] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 11/12/91 21:00 (18 lines) Subject: startup file From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Tue, 12 Nov 91 16:59:07 CST Hi all, Can there be a startup file for bash ( I never heard of it before Linux ) and if so what is its name. I wrote a date function that prints current date instead of Ok. after the kernel starts running. Could post a diff tommorrow if some one is interested. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0055]-- [0056] daemon@ATHENA.MIT.EDU (Mika Matti Jalava) Linux_Activists 11/13/91 03:49 (14 lines) Subject: Re: startup file From: Mika Matti Jalava To: linux-activists@joker.cs.hut.fi Date: Wed, 13 Nov 91 10:45:22 EET In-Reply-To: <9111122304.AA14190@joker.cs.hut.fi>; from "Patrick L. McGillan" at Nov 12, 91 4:59 pm Hi, > Can there be a startup file for bash ( I never heard of it before Linux ) > and if so what is its name. It's .profile in your home directory, or in this case (you can only be root) it is /usr/root/.profile Mika --[0056]-- [0057] daemon@ATHENA.MIT.EDU (nicholas@cs.uwa.oz.au) Linux_Activists 11/13/91 04:33 (28 lines) Subject: Re: Diversification of development To: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) Cc: linux-activists@joker.cs.hut.fi, nicholas@munnari.oz.au In-Reply-To: Your message of Mon, 11 Nov 91 23:56:40 +0100. Date: Wed, 13 Nov 91 17:26:33 +0800 From: nicholas@cs.uwa.oz.au G'day, On the previous mail you mention -----------stuff deleted---------------- I then take these things (sources and/or binaries) and make them available on tupac-amaru in a directory called beta. If the Linux community -----------stuff deleted---------------- I don't see any directory? Another thing, I proposed to torvalds@cc.helsinki.fi to have a TODO list so that efforts are not duplicated in porting software. I have not heard from since. Is it possible to maintain such a list, for example, I have ported bison, anyone interested? I am trying gawk but the maths library? Is anyone working on it? If there is a list, I would know whether to develop the maths library or wait for someone to finish OR help that person. Regards nicholas@cs.uwa.oz.au --[0057]-- [0058] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 11/13/91 06:30 (57 lines) Subject: FTP server changes and a TODO file Date: Wed, 13 Nov 91 12:28:16 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! I currently did some changes to the directory architecture of the FTP server at tupac-amaru.informatik.rwth-aachen.de It contains now the following directories doc Documents concerning Linux, installation etc. images The image-Files binaries Binaries running under Linux ofiles .o files (Currently, the 16-bit things) installation Tools for installing Linux (Currently: rawrite) src/kernel Sources for the kernel src/utils Small utilities, currently fsck The kernel sources *DO NOT* contain Linus' new buffer.c (accidentally destroyed), so be *WARNED*. Using the current images or the current kernel sources for building a new kernel *MAY LEAD TO A CORRUPTED FILESYSTEM* I hope Linus mails me the new sources and images as soon as V0.11 is available, since I currently have no possibility to build a kernel. There are occuring to much problems with the non-ANSI c386, but this bist is currently migrating toANSI, so things will change, I hope. (Other way to change would be to upgrade to a 4Meg-Machine, but this would leave all those 2Meg freaks alone...). Last way for c386 is the ansi2k&r converter, but to use this thing, Linus must remove all inline-assembler from the includes, so I am waiting for his answer. In the meantime: has someone some real mean ANSI-Prototypes to test the prototypes implemented in c386? Now, following is a first version of a TODO-File which is also available at tupac-amaru (pub/msdos/replace is the linux-dir, BTW). I am awaiting your comments. OK, see you Robert Blum This files contains the status of several tools for Linux Currently ported projects: Name: ported by: available at bison nicholas@ec.uwa.oz.au ???? =============================================================================== Projects currently under development: Name: ported by: Remarks c386 blum@messua.informatik.rwth-aachen.de Is working under Linux Is currently teached ANSI. Any help on this would be appreciated. gawk nicholas@ec.uwa.oz.au Still needs a working mathlib. --[0058]-- [0059] daemon@ATHENA.MIT.EDU (Peter Busser) Linux_Activists 11/13/91 07:52 (20 lines) Subject: comp.os.linux? To: Linux-activists@joker.cs.hut.fi Date: Wed, 13 Nov 91 13:31:58 MET From: Peter Busser Hi! I got a silly idea. Just ignore it if it's beyond the capacity of your silly-mo-meter. ;-) Don't you think it is time to get a real newsgroup for Linux or is that too early? The traffic on the mailing list is more than we see in comp.os.misc or comp.os.mach or comp.os.xinu... We could reach more people this way, as there are net.people who still don't know what Linux is although they are interested in the subject. It seems that not many people read the comp.os.minix newsgroup, so the least we could do is posting some advertisements. Greetings, Peter Busser --[0059]-- [0060] daemon@ATHENA.MIT.EDU (Lars Wirzenius) Linux_Activists 11/13/91 08:45 (22 lines) Subject: Newsgroup Date: Wed, 13 Nov 91 15:43:22 +0200 From: wirzeniu@cs.Helsinki.FI (Lars Wirzenius) To: linux-activists@joker.cs.hut.fi Peter Busser : >Don't you think it is time to get a real newsgroup for Linux or is that >too early? The traffic on the mailing list is more than we see in >comp.os.misc or comp.os.mach or comp.os.xinu... We could reach more >people this way, as there are net.people who still don't know what Linux >is although they are interested in the subject. It seems that not many >people read the comp.os.minix newsgroup, so the least we could do is >posting some advertisements. I doubt a regular newsgroup would make it (yet), but how about a group in the alt hierarchy? Or at least I think they should be relatively easy to create (no voting etc). Of course, they aren't quite as widely spread, but perhaps they are spread widely enough? But I like the idea. -- Lars Wirzenius wirzeniu@cs.helsinki.fi --[0060]-- [0061] daemon@ATHENA.MIT.EDU (Michael Callahan) Linux_Activists 11/13/91 11:27 (21 lines) Subject: Re: Newsgroup Date: Wed, 13 Nov 91 11:23:22 EST From: michael@smectos.gang.umass.edu (Michael Callahan) To: linux-activists@joker.cs.hut.fi, wirzeniu@cs.Helsinki.FI I think it would be good to adjourn the discussion to comp.os.misc--if the volume keeps up, it will be apparent to the net.community that a separate newsgroup would be appropriate. (Note that it is generally considered bad form to try to create a comp group when there is not already sufficient *news* volume to justify it. This is not true of the alt heirarchy, but then many sites don't receive that.) On the other hand, how many people are on the mailing list? If it's a small group of people, a mailing list is appropriate. A periodic posting to comp.os.minix as well as comp.unix.sysv386 (yes, it's not system V--pity the name was changed from comp.unix.i386) might help more people become aware of Linux. Michael --[0061]-- [0062] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 11/13/91 12:22 (16 lines) Subject: news vs mail From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Wed, 13 Nov 91 11:17:36 CST Hi all, We for one, at this site, do not have a news feed. In order to stay with the program I need the mail group postings. On the other hand, down the road in the next six months, I will probably put a news feed up. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0062]-- [0063] daemon@ATHENA.MIT.EDU (Mika Matti Jalava) Linux_Activists 11/13/91 14:10 (37 lines) Subject: some problems From: Mika Matti Jalava To: linux-activists@joker.cs.hut.fi Date: Wed, 13 Nov 91 21:05:48 EET Hello there... I have a problem with a probably corrupted file system. The setup is like this: /dev/hd1 is the root device /dev/hd6 is mounted at /tmp both are 20M MFM disks. Now I recompiled the system today with the new buffer.c and also got the fsck program to work. The problems began when I fsck'd /dev/hd6 (no errors) and went on doing some compilations. A makefile happened to contain 'cc' instead of 'gcc' at one point. Of course I got the error message telling that cc can't be found, but immediately after that a kernel panic. Some message telling about some inode problem (sorry, don't remember exactly). Reboot. Everything OK, but now fsck /dev/hd6 gives dozens of errors of form Zone XXXX: in use, counted=2 Now I think something blew up. Should I try to duplicate the situation to get the exact error message when the kernel panics? Can the fs be repaired (it seems to be alive)? Then to another problem (it may be that I'm the problem, as I just don't know how to do it). Can bad blocks be marked somehow? I have a few on my root disk. Luckily they are currently all occupied by a file. Can't run fsck on root, though, as it tries to read them. Mika --[0063]-- [0064] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/13/91 15:53 (90 lines) Subject: The patch to buffer.c seems to work! Date: Wed, 13 Nov 91 15:49:09 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu Well, I tried compiling a kernel with the updated version of buffer.c, and it does seem to fix the problem of "compress | tar" corrupting the filesystem. It seems to work just fine! I was able to uncompress and untar 10 megs of GCC source without causing the filesystem corruption. Note that if you don't have the updated version of buffer.c, you can avoid the filesystem corruption problem by not running two or more processes at the same time which (1) doing disk I/O and (2) causing the buffer cache to thrash. So in other words, I could have avoided the problem by doing a "uncompress gcc.tar.Z" and then a "tar xvf gcc.tar", instead of connecting the two with a pipeline. I will make a patched kernel image available on TSX-11.MIT.EDU tomorrow morning; I will also try downloading it to nic.funet.fi and tupac-amaru.informatik.rwth-aachen.de. I will provide two versions. One will be a standard version which has the patched buffer.c, and one that also has a quick patch to the keyboard driver so that the caps_lock key acts like a control key. ------------------------------------ Peter Busser writes: >Don't you think it is time to get a real newsgroup for Linux or is that >too early? The traffic on the mailing list is more than we see in >comp.os.misc or comp.os.mach or comp.os.xinu... We could reach more >people this way, as there are net.people who still don't know what Linux There are lots of pluses and minuses of going to Usenet. Some of the pluses are increased exposure and getting allowing more people to find out about Linux. One of the disadvantages is that with more people comes more noise --- if we turned this mailing list into a newsgroup, I suspect that the signal to noise ratio would go way down, and the volume would go way up. Another disadvantage is that not everyone who has a mail feed can necessarily get a news feed. One possible way of solving the last problem is to use a newsgroup<->mailing list gateway such as the one which the Perl Users mailing list use to connect themselves to the comp.lang.perl newsgroup. It allows people who wish to get the mailing list to get digests which contain several messages bundled as a single mail message, and replies via either news or mail get getwayed correctly. I suspect, though, that the volume and the number of people on this list don't quite (yet) constitute enough justification to move to Usenet. It would probably be a good idea for people to mention Linux and the mailing list on Usenet, though, so that more do find out about it. Also, once Linus moves out of Beta test, another possibility is to distribute it via one of the Usenet comp.sources or comp.binaries newsgroups. -------------------------------------- Linus writes: >Urgh. I should never have included the mtools package :-). The problem >is that the root-diskette filled up, and mcopy is just the front-end for >other programs. mwrite, which actually writes to msdos, didn't fit. Well, I actually *like* the mtools package; it's awfully convenient for me to be able to read/write files from MS-DOS filesystems. Since I don't have a tar for MS-DOS, the only other way right now for me to transfer files from Linux to my MS-DOS partition is to tar them onto a floppy, take the floppy to work, read the floppy on my workstation in my office, and then go back home and kermit it over dialup. Not very satisfactory. :-) I suppose the right way to do it would be to introduce a VFS layer into the Linux kernel, and then have someone implement a DOS filesystem which you could mount under Linux, but right now I don't have the time to commit to a project like that. In the meantime, would it be possible for me to get the sources to the mtools package? You could either mail it to me, or drop it off via anonymous FTP in /pub/incoming on tsx-11.mit.edu. I'll make it available so that anyone else who wants to use it will be free to do so. In the same vein, it would nice if I could get a copy of the GCC machine discription file and other config files which you used to build GCC 1.40. That will make it easier for me to try to get GCC 2.0 up and running. - Ted --[0064]-- [0065] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/13/91 22:52 (35 lines) Subject: virtual consoles, shared text and paging Date: Wed, 13 Nov 91 19:47:57 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Following are the three things required before I would consider leaving minix: shared-text virtual-consoles 9600 serial Is anyone out there interested or working on these? I would be willing to take a stab at say virtual consoles ala Gordon Irlam, if I could get init/login/ttys from Ari Lemmke first. Comments? Next I want to babble about something I know nothing about: paging For those of us with small disks, devoting some of our precious space for a paging partition is undesirable. Which bring me to ask if we truly need paging at all. Is it possible/practical/desirable to try to page executables from the file system? A working set size could be established and when ram got tight, little used pages freed for data requirements. Maybe code blocks should only be loaded on demand? Perhaps on invocation, a map could be formed indicating where each block of an executable was on disk. Of course, if the image file were subsequently deleted, then you have a problem. Since I am as near illiterate on OS paging system designs as you can get, feel free to enlighten me. --[0065]-- [0066] tytso@ATHENA.MIT.EDU Linux_Activists 11/14/91 13:34 (9 lines) Subject: Re: startup files Date: Thu, 14 Nov 91 10:39:00 CET From: Wolfgang Thiel To: linux-activists@joker.cs.hut.fi Hi, there are as well different startup files, bash is looking for depending on whether it is called as a login shell or not. I could send you more information if needed (my bash docs are at home, not here!). Wolfgang --[0066]-- [0067] tytso@ATHENA.MIT.EDU Linux_Activists 11/14/91 13:34 (40 lines) Subject: About paging Date: Thu, 14 Nov 91 10:02:06 +0100 From: kw@dde.dk (Kurt Wachmann) To: Linux-activists@joker.cs.hut.fi One tiny question first: ************************************************************** * Any pointers to a working ftp mailserver?? I can't ftp!! * ************************************************************** About swapping/paging: I think demand paged virtual memory is a requirement for a real OS. No more crammed "just a bit better than DOS" OS'es, please! After all, disk memory is still cheaper than RAM. Peter MacDonald asks if it's possible to demand pages from the load-module: yes in deed. This is done in lots of commercial systems; one reason being the startup time for large applica-- tions; e.g. emacs :-). You only need a few pages of 4kb to start the monster. The system will seem much faster. For this to work properly, a few things are needed. For in-- stance, the code segment of the load module must start at a block boundary in the file system, eg. offset 2kb from the start. The file system must also be fast - pointers to physical disk locations should be kept in RAM - in this way, it will not be (much) slower than reading from a swap-disk. Of course the load module must be locked while it's being executed. I still think we need to be able to swap out data - think about running X-applications, with tons of data almost never being used. Kind regards Kurt \/\/achmann, M.Sc. EE/SE --[0067]-- [0068] tytso@ATHENA.MIT.EDU Linux_Activists 11/14/91 13:34 (17 lines) Subject: mtools Date: Thu, 14 Nov 91 11:02:52 CET From: Wolfgang Thiel To: linux-activists@joker.cs.hut.fi Hi, Has somebody been looking into the mtools sources? I had problems with it and BIGDOS partitions: mtools did not look for the NumberOfSec- tors at the right offset in the root sector. I now get the proper in- formation concerning NofTracks/NofSectors for my big DOS partition, but nevertheless, it is not working right for big sector numbers. After a lot of printf's in the sources I now suspect there is an error in the LINUX hd driver. Did somebody else had problems with big sector num- bers? By the way: 16 bit INT'ers will have problems with instructions like block = num >>BLOCKSIZE_BITS. This can lead to unwanted values if the high bit is set, if I understand the C definitions of right shift right. Wolfgang --[0068]-- [0069] tytso@ATHENA.MIT.EDU Linux_Activists 11/14/91 13:35 (49 lines) Subject: mtools, demand-loading, paging Date: Thu, 14 Nov 1991 13:22:37 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Hi again. Several people have inquired about mtools. The sources I used are available on nic.funet.fi: pub/unix/386ix/isc/source/mtools*. I don't know if this is the most recent version. And no - linux probably cannot read partitions >64MB. The reason is (partly) the minix file system. See later. Paging to disk has also come up: It will certainly be implemented (in fact one of the bigger changes in the 0.10 fs was due to making ready for this). There are no obvious problems with this, but unless somebody else wants to try to implement it, it will take some time (I'm talking March-92 at the earliest, probably not until summer). One of my problems is (will be) lack of disk-space to try it out on. As for demand-loaded executables... hmm. There are a couple of problems with this: the minix filesystem wasn't meant for it, and it would be MUCH easier to implement if BLOCK_SIZE was 4096 (= one page) instead of the current 1024. This of course means waste of disk-space. The problem with the minix filesystem isn't that serious: I'll have to move on to something else anyway - 64M partitions can be limiting for those who have disks big enough to hold them (and the afore-mentioned 64Mb limit even for direct read/writes.. This I can try to do something about). The more serious problem about demand-loading is that the fs isn't really designed for it - I doubt the locking mechanism used currently will suffice. If people would accept a non-locking demand-loading (ie you could write to the file while it's in use etc...) I could possibly try to implement it. Again - not until well into -92. And a little small sad note: I know I said symlinks would probably be in the next version, but unless I can get the higher priorities completed, this will be left for later. The things now relatively certain (barring acts of God etc) are: fsck, mkfs, badblocks, fdisk, non-VGA video and finally the correction to the serial drivers to change speed by the ioctl call. I'll look into extended partitions (fdisk will probably report them), but I doubt they will be accepted by the kernel proper until later. Linus PS. I try to answer all mail as soon as I get it, but I get MUCH mail. If you think the mailing-list has been active: think again :-). If you don't hear from me, I've probably forgotten to answer at once, and once your mail is in my mailbox, it's likely to be lost among the multitude. Re-mail your question, and make me feel guilty about not replying the first time: that's the ticket. --[0069]-- [0070] tytso@ATHENA.MIT.EDU Linux_Activists 11/14/91 13:35 (12 lines) Subject: FTP mailserver Date: Thu, 14 Nov 1991 14:31:39 +0200 From: Ari Lemmke To: Linux-activists@joker.cs.hut.fi kw@dde.dk (Kurt Wachmann): > Any pointers to a working ftp mailserver?? I can't ftp!! Not to be announced publicly ;-) try "mailserver@nic.funet.fi" and mail _body_ having "help". arl --[0070]-- [0071] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/15/91 08:28 (103 lines) Subject: True life story | FAQ how to install linux on hd Date: Thu, 14 Nov 91 21:47:28 +0100 From: corsini@numero6.greco-prog.fr (Marc CORSINI) To: Linux-activists@joker.cs.hut.fi In-Reply-To: Ari Lemmke's message of Thu, 14 Nov 1991 14:31:39 +0200 <199111141231.AA12016@sauna.cs.hut.fi> Hello happy lunixers, don't know if the subject is still under interest, but since the title is clear u can easily trash it. I'm not a Unix guru, nor a C guru, nor even a Msdos guru (but who cares), and I do not have minix. Ok, now about my hardware: a 386 sx, 2Mo Ram, 2hd one single bootable partionned Dos (120Mo) and a 2 partitionned 40Mo (8 for dos, 32 for linux). Drive A is 1.44Mo and B a 1.2Mo. To install once linux it took me 3days (36hours), to reinstall it a second time no more than 1/4 an hour :-)) So i think that the following menu might be interesting (for future linuxers), for others just have a look on (II.a.2 and III.): I. image to diskette -------------------- a) First of all get the minix demo-disk on plains.nodak.edu in pub/Minix/????/demo b) *don't forget* the rawrite.c program c) rawrite the demo_disk on a formatted diskette (if u have trouble like I had comment the error detection !!) d) get the linux image on nic.funet.fi or any other place e) rawrite them on /identical size/ diskette (either 1.2 or 1.44) f) choose a partition on (one of) ur hd(s) that's all for dos time II. unix for i386 .... ---------------------- a) boot on the minix demo disk PAY ATTENTION this demo disk can ONLY access to the 1st disk so a.1: if ur choosen partition is on hd0 (the first one) do mkfs /dev/hdX where X is in [1..4] the partition *UNDER MINIX* are ordered a.2: u silly choosed a partition on the 2nd hd (hd1) in that case u have to [thanks linus it was simple and efficient] 1) Mount the linux root Image -- if u use a 1.2 Mo drive do /etc/mount /dev/fdX /yyy where X is 0 for drive A and 1 for drive B -- if u use a 1.44 drive do /etc/mount /dev/PSX /yyy where X is same as above /yyy is the directory where u mount 2) then Perform a mkfs mkfs /yyy/dev/hdY where Y is in [6..9] THAT's all for minix b) boot on the linux bootimage, if all is fine (it should be), put the rootimage disk ok. c) now mount the partition: PAY ATTENTION under *LINUX* the partition numbering is NOT the minix one try a "backward" numbering i.e. either from 4 to 1, either from 9 to 5. d) copy the files/directories (easy, there is a bash script in INSTALL-0.10 on nic.funet.fi). III. How to change ur bootimage to access directly on hd -------------------------------------------------------- Simple if u take the C program in INSTALL-0.10 *AND* if u know that: the device number to use #define NEW_DEV is_partition_number_under_linux *AND* if u DO NOT COMPILE THIS FILE ON SUN or OTHER UniX Station OTHERWISE (* i was in that case *) U HAVE TO CHANGE SOMETHINGS *only the diffs are pointed out* in what follows (in french i would have said "inversion des bits de poids forts et de poids faibles") #define NEW_DEV 0x301 ---\ for DOS | / #define NEW_DEV 0x103 --- for SUN/ALLIANT/... [identical part deleted] if (0xAA55 != *((unsigned short *)(tmp+510))) |||| if (0x55AA != *((unsigned short *)(tmp+510))) [rest is identical] IV Enjoy this UniX kernel ------------------------- --[0071]-- [0072] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 11/15/91 10:56 (28 lines) Subject: FTP-Server tupac-amaru Date: Fri, 15 Nov 91 16:53:44 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! As arl pointed out in an earlier posting, there was no directory to put images or files in on tupac-amaru. This has now changed, so if anybody wants to upload something, just change to /pub/msdos/replace/incoming. This should be writeable to the world. So arl, would you please be so kind and upload the new images? Thank you! Oh, before I forget it: Is nobody out there working on concrete projects? I've still got no mail with any extensions to the TODO list.... And again the question: Are any compiler gurus out there? need help in ANSI- fication of C386. (Or somebody has to implement pagin *QUICK* :-). I want to be able to do some kernel development, thats what I started using Linux for.... End where do I end up: A C-Compiler. OK, but another way I will certainly try is dj's port of gcc to MSDOS. This one has already implemented swapping and I think it's one possibility to use it to build a kernel instead of Linux gcc. If anybody is interested in an experience report, just mail CU l8er --[0072]-- [0073] daemon@ATHENA.MIT.EDU (proven@Athena.MIT.EDU) Linux_Activists 11/15/91 11:44 (9 lines) Subject: No subject found in mail header From: proven@Athena.MIT.EDU Date: Fri, 15 Nov 91 11:40:35 -0500 To: linux-activists@joker.cs.hut.fi Ok, if no one else is working on a VFS layer, I will. I'll also try to get a first cut done for the 0.11 release but I'll make no promisses. CAP --[0073]-- [0074] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/15/91 16:18 (18 lines) Subject: linux, compilers and paging Date: Fri, 15 Nov 91 13:11:35 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi One of the things I find anoying about minix is having multiple compilers (just bcc and gcc). Just using one compiler (gcc in linux) really helps adhere to the KISS principle. But as Robert Blum points out, gcc is a hog. I guess this is why we see the 1.7 Meg buffer caches. While paging might be nice, you still have to reload gcc N times to compile an N module program, for the typical makefile. The only other way I see around the huge buffer cache is to implement the sticky bit to keep a programs pages in memory. The other alternative, #ifdef GCC, #ifdef C386 etc throughout the code, and having multiple object file types about, is even less savory. I would rather live with setting and clearing sticky bits before and after heavy compile sessions. I wonder what others think though? --[0074]-- [0075] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/15/91 18:45 (64 lines) Subject: Important! Bug in /usr/include/ctypes.h Date: Fri, 15 Nov 91 18:42:58 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu I found the problem which caused "mcopy a:*.c ." to files with unreadable filenames. The problem was that it was trying to convert the uppercase MS-DOS filenames to lowercase, and this was failing because tolower() is incorrectly defined in ctype.h: the plus sign should be a minus sign. diff -r1.1 ctype.h 31c31 < #define tolower(c) (_ctmp=c,isupper(_ctmp)?_ctmp+('a'+'A'):_ctmp) --- > #define tolower(c) (_ctmp=c,isupper(_ctmp)?_ctmp+('a'-'A'):_ctmp) If you are trying to port programs to Linux, you should apply this patch to your ctype.h --- it could save you a lot of aggravation. (I know that it will cause problems with flex at the very least, and probably many other programs.) ------------------------------------------ I agree with Peter McDonald's observation that it is extremely nice to have only compiler for Linux, and it would be a shame if one needed to have both compilers around, depending on which compiler was used by a developer. At the very least, it would make the code uglier as people put in porting #ifdef's. gcc has a lot to recommend it, especially since version 2.0 gives you g++ and Objective C basically for free. I note that once Linux has paging, gcc will be able to work with 2 meg machines, although granted, it will be slower than normal. I don't know what kind of speed hit gcc on a 2 meg machine with paging would take, but perhaps this would be sufficient that we can just have one main compiler for Linux. Also, memory is getting relatively cheap these days --- we're talking maybe US$30 to US$40 per megabyte if your machine can take SIMMS. Upgrading a machine from 2 meg to 4 meg doesn't cost *that* much money. As long as the system will run gcc (albeit slowly), would this alleviate concerns about insufficient support of 2 meg machines? ---------------------------------------- Along the lines of having only one compiler for Linux, I am currently looking into how it might be possible to assmeble the 16-bit binary portions of Linux, so that we could just use gas to compile the boot sector and setup code. There are a bunch of issues to deal with, including modifying gas to emit 16-bit object files, which doesn't look that hard. Another problem is that the gas format is using a "source, destination" convention, while the as86 assembler seems to be using a "destination, source" convention. If absolutely necessary, I can figure some of the unclear translations by looking at the object code in the boot sector and the matching it up against the opcodes in the gas sources, but this seems rather crude and unpleasant. Does someone have a quick conversion chart between the two assemblers which they could send to me? This would save me a lot of dirty work. Thanks! - Ted --[0075]-- [0076] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 11/16/91 05:06 (11 lines) Subject: Linux vs. 486/33 Date: Sat, 16 Nov 91 01:03:49 -0700 From: John T Kohl To: linux-activists@joker.cs.hut.fi I just got a new 486/33 today, and linux only seems to want to boot if the "turbo" switch is turned off. If I turn it once I'm running ,it seems to cause no problems. I'm booting off a 1.44MB 3.5" floppy. John --[0076]-- [0077] daemon@ATHENA.MIT.EDU (Johan Myreen) Linux_Activists 11/16/91 13:11 (20 lines) Subject: Re: demand-loading, paging From: Johan Myreen To: linux-activists@joker.cs.hut.fi Date: Sat, 16 Nov 91 20:09:51 EET In-Reply-To: <199111141122.AA04091@kruuna.helsinki.fi>; from "Linus Benedict Torvalds" at Nov 14, 91 1:22 pm > As for demand-loaded executables... hmm. There are a couple of problems > with this: the minix filesystem wasn't meant for it, and it would be > MUCH easier to implement if BLOCK_SIZE was 4096 (= one page) instead of > the current 1024. One thing could be a problem with demand-loaded executables: finding the page on disk means going through the file system, whereas paging from a dedicated swapping partition could be a simpler and faster operation. Admittedly, the first read must be done from the executable, and demand loading from the file probably makes the load process seem faster. -- Johan Myreen jem@cs.hut.fi --[0077]-- [0078] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/16/91 19:33 (52 lines) Subject: demand paging: proposal Date: Sat, 16 Nov 91 16:28:57 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi I finally bit the bullet. Yup, I blew away my dos partition and put Linux on it. Now I would like to start a project. I consider virtual consoles to be high priority, but until init/login etc is done, there is probably no use starting that. Thus I am proposing to look at demand paging from the file system. If Linus agrees to consider adding it to linux when it is done, and nobody successfully shoots this proposal down, I will start tuit suite. If someone else wants to help (or do all of it) let me know. I have broken it down into phases to clarify understanding, not necessarily to imply they might be released in this order (if ever). If you think this is a house of cards, let me know ASAP. Proposed Design: Phase 1: - Upon loading an executable, create a map that is stored in the process that locates all blocks on disk. Do not look at fs again. - Load only the first 4K page and execute. - Upon a code page fault load the required 4 blocks into ram. - Make no attempt to lock file image (count on seg violation?) Phase 2: - Attempt to share executable images in ram (shared-text). Phase 3: - Attempt to implement the stickey bit, to pin an executable in memory once loaded. - Find a way to flush it (all) from memory when done. Phase 3: - Attempt to manage working sets in memory if data requirements exceed available ram (down to ~15%). Phase 4: - Paging (writing) data to a partition or fixed size file. - Locking paged image file. Issues: - Allocating/deallocating memory for the program maps. - Enable/disable paging when booting from shoelace? - Do not use working set with pinned pages? - File locks held in ram only? --[0078]-- [0079] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/16/91 20:10 (22 lines) Subject: alternative to paging Date: Sat, 16 Nov 91 17:07:24 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi I just downloaded sed, tr etc from TSX-11 and are they ever big! An alternative to the demand paging scenario I just posted would solve another, probably more pressing, problem. 9k : size of minix executable of diff 36k : size of gcc compiled executable of diff 4k : size of gcc compiled diff.o It won't be to long before my disk flow'th over. Not to mention ram requirments. Can anyone give me any advice on implementing dynamic link shared libraries? I need to figure out: - should the entire shared library be kept in ram? (simplest?) - how best to map this into each processes code space? - how to modify the linker and runtime loader? --[0079]-- [0080] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/16/91 21:07 (18 lines) Subject: Re: Linux vs. 486/33 Date: Sat, 16 Nov 91 20:58:55 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: John T Kohl Cc: linux-activists@joker.cs.hut.fi In-Reply-To: John T Kohl's message of Sat, 16 Nov 91 01:03:49 -0700, Reply-To: tytso@athena.mit.edu Date: Sat, 16 Nov 91 01:03:49 -0700 From: John T Kohl I just got a new 486/33 today, and linux only seems to want to boot if the "turbo" switch is turned off. If I turn it once I'm running ,it seems to cause no problems. Interesting.... I have no problems running at 40Mhz on my 386. How does it die? - Ted --[0080]-- [0081] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/16/91 22:54 (102 lines) Subject: Re: demand paging: proposal Date: Sat, 16 Nov 91 22:47:00 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: pmacdona@sol.UVic.CA Cc: linux-activists@joker.cs.hut.fi In-Reply-To: Peter MacDonald's message of Sat, 16 Nov 91 16:28:57 PST, Reply-To: tytso@athena.mit.edu From: pmacdona@sol.UVic.CA (Peter MacDonald) > - Attempt to implement the stickey bit, to pin an executable > in memory once loaded. Everyone should note that this is not the original meaning of the sticky bit, in the BSD 4.3 sense. In the BSD sense, what the sticky bit means is that after the program exits, its entry in the text table is not purged and its swap space is not reclaimed. The program was _not_ locked into memory, and would get swapped out if demands were placed on the VM system. The rationale behind this is that in a time-sharing environment, programs like GNU emacs are almost in use by *someone*, and in the case where the last person finishes running emacs, the program should not be flushed from the text cache, swap space, and ram, in the hope that another user would be starting an emacs before the unused program got swapped out to disk. In that case, the user would win since no disk I/O would be needed. However, in a single-user environment, the value of the sticky bit is rather dubious, and Project Athena workstations don't even bother using it for this reason. That being said, I'm not too sure that pinning an executable into memory is a good idea. Unless you have gobs and gobs of memory, you wouldn't be able to "sticky bit" more than one or two programs before you run out of physical memory, and in the meantime, locking down large amounts of memory would increase the amount of VM thrashing when other programs are running. A better idea might be to not flush the text table entry once its ref count goes to zero, but to rather wait until the last of its text pages are paged out (which will happen sooner rather or later because there is no program using the text). However, if the text is used by a process before the last pages are reclaimed then you will win because some number of pages won't need to be brought back in from disk. Thus, this system will do the right thing for someone who has enough memory to keep gcc, make, etc. in core at the same time during a build. The advantage that this scheme has is that it will automatically adapt to whatever text image is being repeatedly used --- you don't need to sticky bit a limited number of processes. For this reason, it is also a much fairer system. ------------------------------------ >9k : size of minix executable of diff >36k : size of gcc compiled executable of diff >4k : size of gcc compiled diff.o >It won't be to long before my disk flow'th over. Not to mention >ram requirments. The culprit here is the floating point library (i.e., the soft floats); even if your program isn't using floats, printf() drags large portions of it in. The bottom line is that every integer-only executable will be roughly 10-20k bigger than it has to be. That's most of the problem, anyway; the most of the rest of it is due to things like gmalloc.o, which is 4979 bytes. (malloc.o on the vax is 1176 bytes). There are a couple of hack solutions, which I perhaps shouldn't mention because they might actually get implemented :-) One way to do it would be to include the soft-float library in the kernel, and map those pages read-only at the top of the address space for every process. This has the advantage that you don't need to run a linker at run-time, since the addresses for the soft-float library would be well-known constants. (you'd probably put a jump table at the tippy-top, and make all the rum-time routines reference the jump table). This is very ugly, and it is only (barely) justifiable because (1) every single program is going to need the floating point library and (2) it is unlikely that the FP library will be changing often, so requiring that you recompile the kernel to replace the FP library isn't quite as nasty as it first seems. It is definitely not something that you would want to use for sharing copies of the dbm library or the X toolkit. The only reason why I mention it is that doing shared libraries for real would probably entail a lot more work. :-) ----------------------------------- I've noticed that there is a bug in the system call waitpid() --- the parent process gets told that exit code for the child process is always zero. I've already sent a patch to Linus privately, but if anyone else is interested in the batch, it is available on TSX-11.MIT.EDU, in /pub/linux/patches/exit.c.patch . I've also uploaded tar files containg the binaries and libraries of Bison and Flex to TSX-11, nic.funet.fi, and tupac-amaru. Bison and Flex are yacc and lex replacements from the GNU project. Flex passes all but the COMPRESSION=-Cf and COMPRESSION=-CF regressions tests --- however, it looks like it's not a fault of flex, but rather of GCC. It looks like gcc is not compiling the resulting (very large) scan.c files correctly. For normal usage, however, flex (and gcc) should work just fine. Enjoy! - Ted --[0081]-- [0082] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 11/17/91 02:17 (50 lines) Subject: more on 486/33 weirdness Date: Sat, 16 Nov 91 23:11:47 PST To: linux-activists@joker.cs.hut.fi From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu Here are more details on my problems with booting in turbo mode: system config: 486DX/33, 256K cache, 8MB main memory American Megatrends, Inc. BIOS real-time clock 1 3.5" floppy (A:), 1 5.25" floppy (B:) 1 200MB IDE drive (connor) C:, /dev/hd2, /dev/hd3, D: partitions (in that order) SVGA: (Orchid ProDesigner IIs/1MB) I boot off the 3.5" floppy, with root partition on /dev/hd2 and/or /dev/hd3. sample errors when in "turbo" (33MHz) mode: Partition table Ok. general protection: 0000 EIP 0008:0000CBB3 EFLAGS 0010206 ESP 0300:0001D210 fs: 0010 base 04000000, limit 000A0000 Pid: 1, process number 1 f3 a5 50 e8 7d fb ff ff 83 c4 ... or general protection: 67b4 EIP 10008:00000004 EFLAGS 00010206 ESP 0020:000067B6 fs: 0010 base 04000000, limit 000A0000 Pid: 1, process number 1 07 20 00 00 27 30 00 00 07 40 sometimes I get two "general protection" errors (same process, usually). When I toggle the turbo on & off while running, I don't observe any change in running times of programs (but I can discern differences under MS-DOS 5.0), even when I run programs which try to time themselves. Any suggestions? --[0082]-- [0083] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/17/91 03:26 (31 lines) Subject: Re: more on 486/33 weirdness Date: Sun, 17 Nov 91 17:20:38 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: jtkohl@cs.berkeley.edu, linux-activists@joker.cs.hut.fi G'day, I had a similar observation when using the 386/387 assembly. I had wanted a mathlib badly so I made try to compile the code from DJ's GPP (for MS-DOS). The maths routine are written mostly in assembly language. I compiled the C and assembly code and made libm.a, ranlib the things. All without problem. I then proceeded to write a small C program with a sin() and tan() call. That is when I had device not available: 0000 EIP: 000f:00000060 EFLAGS: 00010246 ESP: 0017:03FFFED0 fs: 0010 base: 10000000. limit: 04000000 Stack: 00000044 66666666 40026666 03fffe48 Pid: 2123, process nr: 4 dd 44 24 04 d9 fe df e0 9e 7b A wild guess, does it have anything to do with the fact that on the 486, the maths coprocessor is already incorporated onto the chip it-self? BTW, I am trying to compile the bsd-reno's maths library temporary. Anybody with warning, advice, question please e-mail to me. nicholas@cs.uwa.oz.au --[0083]-- [0084] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/17/91 05:44 (136 lines) Subject: demand-loding etc Date: Sun, 17 Nov 1991 12:36:42 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi pmacdona@sol.UVic.CA (Peter MacDonald) > Thus I am proposing to look at demand paging from the file system. > If Linus agrees to consider adding it to linux when it is done, > and nobody successfully shoots this proposal down, I will start > tuit suite. > Proposed Design: > > Phase 1: > [deleted] You don't start small, do you :-). If I /agree/ to add it to linux? If anybody implementes paging, he's going to get 2 extra copies of linux for free. How's that for an offer? Seriously, adding demand-loading should be relatively easy. I wouldn't suggest going past the filesystem, even for saving the block-numbers somewhere (and a bit-map won't do it, block nr must be ordered). Having the inode-pointer in the process table entry (and not releasing it before an exit), and using that to find the blocks wouldn't be too hard. A bit slower, but conceptually much easier. Then you can use the routines already on hand (map() etc). Note that the "relatively easy" must be taken with a bit of salt: you have to add the routines to the paging unit etc etc. No major problems at least. Also I'd like to keep linux simple even at the cost of some speed hit, as otherwise it grows until nobody really understands it. I'm kinda proud of my mm: it's not many lines of code (although it's not very clear code.) Re: sticky bits, shared text... I don't like sticky bits (in the meaning that they lock something into memory). I doubt it's really that useful on a small machine, that is essentially single-user. It's easy to grow the cache to 6M or more if you have the memory, and currently I don't see much unnecessary disk I/O in a heavy 'make'. Besides - sticky bits are hard to keep track of. Shared text and sticky bits have another shared problem: right now linux allows writes to the code segment. This isn't a very big problem, as the changes to 'mm' are minimal, but you'd have to check that the code segment is a multiple of 4096 (I /think/ I made ld do this, but I'm not sure). The biggest problem however is the amount of data you have to keep track of. You'll have to add a lot of structures to know which pages are in which executable etc. I don't think it's worth it, especially if real paging (with a partition of it's own) is implemented. tytso@ATHENA.MIT.EDU (Theodore Ts'o): > > >9k : size of minix executable of diff > >36k : size of gcc compiled executable of diff > >4k : size of gcc compiled diff.o > > >It won't be to long before my disk flow'th over. Not to mention > >ram requirments. > > The culprit here is the floating point library (i.e., the soft floats); > even if your program isn't using floats, printf() drags large portions > of it in. The bottom line is that every integer-only executable will be > roughly 10-20k bigger than it has to be. That's most of the problem, > anyway; the most of the rest of it is due to things like gmalloc.o, > which is 4979 bytes. (malloc.o on the vax is 1176 bytes). Yes. The right way to do this is to add an floating-point emulator in the kernel, even if shared libraries are added. This is a real b**ch. I'll probably take a look at the djgpp package, but I'd really rather do it myself (it's an interesting project). I don't really have the time though, so ... > [bug in waitpid] Yes, I got the fix, but for once I had the bug corrected already. Very silly thing that came into the system with the "great reordering", when I changed the process tables. Luckily it isn't very bad. Another related bug was in crts.o, which always exits with a code of zero if main exits with a return xx. John T Kohl > [486/33 bootup problem] > > When I toggle the turbo on & off while running, I don't observe any > change in running times of programs (but I can discern differences under > MS-DOS 5.0), even when I run programs which try to time themselves. This would suggest to me that you have one of those braindead "slowdown" devices which aren't really completely hardware, but due to some software solution. At least some Gateway-2000's had this, which meant that they couldn't run well in protected mode under windows either (while accessing floppies or something like that). I don't really know what to do about it, as I don't know the hardware enough (I've leart a lot about PC's in the 11 months I've had one, but still...) I assume linux is running at full speed all the time? nicholas@cs.uwa.oz.au (Nicholas Yue) > G'day, > I had a similar observation when using the 386/387 assembly. I had wanted > a mathlib badly so I made try to compile the code from DJ's GPP (for MS-DOS). > The maths routine are written mostly in assembly language. I compiled the > C and assembly code and made libm.a, ranlib the things. All without problem. > I then proceeded to write a small C program with a sin() and tan() call. > That is when I had > > device not available: 0000 > EIP: 000f:00000060 > EFLAGS: 00010246 > ESP: 0017:03FFFED0 > fs: 0010 > base: 10000000. limit: 04000000 > Stack: 00000044 66666666 40026666 03fffe48 > Pid: 2123, process nr: 4 > dd 44 24 04 d9 fe df e0 9e 7b This should happen only on a 386-system with no 387. "dd 44..." is some math instruction (fld? whatever). However, linux depends on the BIOS to set the %cr0 bits for a coprocessor, and doesn't test for one itself, so even with 387 you might get this error if you BIOS doesn't set it up correctly. If you have a 387 but this error still happens, contact me, I guess I'll have to add the test-routine to linux. Linus PS. I now have a kernel that senses the video card (thanks to Galen Hunt), and the current version of fsck tries to correct things. I'm working on a "mkfs" that also senses bad blocks, as bad blocks have wreaked havoc on at least one drive (instant mess). I have a simple "fdisk" which doesn't try to change the partition tables, but at least it tells which devices you can use. Anything else that would ease the installation? --[0084]-- (nref = [0085]) [0085] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/17/91 22:57 (29 lines) Subject: Re: demand-loding etc Date: Sun, 17 Nov 91 22:47:43 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: Linux-activists@joker.cs.hut.fi In-Reply-To: [84] Reply-To: tytso@athena.mit.edu > The right way to do this is to add an floating-point emulator in >the kernel, even if shared libraries are added. This is a real b**ch. >I'll probably take a look at the djgpp package, but I'd really rather do >it myself (it's an interesting project). I don't really have the time >though, so ... Did you mean implementing a 387/487 emulator, or something specific for the gcc soft-float routines? I was wondering what sort of speed hit you would take (in either case) if each floating point operation required a trap to the kernel. That's why my previous suggestion had suggested mapping certain pages into the processes address space, so that the calling the FP routines wouldn't require a context switch. I was thinking, however, that another, possibly more elegant solution would be to assign shared libraries (including the FP routines) to a segment which would be visible to all processes. Then all the stub routines would need to do is to do a far call to a predefined segment. What do people think? - Ted P.S. Having the kernel emulating 387 instructions would still be neat; I was just wondering if it would be too slow for normal operations. --[0085]-- (pref = [0084]) [0086] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 11/17/91 23:38 (21 lines) Subject: updated nic.funet.fi Date: Mon, 18 Nov 1991 06:30:07 +0200 From: Ari Lemmke To: Linux-activists@joker.cs.hut.fi nic.funet.fi:/pub/OS/Linux Check README and ls-laR files! These constantly change .. lib contain new *.s (sig_restore.s and crt0.s) files, without those would be hard to create sw to Linux. bin has some new useful utilities, like kermit. I hope I can get init/getty/login system out within week or two. Earlier if there is a need for a really poor one ;-) arl --[0086]-- [0087] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 11/18/91 00:18 (19 lines) Subject: protection violations Date: Sun, 17 Nov 91 21:06:33 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Now that I have my hard drive set up, I keep getting protection violations. It mostly happens when using gcc. It is along the lines of: protection violation: 0000 The hex dump at the bottom is often different. Like ls began with "c3 ". But this also happens when I boot up sometimes. Or use ls. But then other commands like em work. I have no 80387. Could this just be a problem with the bios not setting up the %cr0 flag correctly? Basically, I haven't even been able to compile the hello world program yet! Any ideas? Is it time to get an 80387 (or is a 80287 sufficient). --[0087]-- [0088] daemon@ATHENA.MIT.EDU (Wolfgang Thiel) Linux_Activists 11/18/91 04:11 (9 lines) Subject: Include files Date: Mon, 18 Nov 91 10:58:05 CET From: Wolfgang Thiel Reply-To: UPSYF173%comparex.hrz.uni-bielefeld.de@FINHUTC.hut.fi To: linux-activists@joker.cs.hut.fi Hi, which include files should be used? The ones in include.tar.Z or those in the kernel/mm/fs .tar file? Wolfgang --[0088]-- [0089] daemon@ATHENA.MIT.EDU (Bruce Evans) Linux_Activists 11/18/91 05:47 (91 lines) Subject: Re: demand-loding etc Date: Mon, 18 Nov 91 17:09:17 +1100 From: Bruce Evans To: Linux-activists@joker.cs.hut.fi Linus: >Re: sticky bits, shared text... >I don't like sticky bits (in the meaning that they lock something into >memory). I doubt it's really that useful on a small machine, that is >essentially single-user. It's easy to grow the cache to 6M or more if Shared text helps a lot with recursive commands. I'm surprised linux doesn't already have it. Fork is most naturally done by sharing text and making it copy-on-write or no-write. >you have the memory, and currently I don't see much unnecessary disk I/O >in a heavy 'make'. Besides - sticky bits are hard to keep track of. The cache i/o that you don't see hurts (there should be a LED for it :). Building the library under Minix-386-cached-text takes 25% longer when the shell is bash. The overhead is actually for something else - copying 40K data from the cache and zeroing 200K bss. Under another version of Minix with copy-on-access forks, building the library takes another 10% longer. There is only slightly less copying because a lot of text gets copied, and more overhead from page faults. The other thing that hurts without cached text is that heavily-used programs will be duplicated in the disk cache and as text. Perhaps mapping the disk cache to text instead of copying it would be almost as good as managing text separately. [big program sizes] >> The culprit here is the floating point library (i.e., the soft floats); >> even if your program isn't using floats, printf() drags large portions >Yes. The right way to do this is to add an floating-point emulator in >the kernel, even if shared libraries are added. This is a real b**ch. You would need a printf-emulator in the kernel :-(. The floating point emulation itself shouldn't be that big. >I'll probably take a look at the djgpp package, but I'd really rather do >it myself (it's an interesting project). I don't really have the time The djgpp emulator (in 32-bit C) is 14+ times slower than my library routines (in 32-bit asm) (the emulator in Turbo C++ is only 7 times slower :-). It takes a large amount of code to the emulation compared with doing the guts of the library. >John T Kohl >> [486/33 bootup problem] >This would suggest to me that you have one of those braindead "slowdown" >devices which aren't really completely hardware, but due to some >software solution. At least some Gateway-2000's had this, which meant This doesn't explain why the slow mode worked to boot. Perhaps the fast mode is done in software ;-). I guess the bug is really in the BIOS+linux with a hot interrupt. >nicholas@cs.uwa.oz.au (Nicholas Yue) >> I then proceeded to write a small C program with a sin() and tan() call. >> >> device not available: 0000 >This should happen only on a 386-system with no 387. "dd 44..." is some >math instruction (fld? whatever). However, linux depends on the BIOS to >set the %cr0 bits for a coprocessor, and doesn't test for one itself, so >even with 387 you might get this error if you BIOS doesn't set it up >correctly. The error seems normal. You are lucky to get it instead of a crash. My 1987 Award BIOS and 1990 AMI BIOS can be relied on to set up the %CR0 bits _incorrectly_ (Award always clears them, on a machine without an x87). After booting, AMI on my 486 has set %CR0 to 0x10. The relevant bits are 0x01: MP (Math Present): should be set (WRONG) 0x02: EM (Emulation): should be clear to use x87/486 this is what gives the device not available trap - linux must be setting it 0x04: ET (Extension Type): should be set (always set by 486 h/w so BIOS gets this one right :) 0x08: NE (Numeric Error): 486 s/w should use this to get error reporting via exception 16 instead of the crufty IRQ 13 necessary for 286-386/287-387 systems Perhaps Linus meant the coprocessor bits in the parameter RAM. These had a reuputation for being unreliable for distinguishing between 287's and no-coprocessor but I think they are OK for 387's. Bruce --[0089]-- [0090] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/18/91 07:07 (123 lines) Subject: anwering as best I can Date: Mon, 18 Nov 1991 13:57:12 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi tytso@ATHENA.MIT.EDU (Theodore Ts'o): > > Did you mean implementing a 387/487 emulator, or something specific for > the gcc soft-float routines? ... Real emulation. > ... I was wondering what sort of speed hit you > would take (in either case) if each floating point operation required a > trap to the kernel. That's why my previous suggestion had suggested > mapping certain pages into the processes address space, so that the > calling the FP routines wouldn't require a context switch. System calls under linux never require a context switch. In fact context switches are extremely rare: they happen ONLY when one process stops running and another one starts. The floating point exceptions would be slow, but that's mainly because they would have to decode the effective addresses etc.. Not very much fun, but somewhat interesting. Still, there are a lot of reasons to have a FP-emulator in the kernel. If somebody wants fast floating point, he'd better get a 387, but I'd like to be able to support all programs on all machines independent of the 387. Currently the library is soft-float, which means that you cannot reliably use it with a program that has been compiled with "-m80387". Big drawback, as is the possibility that someone has a program that uses the 387, and half the beta-testers cannot use it.. > I was thinking, however, that another, possibly more elegant solution > would be to assign shared libraries (including the FP routines) to a > segment which would be visible to all processes. Then all the stub > routines would need to do is to do a far call to a predefined segment. > What do people think? This is the preferred solution: it's simple and easy to add to the kernel. The routines in libc.a would just be stubs calling the "library segment". No problem, except for the math's. Also, I don't find the math-instructions that time-critical: they are relatively few in most programs. If you do number-crunching, you have a 387 anyway (as they are quite inexpensive nowadays - I got one just to be able to test the kernel routines). Ari Lemmke : > lib contain new *.s (sig_restore.s and crt0.s) files, > without those would be hard to create sw to Linux. > > bin has some new useful utilities, like kermit. Kermit has a problem with ^C. I didn't even try to fix this, as I didn't know if it should be fixed. Anybody know? It traps it nicely, and exists, but somehow I expected kermit to ignore ^C when in terminal mode. Oh well, I ported it so that I could download files, and it works for that. pmacdona@sol.UVic.CA (Peter MacDonald): > Now that I have my hard drive set up, I keep getting protection > violations. It mostly happens when using gcc. It is along the > lines of: > > protection violation: 0000 > > The hex dump at the bottom is often different. Like ls began with "c3 ". > > But this also happens when I boot up sometimes. Or use ls. But > then other commands like em work. I have no 80387. It's not the lack of a 80387 (and don't get a 287, I'm not sure I can support it... working on it). It seems more like a corrupted filesystem, but I have been known to be wrong (sometimes ;-). I'll post the (new) fsck with binaries to nic some time today, and they might show up sometime. Still even more beta than the system :-). The "general protection violation" is a general error: it happens at most programming errors (or if you try to use minix binaries, or if the executable file is corrupted). You can see where it happens by looking at the EIP:-line EIP: segm:address. segm =0008 means kernel problem, segm=0017 means it happened in the user program. Note that kernel problems don't necessarily mean that the bug was in the kernel: it might be a user program that gave a bad pointer to a system-call. Indeed pgv is so general that it might be anything: a unexpected interrupt (but they should be trapped, so this isn't that probable) or something like that... Wolfgang Thiel : > Hi, > which include files should be used? The ones in include.tar.Z or > those in the kernel/mm/fs .tar file? > Wolfgang I use the ones in include.tar.Z, but they should really be identical. This isn't absolutely true, but if there are differences, they should be minimal. I'll have to consolidate them (no big problem now when I have no minix include-files I can mess up with). Bruce Evans : > Shared text helps a lot with recursive commands. I'm surprised linux > doesn't already have it. Fork is most naturally done by sharing text and > making it copy-on-write or no-write. Oh, shared test works fine after a fork (try running 10-20 bashes inside each other), but not when executing a new program that already is in memory. It should be easy to check for (especially once demand-loading is in place), so this too will eventually be implemented (so that bash doesn't have to be loaded completely if it is executed from within some other program). Linus (torvalds@kruuna.helsinki.fi) PS. Small bug-report: signals weren't correctly reported as the cause for exiting, but they are now (in my version). 287-coprocessors weren't noticed at all (this was the problem with nicholas), and I'm not sure the code uses them correctly now either, but at least it tries... Coprocessor errors now correctly cause a SIGFPE, no longer the debugging info. Likewise "not-present" errors. Also, variable speed serial connections are now implemented, and seem to work (testing from kermit). Direct reads/writes to a >64M partition should also work now (thanks to who-ever. My mind is going... ) --[0090]-- [0091] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 11/18/91 18:34 (22 lines) Subject: BSD networking release 2 code Date: Mon, 18 Nov 91 15:25:08 PST To: linux-activists@joker.cs.hut.fi From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu I plan to (slowly) work on porting various bits of the BSD networking release code to linux. I have a running version of their make, but need to apply a patch I just saw on the net today, and I'll upload it somewhere soon (watch for details). Perhaps the device drivers there for the i386 will be useful? They include: com port(s), floppy, NE2000 Ethernet, WD8003E, WD8003EBT, WD8003S, WD8003SBT, WD8013EBT console & keyboard various disk & tapes also might pick up VFS, bsd ffs (may be incomplete?) John --[0091]-- [0092] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 11/18/91 18:57 (15 lines) Subject: GNU emacs?; more 486/33 info Date: Mon, 18 Nov 91 15:53:42 PST To: linux-activists@joker.cs.hut.fi From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu Anybody working on GNU emacs? "em" is passable, but I'd like the real thing... In other news, I have now been able to observe program execution speed differences when I toggle the Turbo switch (easiest to observe by scrolling lots of text on the console). So it's probably some sort of timing glitch that prevents booting at full-speed? John --[0092]-- [0093] daemon@ATHENA.MIT.EDU (Michael K. Johnson) Linux_Activists 11/19/91 00:25 (35 lines) Subject: mtools Date: Mon, 18 Nov 91 23:15:38 CST From: johnsonm@stolaf.edu (Michael K. Johnson) To: Linux-activists@joker.cs.hut.fi Hello! I am a new user of linux, and am trying to get up to speed. I began installing linux on my system this afternoon after my new hard drive came, and have now got things going so that my root device is my hard drive. I would like to transfer some of the programs like gcc et. al. to my unix partition, but I can't figure out how to use mtools. I have to read off floppies, due to some craziness with my hard drives. (Because my scsi device driver for dos doesn't work with DOS4/5 large partitions, I cannot use both Hard drives at once. I switch by going in and out of CMOS setup, telling the computer that I do not have a hard drive if I wish to boot DOS and use my scsi drive, and telling it about my IDE drive if I wish to boot linux.) This is working rather well, but I have no way to get the basic binaries from the distribution onto my linux partition. I can't read a floppy and so I can't get kermit to transfer by serial link. Catch-22, or something like. So, (the point of this long letter) I would appreciate any help with mtools and any suggestions generally. Thanks a lot! michaelkjohnson johnsonm@stolaf.edu I don't do .sig's --[0093]-- [0094] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/19/91 01:29 (21 lines) Subject: Maths library Date: Tue, 19 Nov 91 15:12:42 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: linux-activists@joker.cs.hut.fi G'day, Is there anyone working on a maths library or are interested in the maths library. I am attacking from a few directions concurrently : (i) 80386 with 80287 (ii) 80386 with 80387 (iii) emulating the 80387 (iv) porting the BSD-reno math library distribution everyone of them have their associated problems. I have been in touch with linus over the last few days but I am afraid I will be slow down his work on the kernel. So if anyone have any advise or suggestion, please e-mail to me. Thanks In Advance nicholas@cs.uwa.oz.au --[0094]-- [0095] daemon@ATHENA.MIT.EDU (John T. Kohl) Linux_Activists 11/19/91 02:37 (9 lines) Subject: control-U kills console bash? Date: Mon, 18 Nov 91 23:32:18 PST From: jtkohl@antipodes.Berkeley.EDU (John T. Kohl) To: linux-activists@joker.cs.hut.fi Cc: jtkohl@cs.berkeley.edu It seems whenever I type control-U while in a program, the console bash dies and the system grinds to a halt. bug? feature? John --[0095]-- [0096] daemon@ATHENA.MIT.EDU (John T. Kohl) Linux_Activists 11/19/91 02:52 (9 lines) Subject: control-U kills console bash? Date: Mon, 18 Nov 91 23:32:18 PST From: jtkohl@antipodes.Berkeley.EDU (John T. Kohl) To: linux-activists@joker.cs.hut.fi Cc: jtkohl@cs.berkeley.edu It seems whenever I type control-U while in a program, the console bash dies and the system grinds to a halt. bug? feature? John --[0096]-- [0097] daemon@ATHENA.MIT.EDU (Wolfgang Thiel) Linux_Activists 11/19/91 04:47 (144 lines) Subject: mtools patch Date: Tue, 19 Nov 91 11:14:31 CET From: Wolfgang Thiel Reply-To: UPSYF173%comparex.hrz.uni-bielefeld.de@FINHUTC.hut.fi To: linux-activists@joker.cs.hut.fi Following are patches for mtools2.0.4 to correct some minor bugs and to read big partitions. Also included is a small patch for fs.h to make this work and a patch to floppy.c to support these strange disk formats Atari-St users love. I hope this gets out ok from this EBCDIC mainframe. Wolfgang table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 mtools.tar.Z M'YV04HH$(=*D"("#"!,J7,BPH<.'$"-*1 BBH@T:-$ J,@1AD:.%3UN!%DQz M!HP;&4'4B!%#1HP9,&;4N,'QQHT9,S;"F,BSI\^?0 '4F4,GC)R* .2\>4,Gy M:$.E3)U*G4JUJM6K6'E205,&A)DW;-B\N9/&S1D0<,+0&<-U#@BC7>648:,Vx MC9VN=-Z :),7[)P6,EQX3+L6#9LR=]F H.%"P=8R>4",>2-'[A@Z(.:\:=.Uw M35G*(,34.>,6A1DV0]&4/4N4S)LZ=%*\=4/F;=BQ(/*\!I$7Q!W*:WRGH8-&v M@9 D1X@\F8+6*)WA:=ZXF=,X">8T;L.PT0S"39DQ9>;,,9I'00O>>B=7_HZ9u M>-<[2LU*II,'3AD7:$"@R"OV3ADY+^15!QSVR9&">>A)AD889G55%@AEC8$:t M&66\P$99=>#Q@AG4Y?<@47+4<5EH=9AAQG]?7CK.P:./$+J!&8.U6;89'&D E:*0>6+[RXQA=DR&''AFO"D8<+8[@ PA-LU!8$p M%4%(D40+4U !PE#_N>79&6C0H0 ;5DZIEI8)Y'H%6&:<828(6Z4QEP(*Y)K o M@'/D848,-P$Q61MIR84'?G+HX8*.:;0@AK"'G1BJ"Q02F]6XY)9K[KGHIJONn MNNRVN^YI;[#)*1EIF.'NO0MQ=%%&(W7T$4@BD5333!6MU%)+-]@@@T<@L+1Pm M##KA*[%$@!J%%%1-787QQ!QW['%5*H2L9KR:>00PSFM7 >O/*.D8 1USADY+//.(*0P!X5W; P"R#DP((,+- PLQL #j M'C+,H#<>,.2]-Q%&@- '"PF\H ((,]@ PQI")-FP"S(T$7FE=G6EP@MIK]TPi M1G?'/7?7=Y?.M]][!_XWX88CKC@(;C\>^8,Q4&XY")C?!3;G%7DN PXXW!T#h M#J,'K_??,0CQ-]-_#U'XX8DO7CM&M],[AY5TT*$YYRNHS78,-CB.]]UTXX#Zg MWWTO+S@>K!^N0/>>@R^^2<6?O[<,02Q/]^#/L_"^]PW#@0QL@+>\E<]^?,M?f MZO;'ON>EK0\[2)OBT@8V$$A!+0YRBT?MC]](71O[EKWZ%A(<@>%@.E,4T',YC9#*(6c M YWQ[&Q=Q$\8C=8R,IJQ:3C10>"DQC.L^3%D6EN<#6[ @IN K6II Y&(,",:b M$Z%(1;790^?88K'%M8@,:@G##HSU.CB\H2S:.TIO,%F4T, H."@PB0PR(H8\a M:&\.LME1<"-1&RQ[9z M,C.XU.6+WA"C&6WR==.,47?JT 8Q_&=WL]R1,VM#R:.T:$!Y(649(MB[9B*Iy MG*&A5!IRV#($HZ#+.0,0'"V%B22#B$:42-/)(<4Z3.2DRQH!2^9R5[ZTI.@w M_.8H,TE1;:82!JL,C2O#D\QP&FF"3SZ(:8QZ=3391YKH,\$v M93RS*2,Y7-.2I]QF-[\94&9"E9PJ/2<X8ZR,4KMV7A433#&1"4 0]A@-9AW/*&q M+MDIF"V8@WW&4"\\9:8,=$ 6=T$@A/]8Z3!MHHL=*$/?+E7!#6G 0U#K$*HDp M2:@.%.(H$80P!2)(+KQ&8$(0CC %!2PS;-+9[HB2 :RD$')9"0KN0=,=G(QH7P4*5>W+,,Qk M66Z)1D>DE;&WO]4!9Z/[1I\E*=="X_5N?\U<&>0 C3$C=B"GBT@NTN_788/Cj MM9/8T;1QET*V]0X(C% %)C#A"T/( A.^789P=^4*3Y "$5" !]F@ 5BL&(+i M?%#O+<"@"R#HWKWSS91]]SL& .3A!DWAY< ,\"A:$HR PI:\Q\Ye MP$T$1"B:[DY0@C'H($UN8$IF!N3)7-J2"VX0 =S@GH((PB\!=OI"6;Z"@LIWd M+@%R"?"C4NEYM'^>DXN+5QGc M#?'M2C'?FQ;:H,#M/@ ^9TJOM@2L_=YFJ$TQ5>\&%"B_#'!KPQLRS >C[EO[b M%'(X"!8. ]E(\O)UOSLH]<[WROR]!'. O.2[$WSF&ZM 2I$#"D2 :SKHH,WVa M$7F>AWZ9MWEOT'EF92SO-1RDEX )D'9TAWIU]DM+1V&8$2W!%THJM';>84O/z M!'NQES5<= ,UT#5?(W9C(S<0?-(0<9s MV"IPPX%T0B&U 8*Q5UW,0DC#LU'9U7Q+1P=?^V'=_o MIXP]@(S9N(=K209P$XT.]99P8Y5&DI5TZ15J(9'.D9<!*94$n MF9=#F7.(R95J\9;6R!OP6(5MN2(J))).12HR9BQ$4':A@/\F /9 !V9&?)Y@/64P1V9D5B6_Zl M!I8:N9E3Z08+:9BK=YLC-Y)*8I*+@Y(JV9,O&9-XB%9@6%PXJ9,\V9(O"93-k MUX0'J86Q<2!!*90W1Y3%9)3861M(J1]*Z8,Y5*6Gg MJ54^JD(:JA:>9XDB*#+#$YO8U8GGL3#D@T17AC:UJ7XCVGXF*@)#D'.AE!F9f M&6@@P(P311=R<":BM""L!R<2YF9#&GE+.A1-JCG:F9,[N9+>601PTP1!@ 7He MQ@15D"I%( 4U*"&26 :F49,.6(JGZ(V8AQB:%XX(^'GD.'KG"*)JUR4H$ */d M&(EN,817.'(W>)>RX8J+RIV.ZI.I"*;ZF -5E@-1@X(@L#"$Y!(;U8+IMXN]c M6*)_-P5):J=9B:=ZZA:)AQESP'A"\GB&>JOSEJM8Z7 .R*ES\JDU**H<%0.Db M"HZ<-XX 5HX-Z*J$Z$MF0&&*,09Y,&2_2"*.A'=G 8)[02%9TBF[)D;*Q6R^a M]4+!A3/2!D=M8+"GERMWH!I2$JN)=P9OD(KWF@!NRHO[!W__QP4By M ']("R%N(1SD0=@$ADHD [ES4;&<>[' QD0TLU'2)JQ<9*PH2[)98[+$8Q)FH[)U^SI5&QPP87]Wt M.P>F<5O79W^D*+[!![B\>@)< .-:[-TIU_0>F_PI *R85MX8$OOUP(L<3(Qs M, ?SM[;C2[DAJ(\P(#[@NG+@P++B,q M"[0K"R)CH"GRJU+TBU[W"Y?Z,;^RL;Q?6KE.2P:ZMKD*B[H9Z["D-5P2N\2Fp M^\1VE+I/0P.LV[&N*S(+0T NP8DE:VQA/#=6YJR^- 06ERIL[ 0>UH@XJ[/"o M5+-S][@5+ )&D%Y(J[0BX%YX@!TE"3"[;S-Y%W.\*Y\K;;n MVQIS6X-V"V#@J[>6W+?Z@;@ =\,GX 8S/!MS\,(Q[ 2-6[>K6GVP:&Y)O#AMm M(!=NT,06F\51W#1,1,7&%LNK=\6]9LL-.P/"%KI]9(G5%3Z%1,:S:VS([#8-l M_*KZPP>R8:MW(0?Y-BE+"_O%PW(&S"O$:Z?!X6C=%R=+JVW-'.i M1C/0Y<7&S$4T0#P;*[L^9:#PU(.7L04RT 5%1:U&. Q1Nh M\((XK=.^A 1["$X"1=0UC0:EG--%!77?Y&:J0084PGJ6^;7@Y%0T6=0@H 8Zg ML@9;\-)4[4LYFQYP,0=@VU40Y&W+Q'/UX8%=LF!I4!LM>01?0 59 4_^=6\f M4=?@1G,@L-=]_=<_&7,@, +U4M@<1@3LYFZ9 5)L<11E02%X0%POS0(V((HJe M.]0TK5(V30=)O=-)ZM.VZ-1X!511O8>GO=1-W8AA'=53K=2^9-52UXQYO=7;d MF(-OK4RMG59'0=9NL 8P<-H!6MLJM:!WH-Q@/7/PU*"P MW#_4SP9-QF30,)c MH]2OL]:2T=;!_4!FA6/T81^%C==ZC1R)#=C@2=?HW6Z&C=A^[=ZLS5V/+=^1b M/=D35]ER<-E)HMD5?W4W+T$;2P"O<)%SK(M?-"?',.BO- TS.2*B\KEy MK(Y".P>!-"4Q>#N$;S6PX$%Q;3,P>2VW5x M-0,TP (S@#/(2N=E]\P5$=?:M7KTTB6O,P504"J5UE7_X]C1)]]?,) 8@@>-w M_C^*-")=7B=H'AY;\,DV"S][< )!< )_]P)V(NJ2& 0BD"MP P-, #IPv M@P)2A0)!W'FR$3K&DZQP$S?NP^F>#NK!*.J(\0)J 0.GG@"IONHRX^KZ$>NSu M+GZV'CITDS30PX:=_NFA/NH8'03F8Q*G?NRL'NVA ^M*HA_-7NMP8SXCQ.HPt ML.O>T^O7'NS9ONTQT.U+@^RMOC2OSNSVYNSG[C>X+EKLOC8G( 2^+@+ ?BD8s M+03%[NW)CN_+/NZRON_FSG#0GNLY$/"=3O#O?BE0, 7SCNKU_NW*+NZ8$?'Zr MP>\4G^X-

8K.%),'$V'RE/ZR 6ZA!,B VD %j M@%H$G( @@*E1ICR% 7D:-^* +&(XN 6J0P7D3P!D ?/O[0@>[),"DT_PF3S]i MSP<4J1:HC5J@98*!^R8B;8N2-,)6P J8?]X(]!D.&0);BJ 1/()(, DJP27(h M!)N@$WR"4# *2L$I2 6KH!6\@E@P"VK!+<@%NZ 7_()@, R*P3%(!LN@&3R#g M:# -JL$UR ;;H!M\@W P#LK!.4@'ZZ =O(-X, _JP3W(!_N@'_R#@# 0"L)!f 92 @+H2$\A(@P$2K"1<@(&Z$C?(20,!(^!(-Xe d end --[0097]-- [0098] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 11/19/91 04:48 (82 lines) Subject: The new TODO list and a FTP-admin specific question Date: Tue, 19 Nov 91 10:27:48 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! I am just mailing to remind you that there still exists this TODO-file. If you have ported anything lately or can help me fill the questinable things, please mail me. Following at the end of the file is the latest release of TODO. But before you start dropping this into the trashbin: All FTP-Site-maintainers with Linux-specific stuff, please read at the end of the mail!! =============== Following is TODO ======================= This files contains the status of several tools for Linux Currently ported projects: Name: ported by: available at bison nicholas@cs.uwa.oz.au tupac-amaru nic.funet.fi flex ?? tupac-amaru nic.funet.fi diff ?? tupac-amaru nic.funet.fi kermit ?? tupac-amaru nic.funet.fi =============================================================================== Projects currently under development: Name: ported by: Remarks c386 blum@messua.informatik.rwth-aachen.de Is working under Linux A cc for this exists Is currently teached ANSI. Any help on this would be appreciated. gawk nicholas@cs.uwa.oz.au Still needs a working mathlib. VFS proven@athena.mit.edu VFS=Virtual File System Will probably out with Linux 0.11 Networking jtkohl@echidna.berkeley.edu Mainly the BSD code Perhaps even ffs =================End of TODO======================= Now the stuff for you site admins out there: What do you think of a kind of mailing list for new sources/binaries? E.G: You get the new kernel code. Instead of installing it directly, you post it to the mailing list, and it will be automatically installed on all FTP sites that have joined the mailing list, including yours. So we could keep the whole archives consistent and thus spread the load. Currently, the host who has it first will have the heaviest load. (But wait, funet.fi is the one to have it first... I think we shouldn't do the list :-) You might even offer the linux community to join this list read-only, so everybody who wants to, always finds the newest binaries in his mailbox. Of course, this depends on a) if you have to pay for mail b) how much you have to pay What do you think about this? Do you like the idea? Please send in any replies/thoughts you have concerning this OK, and thank you for listening Robert Blum --[0098]-- [0099] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/19/91 05:05 (98 lines) Subject: general Date: Tue, 19 Nov 1991 11:56:09 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi John T Kohl : > Anybody working on GNU emacs? "em" is passable, but I'd like the real > thing... I'd be interested to hear about this too.. I haven't got the disk-space to try to port it myself, but judging from the ease of porting other GNU software it shouldn't be too difficult. Of course, emacs is rather big, and probably wants some features... ? If anybody gets a working binary (and no, I don't think we need all the features: gif-viewing, mail, news etc :-), I'm sure it could be set up for ftp somewhere (both nic and amaru accept incoming ftp: nic in /pub/OS/Linux (but it won't show up immediately), amaru in msdos/replace/incoming or something like that). > In other news, I have now been able to observe program execution speed > differences when I toggle the Turbo switch (easiest to observe by > scrolling lots of text on the console). So it's probably some sort of > timing glitch that prevents booting at full-speed? Do you have any problems at all using the floppy or harddisk later on? It might be that linux uses the IO-ports too often (there are usually (always?) two "jmp $+2" between IO instructions, but on a 33MHz 486 this isn't too much of a delay). I cannot imagine what other timings might be wrong (but if I have forgotten "jmp $+2" somewhere, it's probably in the early code, ie the one that is used at bootup.. I'll check) mgfrank@acsu.buffalo.edu (Marc G. Frank): johnsonm@stolaf.edu (Michael K. Johnson): > [ mtools ] This has been said before on this forum, but it seems there are enough new linux-activists to rehash the problems with mtools: 1 - you have to tell mtools which device to use. This is done by linking (or mknod'ing) the files /dev/dos[A|B|C] to the correct device. (ie mknod /dev/dosA b 2 28 for a 1.44M dos floppy in A etc). 2 - linux-0.10 doesn't support reading/writing from partitions >64M. Be VERY careful if you write to such a partition: the blocks wrap around at 65536. This is easily fixed (I think): change the unsigned short b_blknr in buffer_head to unsigned long, and recompile the kernel. I cannot test it (both my harddisks are <64M), but this should work. Thanks to xxxx. 3 - due to the bug in /usr/include/ctype.h (tolower), mcopy isn't able to do things like "mcopy 'a:*' .", as the names get confused. You'll have to give the new names explicitly, or recompile the mtools with the corrected ctype.h (mtools source can be found at nic.funet.fi: pub/unix/i386/isc/source/mtools* and from several other ftp sites) 4 - /dev/dos[A|B] is hardcoded to 12-bit fats, /dev/dosC is hardcoded for 16-bit fats. There is no /dev/dosD etc. If you have a small harddisk (12-bit FAT), you have to call it A or B. Btw, mtools is not really needed: you can write a tar-file to disk with the rawrite program, and use "tar xvf /dev/xxxx" to untar it unto the linux partition. Thanks to "whoever" for pointing this out (and I hope nobody minds the fact that I never remember names) nicholas@cs.uwa.oz.au (Nicholas Yue) > > (i) 80386 with 80287 I've tried to get a 287 working with linux, but no luck so far. Does anybody know anything about the problems with 287? I tried to put it in protected mode (FSETPM), but that didn't seem to help. I seem to be able to correctly identify it (check for a x87, and if ET is cleared, it's a 287), but it simply won't work it seems? Any pointers to it? Is it at all possible to use a 287 in 386-protected mode? Again I have the problem that I cannot test my changes: the few (unsuccessful) things I tried had to me mailed to nicholas. jtkohl@antipodes.Berkeley.EDU (John T. Kohl): > > It seems whenever I type control-U while in a program, the console bash > dies and the system grinds to a halt. bug? feature? This is an old debugging tool I think. I was testing the keyboard interrupts, and got cc_c[VKILL] to send a SIGKILL to the processes in the tty-group. I used ^U as I never use it myself for other things, and thus promptly forgot about it when it worked. I should make VKILL work the right way (ie just kill the line in cooked mode(?)), but an easy fix to this would be to comment out the line in tty_io.c that calls tty_signal or whatever, and recompile the kernel. Thus you could call it a "feature", even though it isn't documented anywhere (unless you count the sources as docs, which might not be a bad idea anyway). Linus PS. I think I have found the "Invalid TSS: 0000" error that a couple of people have got after soft-booting from DOS: possibly the eflags NT-bit was set, in which case an iret would try to change to TSS 0000, which doesn't exist. It should be corrected in the next version (again, I'm unable to test it - I don't get that error). --[0099]-- [0100] daemon@ATHENA.MIT.EDU (Brian Syme) Linux_Activists 11/19/91 05:20 (18 lines) Subject: Newcomer (sorry folks just bear with me for a min..) Date: Tue, 19 Nov 1991 10:09:29 +0000 From: Brian Syme To: linux-activists@joker.cs.hut.fi Before I start pestering people with daft questions.. is there such a thing as a Linux frequently asked questions list, or similar? Also, is there a list of who is running the system, on what, etc. For info: I'm on a 386sx/20 4MB RAM, 90MB IDE HD, Trying & failing to get linux onto a third 20MB partition (/dev/hd3?), DOS 5 on the first two partitions, [problem is that the minix demo mkfs refuses to create a file system on /dev/hd3 - it complains about the size..] I'll shuddup now.. :-) Brian --[0100]-- [0101] daemon@ATHENA.MIT.EDU (Brian Syme) Linux_Activists 11/19/91 10:19 (20 lines) Subject: Newcomer.. a few questions.. Date: Tue, 19 Nov 1991 14:42:13 +0000 From: Brian Syme To: linux-activists@joker.cs.hut.fi ..the first of which is: Is there a "Frequently Asked Questions" or similar for Linux? If not,.. might be handy? Is there an archive of this mailing list? Is there also a list of who is running Linux, and on what? Might help in targetting questions, advice, etc. For info: I'm on a 386sx/20MHz (TOPCAT chipset), 4MB RAM, 90MB Seagate IDE HD, DOS 5 on 1st & 2nd partitions (FAT-12 then EXTEND, isn't fdisk a pain..) Linux on a final 20MB partition.. Brian Syme Glasgow University Library gxlr07@udcf.gla.ac.uk --[0101]-- [0102] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/19/91 19:55 (31 lines) Subject: GCC problem ? Date: Wed, 20 Nov 91 09:52:10 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: linux-activists@joker.cs.hut.fi G'day, The following program does not behave as expected ----------------cut----------------------cut----------------------------------- #include const static double testvalue = 1.234e-09; int main(int argc, char **argv) { (void) printf("test value = %e\n",testvalue); return(0); } ----------------cut----------------------cut----------------------------------- when compiled under linux's gcc, it prints test value = 1.234000e+00 instead of test value = 1.234000e-09 Anybody have any clues? Thanks In Advance nicholas@cs.uwa.oz.au --[0102]-- [0103] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/20/91 00:40 (10 lines) Subject: New binaries uploaded --- pmake and less Date: Wed, 20 Nov 91 00:36:56 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu Binaries for pmake (the make that comes with BSD 4.4) and for less have been uploaded to tsx-11.mit.edu, nic.funet.fi, and tupac-amaru. These binaries were supplied by John Kohl (jtkohl@cs.berkeley.edu). - Ted --[0103]-- [0104] daemon@ATHENA.MIT.EDU (Tony Travis) Linux_Activists 11/20/91 06:17 (30 lines) Subject: Re: Newcomer.. a few questions.. Date: Wed, 20 Nov 1991 10:41:00 +0000 From: Tony Travis To: linux-activists@joker.cs.hut.fi Cc: ajt@rowett.scot-agric-res-inst.ac.uk, Brian Syme > > ..the first of which is: Is there a "Frequently Asked Questions" or similar > for Linux? If not,.. might be handy? Is there an archive of this mailing > list? Lee McLoughlin is 'mirroring' the Linux archive on where there is already a Minix News archive. I've saved all the mail on the 'activist' list since I joined if that's any use? I could send you a tar of it if you like. > Is there also a list of who is running Linux, and on what? Might help in > targetting questions, advice, etc. For info: (knee tremble) I'm thinking of zapping my Minix 1.5.10/386 in favour of Linux, but I'm not sure! I've got an Elonex 386SX/B with two 40Mb IDE drives and 4Mb RAM. Tony ------------------------------------------------------------------------------- Tony Travis | Rowett Research Institute, | Greenburn Road, Bucksburn, Aberdeen, | UK. AB2 9SB. tel 0224-712751 --[0104]-- [0105] daemon@ATHENA.MIT.EDU (Robert Lund) Linux_Activists 11/20/91 11:18 (23 lines) Subject: FIFOs Date: Wed, 20 Nov 91 09:06:56 MST From: Robert Lund To: linux-activists@joker.cs.hut.fi Has anyone successfully used FIFOs. I have tried but I get the error message: (Read)inode->i_mode=010666 cat: fifo: EINVAL when I try: mknod fifo chmod 666 fifo cat fifo& I can successfully write to it, although its size is always 0. Any ideas. Bob Lund --[0105]-- [0106] daemon@ATHENA.MIT.EDU (Robert Lund) Linux_Activists 11/20/91 11:24 (14 lines) Subject: Re: FIFOs question Date: Wed, 20 Nov 91 09:14:19 MST From: Robert Lund To: linux-activists@joker.cs.hut.fi My example should have shown mkfifo fifo not mknod fifo Bob Lund --[0106]-- [0107] daemon@ATHENA.MIT.EDU (Michael K. Johnson) Linux_Activists 11/20/91 13:31 (27 lines) Subject: problems with binaries Date: Wed, 20 Nov 91 12:18:00 CST From: johnsonm@stolaf.edu (Michael K. Johnson) To: Linux-activists@joker.cs.hut.fi I am new to Linux, and have been having some problems. My main one right now is that I have been bringing binaries from tsx-11 to my computer via dos-formatted disks, and using mread to transfer them to Linux. They uncompress without a hitch, but when I try to run the executable, Linux complains that it cannot execute the binary file. I am also having trouble doing porting work, because I have (as far as I can tell) no editor and no pager. If I am wrong on either point, please point me in the right direction. Even my binaries for sed and tr didn't work, so I can't even use them as editors. I have all sorts of ideas as to why the binaries don't want to execute, but not enough knowledge. If I can get an editor or pager working, I can look at the source to see why this is happening, but I have a chicken/ egg problem here. Thanks for any help you can provide! michaelkjohnson johnsonm@stolaf.edu I don't do .sig 's (as you can tell here, I really don't do .sig's :-) --[0107]-- [0108] daemon@ATHENA.MIT.EDU (Robert Lund) Linux_Activists 11/20/91 15:27 (9 lines) Subject: fifos Date: Wed, 20 Nov 91 13:16:10 MST From: Robert Lund To: Linux-activists@joker.cs.hut.fi Has anyone had any luck getting fifos to work. If so, I'd appreciate hearing how. Bob Lund --[0108]-- [0109] daemon@ATHENA.MIT.EDU (0114) Linux_Activists 11/21/91 04:20 (47 lines) Subject: keyboard.S with GEerman keyboard Date: Thu, 21 Nov 91 10:09:42 +0100 From: 0114 To: linux-activists@joker.cs.hut.fi Cc: Reply_To: upsyf173@comparex.hrz.uni-bielefeld.de Hi all, I think it's time for a GERMAN KEYBOARD DRIVER. So, here it is. "Run this file through uud(ecode), uncompress it and feed it to patch. Don't forget to save the old kernel/chr_drv/keyboard.S. You should then #define KBD_GR in the config.h files and hit make in the src/kernel/chr_drv and src directories to get a new Image file". BTW: I think keyboard.S should be changed to get different key- codes for CursorUp / SHIFT+CursorUp / CONTROL+CursorUp .... which could be defined in a termcap entry. Editors could pro- fit from it. I'm new to GNU asssembler, so I couldn't do it right now. Wolfgang upsyf173@comparex.hrz.uni-bielefeld.de table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 kybd.cdif.Z M'YV0*@*"6%-&CILR;%Z,02/G"QDY=EX0S"/F31@Y9%Q,<1$#1H(I==R >#*&z M#H@8,T[:T#%#AHX:,4[FR!%#08N; PL>3+BPX<.($RM>S#@E 14T=4 X>6,'y MA(R8,&#HD'%#!PT:,FDJ",BUJU<56P7.F$&#Q=@<(+K:Q#FV[(P<,$#^Z,). N3,%C$8 $CL((5($8@3&,&!)DRA ^20;%$w M")$O1Z2D> R"],0O;<+ T4$:KUZ^(!)3;>TBS)PQ:=* $!%#!MD:-F[@@,N%v MRPD1M%_W[7V#10[:MG'K%A'G3D$Z>NJD>0,'R KDD%WO73Z#,?3;N7?;)F/Fu M#!HU:]ALZ>(%O&#EL5F<&'%>^NX\>(QAAQANM,&""RW8)QYLB9V@ F-FR9! t M B^H ,(,-K3P5EHOT$:882HIQMB$%5X81 LTH*5"A^'E-9Y?+4"86(,K4&@As M#2?24 2'R;TXHXQ >E0B#4:T4$,-/+:(WPD\>%C881V)V!ADI)$V!QJ4T8&:r M:JPIZ2,+L[4877HBA,"%"".04(()+Z"00@\_@*&@B[ QYUQ_9$9Q11%24*%%q M%4D\ 45Q*LR)'TKFB8G>=$%,08011R"AQ!),[-&''X9^><()>$Z7!19#6"&$p M$TWLH,,7F3*HWX.)M42BA1AJJ"*+@GT(I0U2OFHBBK/V"-L),?Y(HXT@X(CBo MCBOZVI>P08XX9)%')GG?BR?XX"2(42XV96F0A<&&EJFMIFQ^V^(UYG1

\_517+JI+IOHM+\"T2RS_(Y[@A^*E5-TPLD48B63&^??UU+92):5NEl I79*Q,4<9@4DFAQQOR+%;9T2T0$<> To: Linux-activists@joker.cs.hut.fi And here's the weekly bug-report again (although this time it's mostly harmless "features"). The current gcc for linux is buggy: it doesn't recognise exponents after a floating point number. This isn't gcc's fault: my library-routines are buggy. I've corrected this (I think this one routine was from the estdio suite), and my gcc now handles the correctly. I hope that nobody minds very much, and I'll upgrade the thing at the same time with version 0.11. These kind of library bugs will hopefully disappear with the GNU libc.a: I have a pre-release, and will slowly incorporate parts of it. I hope arl will port the whole thing some day. fifos can be made, but they aren't really supported. Sorry. I don't think they will be supported in the next release either: be patient (or implement them yourself: I'll be happy to use your code) Creating a new file ignores the current euid and egid, and all files will be owned by root/root. You don't ordinarily notice this, as you cannot be other than root without some hacking. Then to some happier things: I seem to have gotten the 287-support working. nicholas@whatever is porting the bsd math-functions to linux, and will make different libraries for none/287/387. Linus --[0110]-- [0111] daemon@ATHENA.MIT.EDU (Michael K. Johnson) Linux_Activists 11/21/91 10:04 (13 lines) Subject: binary problems Date: Thu, 21 Nov 91 08:56:26 CST From: johnsonm@stolaf.edu (Michael K. Johnson) To: Linux-activists@joker.cs.hut.fi Thanks to all who helped me with my binary problems. Seems staying up all hours makes one forget to chmod 755 I have also got editor and pager going, so I'm happy for now :-) michaelkjohnson johnsonm@stolaf.edu I don't do .sig's --[0111]-- [0112] daemon@ATHENA.MIT.EDU (Galen Hunt) Linux_Activists 11/21/91 11:03 (9 lines) Subject: BSD Network stuff... Date: Thu, 21 Nov 91 08:53:41 mst From: Galen Hunt To: Linux-activists@joker.cs.hut.fi To the person that said he would work on the Berkeley network stuff, please drop me an email message as I would like to help you out. galen g-hunt@ee.utah.edu --[0112]-- [0113] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 11/21/91 12:21 (16 lines) Subject: re: BSD Network stuff... Date: Thu, 21 Nov 91 09:09:40 PST To: linux-activists@joker.cs.hut.fi Cc: g-hunt@ee.utah.edu From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu Well, I may have *sounded* like I was going to tackle the BSD networking stuff, but what I really intended to mean was that I'm tackling code in the BSD "networking" release 2 (which includes a whole heap of code for utilities and libraries). Anybody who wants to deal with the networking code itself (sockets, tcp, etc) is welcome to look at that; for the moment I'm more interested in getting various utilities and libraries from BSD working (they seem to have a rather large C library; maybe even complete!). John --[0113]-- [0114] daemon@ATHENA.MIT.EDU (tthorn@daimi.aau.dk) Linux_Activists 11/23/91 21:58 (24 lines) Subject: Adaptech-1542 driver. Linking system. From: tthorn@daimi.aau.dk To: Linux-activists@joker.cs.hut.fi Date: Sun, 24 Nov 91 3:47:35 MET Hi Linuxers, I'm in the unfortunate situations that I cannot boot Linux:-< My problem is my Adaptech-1542 controler, that Linux doesn't know about. I set out to build a new kernel without harddisk driver using my Interactive Unix 2.0.2 and the GNU tools as development enviroment, but I ran into troubles: gld under ISC doesn't seem to do the same as the Linux version. As pr. default it originates the text at 0xc8 and the data at 0x400000. I can set the text to 0x0, but what's the start of the data- segment? Are there anyone else out there with an adaptech controler dealing with the same problem? Any on the ST-02? /Tommy Thorn --[0114]-- [0115] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/24/91 17:27 (27 lines) Subject: Problem with less and elvis Date: Sun, 24 Nov 91 23:21:42 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi I've got less.Z on tsx-11.mit.edu each time i use it, it works fine until the last line where it just stops at that time the only thing I can do is C and this only leads to "child 3 died with code 0000". The only thing i can do is a 3fingers salute About elvis, i've got it on amedeas, then i've done what C. Darken has recommanded BUT eval gcc -DDATE causes trouble "can't open /tmp/????? " and then gcc regexp causes the following message: invalid operand 0000 EIP 000f:0000C050 EFLAGS 00010202 ESP 0017:03FFF2A8 fs:0010 base:20000000 limit 04000000 Stack .... PID 167 process nr8 f0 85 d2 0f 85 fe fe ff ff 89 any ideas [mmc] --[0115]-- [0116] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/24/91 17:32 (11 lines) Subject: mea culpae Date: Sun, 24 Nov 91 23:28:06 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi How stupid am I, i've forgotten that less is vi oriented and so at the end :q is a good exit my only excuse is tht i'm used to utilize more on sun still remains the problem of compilation of elvis [mmc] --[0116]-- [0117] daemon@ATHENA.MIT.EDU (Michael K. Johnson) Linux_Activists 11/24/91 21:06 (19 lines) Subject: less Date: Sun, 24 Nov 91 19:59:22 CST From: johnsonm@stolaf.edu (Michael K. Johnson) To: Linux-activists@joker.cs.hut.fi I don't acually know if this will work on Linux, but I don't know why it wouldn't -- it works on the suns... If you hate the way that less makes you exit with :q, try adding these lines to your .profile: LESS="-e"; export LESS Then less should automatically exit at the end of files. Hope this helps those of us who are more or less annoyed with the default behavior of less...:-) michaelkjohnson johnsonm@stolaf.edu I don't do .sig's --[0117]-- [0118] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 11/25/91 03:32 (64 lines) Subject: The latest TODO list Date: Mon, 25 Nov 91 09:21:38 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! This is my weekly post (just to remind you that it exists, I get almost no feedback :-() of the TODO list, which is also available on tupac-amaru So if you have any additions to it please mail me. I hope in one or two weeks, there will also be a first FAQ. Again, if you have any ideas what should belong into it, please mail. BTW: Has anyone succesfully crosscompiled Linux under another OS? I tried it with DJGPP under DOS, and I can't get it running. *ANY* help with it would be appreciated. C U l8er, Robert Blum What follows is the new TODO-file: This files contains the status of several tools for Linux Currently ported projects: Name: ported by: bison nicholas@cs.uwa.oz.au diff tytso@mit.edu flex tytso@mit.edu kermit tytso@mit.edu less jtkohl@berkeley.cs.edu pmake jtkohl@berkeley.cs.edu All these programs can be FTPed as binaries from the following sites nic.funet.fi tsx-11.mit.edu tupac-amaru.informatik.rwth-aachen.de =============================================================================== Projects currently under development: Name: ported by: Remarks c386 blum@messua.informatik.rwth-aachen.de Is working under Linux A cc for this exists Is currently teached ANSI. Any help on this would be appreciated. gawk nicholas@cs.uwa.oz.au Still needs a working mathlib. networking jtkohl@echidna.berkeley.edu Mainly the BSD code Perhaps even ffs Networking= BSD networking Tape VOL2 mathlib nicholas@cs.uwa.oz.au Will be a library for 387/287/soft-float-code VFS proven@athena.mit.edu VFS=Virtual File System Will probably out with Linux 0.11 --[0118]-- [0119] daemon@ATHENA.MIT.EDU (Tony Travis) Linux_Activists 11/25/91 05:32 (61 lines) Subject: more or less Date: Mon, 25 Nov 1991 10:06:00 +0000 From: Tony Travis To: linux-activists@joker.cs.hut.fi I've been reading the comments about vi and less in the last few messages on this list. I much prefer ue (MicroEMACS) as an editor to be called from the pager rather than vi. On Minix/Linux you could edit the sources, and recompile but it's not so easy if you haven't got the sources and, under SunOS for example, the path /usr/bin/vi is hard-coded into the more binary. 'good' programs read and respect the EDITOR variable in the environment, but more seems to be a notable exception. Here is a vi stub that parses the goto argument for vi and invokes ue instead. Install it as /usr/bin/vi :-) Tony ------------------------------------------------------------------------------- Tony Travis | Rowett Research Institute, | Greenburn Road, Bucksburn, Aberdeen, | UK. AB2 9SB. tel 0224-712751 ----- 8< ----- cut here ----- 8< ----- static char *sccsid = "@(#)vi.c 05-Nov-90 A.J.Travis"; /* * kludge to call ue when programs exec vi (eg. more) */ #include #define SAME 0 /* strcmp() equal */ main(argc, argv) int argc; char *argv[]; { char command[BUFSIZ]; int line = 1; if (strcmp(getenv("EDITOR"), "vi") == SAME) { fprintf(stderr, "vi: editor not available on this system\n"); exit(-1); } if (argc > 3) { fprintf(stderr, "usage: vi [+line] [file]\n"); exit(-1); } if (argc > 2) { if (*argv[1] == '+') line = atoi(argv[1]) + 1; argv++; --argc; } if (argc > 1) sprintf(command, "ue -v -g%d %s", line, argv[1]); else sprintf(command, "ue"); system(command); } --[0119]-- [0120] daemon@ATHENA.MIT.EDU (Galen Hunt) Linux_Activists 11/25/91 10:19 (30 lines) Subject: Cross compiling Linux Date: Mon, 25 Nov 91 08:03:38 mst From: Galen Hunt To: linux-activists@joker.cs.hut.fi > BTW: Has anyone succesfully crosscompiled Linux under another OS? > I tried it with DJGPP under DOS, and I can't get it running. *ANY* help with > it would be appreciated. > > C U l8er, > Robert Blum I've successfully cross compiled Linux from the NeXT using GNU C which I had customized for doing the 68040 to 80386 cross compile. If Linux isn't compiling under DJGPP it probably has something to do with the wonderful 8 character dos file names. If it won't run you probably have a problem of another color. It wouldn't run for me at first until I discovered the following: Linux's a.out formatted files use a segment size of 1024 bytes as opposed to most implementations of unix which use either a 4096 or 8192 byte segment size. This will kill you in two ways, first the build.c program put together the boot image for a 1K segment size, this is very easy to get around, just touch up build.c. Evidence of this problem is that when Linux boots, it displays the message about loading the kernel goes out to disk for a few seconds and then either hangs or reboots the computer. The second problem is in the kernel code which loads executables because it once again looks at the 1024 segment offset to load code. The easiest approach of course is to simply recompiler GNU ld on your host machine so that it uses 1024 byte segment sizes. galen --[0120]-- [0121] daemon@ATHENA.MIT.EDU (David R. Giller) Linux_Activists 11/25/91 20:13 (42 lines) Subject: Re: Adaptech-1542 driver. Linking system. From: rafetmad@cheshire.oxy.edu (David R. Giller) To: linux-activists@joker.cs.hut.fi Date: Mon, 25 Nov 91 17:02:20 PST In-Reply-To: <9111240247.AA08306@ananke.daimi.aau.dk>; from "tthorn@daimi.aau.dk" at Nov 24, 91 3:47 am > Hi Linuxers, > > I'm in the unfortunate situations that I cannot boot > Linux:-< My problem is my Adaptech-1542 controler, that > Linux doesn't know about. I have some happy news for all you out there using an EISA bus PC with a Mylex EICS SCSI controller (probably just me). This also applies to all you with a SCSI controller that emulates IDE or ST-506. Linux works with these drives! I am going to see if I can slink some sample code from the Mylex people to include in my kernel to enable things like hardware caching and 32-bit mode, but as it is, the drive works. I am not out of trouble yet, though. I found out that my Mylex emulates IDE the hard way: I installed an IDE to coexist, and the combination trashed my drive. Bummer. After the dust cleared, however, I had a drive that was partitioned better and uses the controller features better under DOS and OS/2. Then, while trying to install Linux, to my dismay -- Minix no longer boots. No matter what I do, on any disk I might try, I always get 'root filesystem corrupted' and panic stop from the minix kernel on startup. Anyone have any clues? This setup worked before... All I chaanged was the partition table. Has anyone created a linux mkfs? Thanks, -Dave -- --------------------------------------------------------------------------- David Giller -- rafetmad@oxy.edu | "Some of us wake up, others roll over." Box 134, Occidental College | "Shrouds, they have no pockets." Los Angeles, CA 90041 | -John Lydon --------------------------------------------------------------------------- --[0121]-- [0122] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/25/91 22:36 (394 lines) Subject: newest mkfs for linux Date: Tue, 26 Nov 1991 05:22:04 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Ok, here's a mkfs for those that want to try it out. It works on my system (limited testing), and hopefully we can get possible bugs ironed out in time for 0.11 (and currently I'm hoping to release that December 8th or something). This mkfs has two modes: checking and reckless. On a disk that you know has no problems, you just write "mkfs /dev/hdx size", and you should have a new system (DON'T do this on a mounted drive: unlike fsck there is NO way that will work, and you'll probably mess it up completely.) On a disk with possible read-errors, use "mkfs -c /dev/hdx size", which will read all the blocks and mark those unreable into a special file "/.badblocks". I'm not making any guarantees. This is a fast hack (mainly yesterday and today), and I have tested only on small filesystems, faking errors by telling mkfs that the filesystem is bigger than it actually is. If you think the algorithm for marking bad blocks is weird: you're right. Linus PS. Using -c on a big harddisk or on floppies is slow, even though I try to speed it up by reading 32kB at a time. Also, the current linux kernel will print out error messages for all the IO errors - that's normal, and that's what this mkfs should map out. ---------------- snip snip ---------- /* * mkfs.c - make a linux (minix) file-system. * * (C) 1991 Linus Torvalds. This file may be redistributed as per * the Linux copyright. */ /* * 24.11.91 - time began. Used the fsck sources to get started. * * 25.11.91 - corrected some bugs. Added support for ".badblocks" * The algorithm for ".badblocks" is a bit weird, but * it should work. Oh, well. * * Usuage: mkfs [-c] device size-in-blocks * * -c for readablility checking (SLOW!) * * The device may be a block device or a image of one, but this isn't * enforced (but it's not much fun on a character device :-). */ #include #include #include #include #include #include #include #include #include #ifndef __GNUC__ #error "needs gcc for the bitop-__asm__'s" #endif #ifndef __linux__ #define volatile #endif #define ROOT_INO 1 #define BAD_INO 2 #define TEST_BUFFER_BLOCKS 32 #define MAX_GOOD_BLOCKS 512 #define UPPER(size,n) ((size+((n)-1))/(n)) #define INODE_SIZE (sizeof(struct d_inode)) #define INODE_BLOCKS UPPER(INODES,INODES_PER_BLOCK) #define INODE_BUFFER_SIZE (INODE_BLOCKS * BLOCK_SIZE) #define BITS_PER_BLOCK (BLOCK_SIZE<<3) static char * program_name = "mkfs"; static char * device_name = NULL; static int DEV = -1; static long BLOCKS = 0; static int check = 0; static int badblocks = 0; #define ROOT_INO_STRING "\001\000" #define BAD_INO_STRING "\002\000" static char root_block[BLOCK_SIZE] = ROOT_INO_STRING ".\0\0\0\0\0\0\0\0\0\0\0\0\0" ROOT_INO_STRING "..\0\0\0\0\0\0\0\0\0\0\0\0" BAD_INO_STRING ".badblocks\0\0\0\0"; static char * inode_buffer = NULL; #define Inode (((struct d_inode *) inode_buffer)-1) static char super_block_buffer[BLOCK_SIZE]; #define Super (*(struct super_block *)super_block_buffer) #define INODES ((unsigned long)Super.s_ninodes) #define ZONES ((unsigned long)Super.s_nzones) #define IMAPS ((unsigned long)Super.s_imap_blocks) #define ZMAPS ((unsigned long)Super.s_zmap_blocks) #define FIRSTZONE ((unsigned long)Super.s_firstdatazone) #define ZONESIZE ((unsigned long)Super.s_log_zone_size) #define MAXSIZE ((unsigned long)Super.s_max_size) #define MAGIC (Super.s_magic) #define NORM_FIRSTZONE (2+IMAPS+ZMAPS+INODE_BLOCKS) static char inode_map[BLOCK_SIZE * I_MAP_SLOTS]; static char zone_map[BLOCK_SIZE * Z_MAP_SLOTS]; static unsigned short good_blocks_table[MAX_GOOD_BLOCKS]; static int used_good_blocks = 0; #define bitop(name,op) \ static inline int name(char * addr,unsigned int nr) \ { \ int __res; \ __asm__ __volatile__("bt" op " %1,%2; adcl $0,%0" \ :"=g" (__res) \ :"r" (nr),"m" (*(addr)),"0" (0)); \ return __res; \ } bitop(bit,"") bitop(setbit,"s") bitop(clrbit,"r") #define inode_in_use(x) (bit(inode_map,(x))) #define zone_in_use(x) (bit(zone_map,(x)-FIRSTZONE+1)) #define mark_inode(x) (setbit(inode_map,(x))) #define unmark_inode(x) (clrbit(inode_map,(x))) #define mark_zone(x) (setbit(zone_map,(x)-FIRSTZONE+1)) #define unmark_zone(x) (clrbit(zone_map,(x)-FIRSTZONE+1)) /* * Volatile to let gcc know that this doesn't return. When trying * to compile this under minix, volatile gives a warning, as * exit() isn't defined as volatile under minix. */ volatile void fatal_error(const char * fmt_string) { fprintf(stderr,fmt_string,program_name,device_name); exit(1); } #define usage() fatal_error("Usage: %s [-c] /dev/name blocks\n") #define die(str) fatal_error("%s: " str "\n") void write_tables(void) { if (BLOCK_SIZE != lseek(DEV, BLOCK_SIZE, SEEK_SET)) die("seek failed in write_tables"); if (BLOCK_SIZE != write(DEV, super_block_buffer, BLOCK_SIZE)) die("unable to write super-block"); if (IMAPS*BLOCK_SIZE != write(DEV,inode_map,IMAPS*BLOCK_SIZE)) die("Unable to write inode map"); if (ZMAPS*BLOCK_SIZE != write(DEV,zone_map,ZMAPS*BLOCK_SIZE)) die("Unable to write zone map"); if (INODE_BUFFER_SIZE != write(DEV,inode_buffer,INODE_BUFFER_SIZE)) die("Unable to write inodes"); } void write_block(int blk, char * buffer) { if (blk*BLOCK_SIZE != lseek(DEV, blk*BLOCK_SIZE, SEEK_SET)) die("seek failed in write_block"); if (BLOCK_SIZE != write(DEV, buffer, BLOCK_SIZE)) die("write failed in write_block"); } int get_free_block(void) { int blk; if (used_good_blocks+1 >= MAX_GOOD_BLOCKS) die("too many bad blocks"); if (used_good_blocks) blk = good_blocks_table[used_good_blocks-1]+1; else blk = FIRSTZONE; while (blk < ZONES && zone_in_use(blk)) blk++; if (blk >= ZONES) die("not enough good blocks"); good_blocks_table[used_good_blocks] = blk; used_good_blocks++; return blk; } void mark_good_blocks(void) { int blk; for (blk=0 ; blk < used_good_blocks ; blk++) mark_zone(good_blocks_table[blk]); } inline int next(int zone) { if (!zone) zone = FIRSTZONE-1; while (++zone < ZONES) if (zone_in_use(zone)) return zone; return 0; } void make_bad_inode(void) { struct d_inode * inode = &Inode[BAD_INO]; int i,j,zone; int ind=0,dind=0; unsigned short ind_block[BLOCK_SIZE>>1]; unsigned short dind_block[BLOCK_SIZE>>1]; #define NEXT_BAD (zone = next(zone)) if (!badblocks) return; mark_inode(BAD_INO); inode->i_nlinks = 1; inode->i_time = time(NULL); inode->i_mode = S_IFREG + 0000; inode->i_size = badblocks*BLOCK_SIZE; zone = next(0); for (i=0 ; i<7 ; i++) { inode->i_zone[i] = zone; if (!NEXT_BAD) goto end_bad; } inode->i_zone[7] = ind = get_free_block(); memset(ind_block,0,BLOCK_SIZE); for (i=0 ; i<512 ; i++) { ind_block[i] = zone; if (!NEXT_BAD) goto end_bad; } inode->i_zone[8] = dind = get_free_block(); memset(dind_block,0,BLOCK_SIZE); for (i=0 ; i<512 ; i++) { write_block(ind,(char *) ind_block); dind_block[i] = ind = get_free_block(); memset(ind_block,0,BLOCK_SIZE); for (j=0 ; j<512 ; j++) { ind_block[j] = zone; if (!NEXT_BAD) goto end_bad; } } die("too many bad blocks"); end_bad: if (ind) write_block(ind, (char *) ind_block); if (dind) write_block(dind, (char *) dind_block); } void make_root_inode(void) { struct d_inode * inode = &Inode[ROOT_INO]; mark_inode(ROOT_INO); inode->i_zone[0] = get_free_block(); inode->i_nlinks = 2; inode->i_time = time(NULL); if (badblocks) inode->i_size = 48; else inode->i_size = 32; inode->i_mode = S_IFDIR + 0755; write_block(inode->i_zone[0],root_block); } void setup_tables(void) { int i; memset(inode_map,0xff,sizeof(inode_map)); memset(zone_map,0xff,sizeof(zone_map)); memset(super_block_buffer,0,BLOCK_SIZE); MAGIC = SUPER_MAGIC; ZONESIZE = 0; MAXSIZE = (7+512+512*512)*1024; ZONES = BLOCKS; /* some magic nrs: 1 inode / 3 blocks */ INODES = BLOCKS/3; /* I don't want some off-by-one errors, so this hack... */ if ((INODES & 8191) > 8188) INODES -= 5; if ((INODES & 8191) < 10) INODES -= 20; IMAPS = UPPER(INODES,BITS_PER_BLOCK); ZMAPS = 0; while (ZMAPS != UPPER(BLOCKS - NORM_FIRSTZONE,BITS_PER_BLOCK)) ZMAPS = UPPER(BLOCKS - NORM_FIRSTZONE,BITS_PER_BLOCK); FIRSTZONE = NORM_FIRSTZONE; for (i = FIRSTZONE ; i ZONES) try = ZONES-current_block; got = read(DEV, buffer, try * BLOCK_SIZE); if (got<0) got = 0; if (got & (BLOCK_SIZE-1)) printf("Weird values in check_blocks: probably bugs\n"); got /= BLOCK_SIZE; current_block += got; if (got == try) continue; if (current_block < FIRSTZONE) die("bad blocks before data-area: cannot make fs"); mark_zone(current_block); badblocks++; current_block++; } if (badblocks) printf("%d bad block%s\n",badblocks,(badblocks>1)?"s":""); } int main(int argc, char ** argv) { char * tmp; struct stat statbuf; if (argc && *argv) program_name = *argv; if (INODE_SIZE * INODES_PER_BLOCK != BLOCK_SIZE) die("bad inode size"); while (argc-- > 1) { argv++; if (argv[0][0] != '-') if (device_name) { BLOCKS = strtol(argv[0],&tmp,0); if (*tmp) usage(); } else device_name = argv[0]; else while (*++argv[0]) switch (argv[0][0]) { case 'c': check=1; break; default: usage(); } } if (!device_name || BLOCKS<10 || BLOCKS > 65536) usage(); DEV = open(device_name,O_RDWR); if (DEV<0) die("unable to open %s"); if (fstat(DEV,&statbuf)<0) die("unable to stat %s"); if (!S_ISBLK(statbuf.st_mode)) check=0; else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0305) die("Will not try to make filesystem on '%s'"); setup_tables(); if (check) check_blocks(); make_root_inode(); make_bad_inode(); mark_good_blocks(); write_tables(); return 0; } --[0122]-- [0123] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/27/91 03:56 (58 lines) Subject: help again and again Date: Wed, 27 Nov 91 09:48:06 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi Hi, there It seems that i have trouble with compilition under linux, these are the things i've remarked. first of all the config: 386sx, no 387, 2Mo ram, 30 Meg Linux partition on Hd the soft config: those on tsx11 mainly + those which appeared in this mailing list ok, now the things i tried compile fsck : noway (gcc -c works not the -o which complains in many undefined symbols such as IN or inode-map zone-map super-block-buffer .... the rest has been skipped compile elvis: not yet fixed (i'll try some C. Darken proposal) compile linux: first i've changer the buffer.c i've applied the build patch i've done some ack on keyboard.S to have a more french oriented kbd i've change the config.h for the kbd, and commented the lines in the linux/Makefile (those for the 16binaries and the chmem) and then just type make - the (cd ?????;make) *DOES NOT WORK* in the sense that it does not run the gcc -c commands, only the gld ones so ERROR - then i tried a bottom up compilation of linux subtree, i.e apply by hand the make on each subdirs, and then run make in linux. the make in sub-dirs works fine, not the final linking in general it complains about a lot of undefinde symbols - finally i've tried the make clean command funnily :-( it does not work, just clean the linux and boot directories (the one without make) THEN (again yes) i thought it was due to the place of the linux subtree which is not under /, but under /usr/src so i've change all the path in absolute path name. RESULT: NIET THEN and LAST: i've changed in the subdirs the clean order from rm -f blabla to rm -i blabla in that case the global clean works fine, and asks me for the deletion which i agree and it does clean. so questions are: has any one tried to compile linux under linux? has any one had such experience? has any one cast a spell on me? 8-) what about make/ PS: i've tried some simple compilation as uudecode/wc which were ok [mmc] --[0123]-- [0124] daemon@ATHENA.MIT.EDU (Mika Matti Jalava) Linux_Activists 11/27/91 04:07 (21 lines) Subject: Re: help again and again From: Mika Matti Jalava To: linux-activists@joker.cs.hut.fi Date: Wed, 27 Nov 91 11:01:37 EET In-Reply-To: <9111270848.AA17452@geocub.greco-prog.fr>; from "Marc CORSINI" at Nov 27, 91 9:48 am > ok, now the things i tried > compile fsck : noway (gcc -c works not the -o which complains in many > undefined symbols such as IN or inode-map zone-map super-block-buffer .... > the rest has been skipped Do you have all the includes in place? > has any one tried to compile linux under linux? Yes, no problems (with compiling, that is, the compiled images work great. I have had a LOT of problems with the file system but that's probably because of my old drives) > has any one cast a spell on me? 8-) Not me... Mika --[0124]-- [0125] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 11/27/91 05:17 (70 lines) Subject: Re:help again and again Date: Wed, 27 Nov 91 11:01:46 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! Today there was the following mail in my mbox: >From corsini@geocub.greco-prog.fr Wed Nov 27 09:52:10 1991 >Subject: help again and again and I think that the answer will be of (more or less) general interest, so I decided to not reply personally and instead via mailing list. Corsini wrote: >Hi, there >It seems that i have trouble with compilition under linux, these are >the things i've remarked. >first of all the config: >386sx, no 387, 2Mo ram, 30 Meg Linux partition on Hd And whoops, there's the problem. GCC dies silently if it has not enough memory instead of issuing any warnings. It simply produces incomplete .s/.o files, and nothing will work. If you think of it, it's quite simple: Memory you have: 2000 KB Kernel/Buffers: 1000 KB bash: approx. 300 KB cc1: approx. 500 KB =============================== Free space: approx. 200 KB And into these 200 KB gcc/bash have to squeeze their complete bss sections, and I forgot make in the list of memory hogs. Seems a little bit tight, huh? There are some solutions to it: 1) Buy another 2 Megs of memory, and all will work fine. 2) Wait for c386 to come out, it uses only 100 KB. I intended to make it available as soon as it understands __asm__ and ANSI, but if there's a real need for it, I could release it in its original version as a K&R compiler. But this means: No kernel compiling, compilation of other files only with tweaked #include-files 3) Join me in my efforts to make this beast ANSI conforming... 4) Try to cross-develop under DOS with DJGPP, but there are several obstacles a) The gcc header of system seems only 32 bytes, so change build.c b) gld links code starting at 0x1020, so give it a -Ttext 0 c) gld links data starting at 0x400000, so give it a -Tdata 15000 But even with these changes, my kernel does not work, so could anybody help me with this, please ? >so questions are: >has any one tried to compile linux under linux? Yes, and it worked no way. >has any one had such experience? Yes, not enough mem.... >has any one cast a spell on me? 8-) Yes, GNU has cast the "eat lots of memory"-spell onto it's software >what about make/ As far as I can tell from my experiences with c386, this seems to be working, but you might try pmake... >PS: i've tried some simple compilation as uudecode/wc which were ok This is *REALLY* surprising to me, since gcc doesn't manage to create a "hello world" program. Are the sources without any #include? Then it might work, otherwise we are in trouble.... Hope this helps, Robert Blum --[0125]-- [0126] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/27/91 05:41 (21 lines) Subject: Re:help again and again Date: Wed, 27 Nov 91 11:27:47 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: blum@cip-s01.informatik.rwth-aachen.de Cc: linux-activists@joker.cs.hut.fi In-Reply-To: Robert Blum's message of Wed, 27 Nov 91 11:01:46 +0100 <9111271001.AA26828@messua.informatik.rwth-aachen.de> Thanks for the help, about the uudecode and wc, indeed the includes are very few stdio,ctypes and one or two more. On the other hand i still suspect heavily the make since on elvis compiling with make all works fine except the gcc -O -o -c of cmd1.c the gcc -o of virec the gcc -o of refont BUT when i do these commands by hand they work great so .. i'll change to pmake [mmc] --[0126]-- [0127] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 11/27/91 06:24 (12 lines) Subject: elvis compilation/help again and again Date: Wed, 27 Nov 91 10:18:45 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi Ok just tried the elvis compilation nearly good, just a /tmp/cc000041.s can't open for Reading about the include i've put the include.tar.Z where it is supposed to be i guess in /usr/include, have i forgotten some thing? [mmc] --[0127]-- [0128] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/27/91 09:53 (34 lines) Subject: 486 problem Date: Wed, 27 Nov 91 23:44:13 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: linux-activists@joker.cs.hut.fi G'day, Today, I upgraded my machine from a 386DX to a 486DX (using the old drives), I had the following problem. ------cut------------cut----------- Partiion table ok ...... W/X free blocks Y/Z free inodes HD-controller reset failed : 7f 501 buffers = 513024 bytes buffer space Free mem: 3145728 Ok. general protection: 0000 EIP : 000f:00000013 etc........ -------cut-----------cut------------- and then it hangs! I had it working beautifully on a 386DX, I don't have a 386 anymore! Any opinion? Thanks In Advance nicholas@cs.uwa.oz.au --[0128]-- [0129] daemon@ATHENA.MIT.EDU (Wolfgang Thiel) Linux_Activists 11/27/91 10:53 (11 lines) Subject: Re: help again and again Date: Wed, 27 Nov 91 11:36:37 CET From: Wolfgang Thiel To: Marc CORSINI , In-Reply-To: Your message of Wed, 27 Nov 91 09:48:06 EST Hi, I had absolutely no problems compilung linux under linux (486, 8MB). Sounds like gcc and/or make are running out of memory. Wolfgang --[0129]-- [0130] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/27/91 11:34 (36 lines) Subject: Re: help again and again Date: Wed, 27 Nov 91 11:25:02 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: blum@cip-s01.informatik.rwth-aachen.de Cc: linux-activists@joker.cs.hut.fi In-Reply-To: Robert Blum's message of Wed, 27 Nov 91 11:01:46 +0100, Reply-To: tytso@athena.mit.edu Date: Wed, 27 Nov 91 11:01:46 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) Memory you have: 2000 KB Kernel/Buffers: 1000 KB bash: approx. 300 KB cc1: approx. 500 KB =============================== Free space: approx. 200 KB And into these 200 KB gcc/bash have to squeeze their complete bss sections, and I forgot make in the list of memory hogs. Seems a little bit tight, huh? If this is the problem, one solution might be to modify the Makefile so that instead of compiling and assembling a file at the same time, to split it into two steps: .c.s: ; cc $(CFLAGS) -S $*.c .s.o: ; gas $(LDFLAGS) -o $*.o $*.s That way, the compiler and the assembler won't need to be in memory at the same time. Someone with two meg of memory should try this, and see if this will free enough memory so that a compile happens. Another solution, of course, is to implement paging under Linux. :-) - Ted --[0130]-- [0131] daemon@ATHENA.MIT.EDU (tthorn@daimi.aau.dk) Linux_Activists 11/27/91 12:25 (19 lines) Subject: Building a hd-less bootimage..? From: tthorn@daimi.aau.dk To: Linux-Activists@joker.cs.hut.fi (linux) Date: Wed, 27 Nov 91 18:17:33 MET Hi all (yes, yes, it's me again:-) I still haven't seen Linux run.) With the kind help of Galen Hunt, I've succed in building a new boot- image. I'm aware that it's most likely my adaptech 1542B that kills it, but just commenting hd_init out didn't help. The systems gets as far as to 'move_to_user_mode' in main.c. I would like to succed with a hd-less Linux, before attempting an adaptech driver. Any clues on what to remove/how to build such a kernel? Sorry to have taken your time. /Tommy "me again" Thorn --[0131]-- [0132] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/27/91 12:46 (27 lines) Subject: Re: Building a hd-less bootimage..? Date: Wed, 27 Nov 1991 19:29:00 +0200 From: Linus Benedict Torvalds In-Reply-To: tthorn@daimi.aau.dk's message as of Nov 27, 18:17 To: tthorn@daimi.aau.dk, Linux-Activists@joker.cs.hut.fi (linux) tthorn@daimi.aau.dk: "Building a hd-less bootimage..?" (Nov 27, 18:17): > Hi all (yes, yes, it's me again:-) I still haven't seen Linux run.) > > With the kind help of Galen Hunt, I've succed in building a new boot- > image. I'm aware that it's most likely my adaptech 1542B that kills > it, but just commenting hd_init out didn't help. The systems gets > as far as to 'move_to_user_mode' in main.c. > > I would like to succed with a hd-less Linux, before attempting > an adaptech driver. Any clues on what to remove/how to build such > a kernel? You'll have to comment out all the stuff in "sys_setup" which concerns harddisks. hd_init() just sets up the interrupt addresses and enables them, but doesn't read the partition tables etc. The reason is simple: hd_init() may not sleep, as it is called when we aren't really set up yet, so it cannot read the disk, just set up for it. sys_setup mounts the root etc, so you cannot just comment it out totally, you have to comment out just the partition-reading etc. Linus --[0132]-- [0133] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 11/27/91 14:56 (20 lines) Subject: X11R5 has 386/VGA support... Date: Wed, 27 Nov 91 14:48:04 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu FYI, in case anybody feels like tackling it, the X11R5 distribution includes a 386/SVGA X server, with drivers to support the GVGA, PVGA1A, ET3000 and ET4000 chipsets in 256 color mode. It's designed for SCO Unix, but it shouldn't *too* hard to port it to Linux.... :-) I imagine that the major problems involved in porting it to Linux are (in order of severity) no FIFO support, no pty support, and no networking interface. The last actually isn't very important (the clients and the server could communicate through unix:0), but it would be nice to have, eventually. So, is anyone interesting in getting X11 to work on Linux? 'twould be really neat! - Ted --[0133]-- [0134] daemon@ATHENA.MIT.EDU (Hakkarainen Kimmo) Linux_Activists 11/28/91 05:54 (15 lines) Subject: kermit problem From: h108373@cs.tut.fi (Hakkarainen Kimmo) To: linux-activists@joker.cs.hut.fi (Linux activists) Date: Thu, 28 Nov 91 12:40:32 EET Hi linuxers, My kermit program terminates in my linux machine when I try to send CNTL-c to remote machine. Shouldn't kermit operate in raw-mode instead of c-break-mode ? Thank's in advance. -- Kimmo Hakkarainen (h108373@cc.tut.fi) --[0134]-- [0135] daemon@ATHENA.MIT.EDU (Nicholas Yue) Linux_Activists 11/29/91 19:47 (32 lines) Subject: 2nd Physical Hard-Disk Date: Sat, 30 Nov 91 09:18:22 WST From: nicholas@cs.uwa.oz.au (Nicholas Yue) To: linux-activists@joker.cs.hut.fi G'day, How do I mount the 2nd hard-disk (automagically ;-). The boot floppy can be configured to mount the root file system form /dev/hdX where 1<=X<=4 OR 6<=X<=9 I know I can mount the 2nd hardisk manually mount /dev/hd6 /home (example) Does this means that I have to have to umount /dev/hd6 (example) it everytime I reboot the machine or is it ok to leave it as it is? On the Sun, there is a file call "fstab" which the boot process looks for. Will there be a "shutdown" program to umount the hard-disk? Thanks In Advance nicholas@cs.uwa.oz.au --[0135]-- [0136] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/29/91 21:52 (50 lines) Subject: weekly (?) answers, bugreports etc Date: Sat, 30 Nov 1991 04:46:48 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi nicholas@cs.uwa.oz.au (Nicholas Yue): > G'day, > How do I mount the 2nd hard-disk (automagically ;-). The boot floppy can > be configured to mount the root file system form /dev/hdX Minix does this in /etc/rc, but as linux currently ignores that, the best way is to do it in your .profile (or /etc/.profile). You migh want to use 'mount /dev/hdX /home &> /dev/null' so that eventual multiple mounts won't print error messages. Likewise you can unmount in .logout, but unmounting isn't really necessary (but do remeber to sync). many: > > kermit works, but dies due to ^C. What's wrong? It also complains > about not being able to lock the line. This /seems/ to be standard behaviour of unix-kermit, and it is certainly not of my doing. It's a nuisance. Line-locking is done by creating a file in the directory /usr/spool/uucp/LCK, and unless that directory exists, kermit isn't able to lock it. Then to bug-reports and updates: hd.c is buggy, and I'm investigating it. When read-errors occur, weird things can happen, including writing to the disk. This might be the cause of some peoples problems: there is no problem if you have a sector-translating controller (eg IDE etc) that never returns errors. I think I've gotten it working, and hopefully the 0.11 version (due out in about a week) will be correct. 0.11 will also finally be totally self-sustaining: I have gotten the source to bruce evans' assembler and linker, and at least I haven't heard of many problems with mkfs and fsck. I didn't have time to implement symlinks, so there are no real new features: just bug-fixes and enhancements. Thanks to everybody who sent diffs etc. You know who you are, and I've tried to accnowledge everyone in the source. Wolfgang XXXX, who made the German keyboard patch, please mail me your last name. Known bugs still unresolved: at least one machine has trouble reading the floppy, and one 486 seems to have problems with the harddisk even with my new patches. Another machine seems to get divide by zero errors, and I have absolutely no idea why this happens. As it looks now, these won't be corrected in 0.11 unless I can find the reason for them within the week :-( Linus --[0136]-- [0137] daemon@ATHENA.MIT.EDU (Yanek Martinson) Linux_Activists 11/30/91 14:51 (26 lines) Subject: HELP. Linux boot disk boots but does not display any prompt (shell?) To: linux-activists@joker.cs.hut.fi Date: Sat, 30 Nov 91 14:34:40 EST From: Yanek Martinson I downloaded the boot-disk and root-disk from the mit ftp site. Also the rawrite that comes with minix demo, and the minix demo itself. I wrote minix demo out to a disk with rawrite, and it worked fine. I created a file system on the hard disk. Then I copied the root and boot linux images to disks (5.25" 1.2MB) and tried to boot from the boot image. It said "Loading system......" and then when It was done loading it did nothing. I could type anything, it would just echo the characters. When I pressed any of the F-keys, it gave this: 0: pid=0, state=1, eip=0017:00000000 what does this mean? What can I do about it? If it makes any difference, I was using the boot image that was supposed to turn caps lock key into control key. That part worked. When I pressed CAPSLOCK-N I saw ^N. -- yanek@mthvax.cs.miami.edu safe0%yanek@mthvax.cs.miami.edu --[0137]-- [0138] daemon@ATHENA.MIT.EDU (Yanek Martinson) Linux_Activists 11/30/91 20:35 (19 lines) Subject: linux problem (boots, no prompt) Date: Sat, 30 Nov 91 20:31:15 -0500 From: Yanek Martinson To: torvalds@cc.helsinki.fi, torvalds@kruuna.helsinki.fi Cc: linux-activists@joker.cs.hut.fi I sent a message before but I don't know if you received it I addressed it wrong. The problem is: I put the images of boot and root on disks, and boot. It boots, displays "Loading System..." and then when it's done there is no prompt. Whatever I type is echoed back to me. If I press any of the F- keys, I get this: 0: pid=0, state=1, eip=0017:00000000 What does this mean? Am I doing anything wrong? Is the shell on root or on boot disk? At what time am I supposed to insert the second disk? --[0138]-- [0139] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 11/30/91 21:31 (36 lines) Subject: Re: linux problem (boots, no prompt) Date: Sun, 1 Dec 1991 04:22:30 +0200 From: Linus Benedict Torvalds In-Reply-To: Yanek Martinson's message as of Nov 30, 20:31 To: Yanek Martinson , torvalds@cc.helsinki.fi Cc: linux-activists@joker.cs.hut.fi Yanek Martinson: "linux problem (boots, no prompt)" (Nov 30, 20:31): > I sent a message before but I don't know if you received it I addressed > it wrong. The problem is: I put the images of boot and root on disks, > and boot. It boots, displays "Loading System..." and then when it's > done there is no prompt. Whatever I type is echoed back to me. If > I press any of the F- keys, I get this: > > 0: pid=0, state=1, eip=0017:00000000 This is a kind of debugging info: it just means that the swapper (process 0) is the only task running. Normally state=1 means that the task is waiting (but wakeable by signals), but the swapper is a special case and simply ignores state. eip is useless: this value just means that you have never made a task-switch, and thus saved anything in the task-info. > Is the shell on root or on boot disk? At what time am I supposed to insert > the second disk? The kernel should prompt you for it, but my guess is that the fork is failing, as you only have the swapper task. This might happen if you have only 1M of memory, and nothing above it. True? Even with 384kB of extended memory (usual on 1M machines) the first fork should work, but this looks like you have no extended memory at all. If that wasn't it, please give more info on your hardware. Right now I cannot think of anything else, as most things seem to work (keyboard, screen -> interrupts work ok, no lock-up). Linus --[0139]-- [0140] daemon@ATHENA.MIT.EDU (Galen Hunt) Linux_Activists 12/01/91 23:37 (26 lines) Subject: Display drivers, and no messages after "Loading System..." Date: Sun, 1 Dec 91 21:30:03 mst From: Galen Hunt To: linux-activists@joker.cs.hut.fi > I sent a message before but I don't know if you received it I addressed > it wrong. The problem is: I put the images of boot and root on disks, > and boot. It boots, displays "Loading System..." and then when it's > done there is no prompt. Whatever I type is echoed back to me. If > I press any of the F- keys, I get this: > > 0: pid=0, state=1, eip=0017:00000000 > > What does this mean? > > Am I doing anything wrong? > > Is the shell on root or on boot disk? At what time am I supposed to insert > the second disk? I'd be willing to bet $50 dollars that you are trying to run Linux on a machine that doesn't have a VGA or EGA monitor. The .10 release doesn't have tty driver for monochrome cards (ala Hercules and MDA). galen =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= galen c. hunt g-hunt@ee.utah.edu --[0140]-- [0141] daemon@ATHENA.MIT.EDU (Yanek Martinson) Linux_Activists 12/02/91 00:46 (28 lines) Subject: linux not booting and $50 and memory To: g-hunt@ee.utah.edu (Galen Hunt) Date: Mon, 2 Dec 91 0:39:06 EST From: Yanek Martinson Cc: linux-activists@joker.cs.hut.fi In-Reply-To: <9112020430.AA03364@cs.utah.edu>; from "Galen Hunt" at Dec 1, 91 9:30 pm > I'd be willing to bet $50 dollars that you are trying to run Linux on > a machine that doesn't have a VGA or EGA monitor. The .10 release doesn't This is great. You can send a $50 check to Yanek Martinson 1321 N 65 Way Hollywood, FL 33024 Thank you. This will help me pay for the extra memory I need. The truth is, that I do have a VGA. The problem is, as Linus guessed correctly, that I only have 1MB of memory and that is not enough for linux. Thus the first fork fails, and that is why there is no init or shell or anything else. -- yanek@mthvax.cs.miami.edu safe0%yanek@mthvax.cs.miami.edu --[0141]-- [0142] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 12/02/91 19:18 (13 lines) Subject: microemacs Date: Tue, 3 Dec 91 01:08:10 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi Hi there, I've got micro-emacs 3.9 sources (I know the actual are 3.11), and tried to compile them (Now I've 386sx and 4Mo). I've selected USG in estruct.h and TERMCAP as entry for terminal. The compilation works fine but emacs doen't work. It seems that the system is not able to manage the virtual screen. Any clue? [mmc] --[0142]-- [0143] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/03/91 07:24 (41 lines) Subject: last call for diffs for 0.11 Date: Tue, 3 Dec 1991 13:57:58 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Yow, as the subject says, this is the last call for diffs for the 0.11 kernel. If you have bug-fixes or enhancements, I'll have to get them before friday (6.12.91) in order for them to find their way into the new kernel. I'll do the "last rites" for the new kernel during the weekend, and put it out for ftp after that. Changes between 0.10 and 0.11: - fixed bugs in block-device drivers: floppies still have problems when accessing 2 floppies at the same time, but otherwise everything seems to work. - german keyboard (thiel) - console beeping (jtkohl). - corrected owner checks, #!-recognition in execve (tytso) - sticky directories (both me and tytso) - demand-loading - page-sharing between all processes. I doubt demand-loading makes anything any faster, but it made page-sharing possible, so it was "a good thing". Page sharing means that when executing a new image, the pages aren't loaded from disk if some other process has them. Especially on a multi-user setup (when we get the init/login), this will speed things up and save memory. I'll also release the bruce evans 86-assembler binaries at about the same time as 0.11, as well as a new root-disk with the new system binaries (mkfs, fsck and fdisk). Fdisk doesn't do anything, it just checks the partition table and prints out the partitions. Linus --[0143]-- [0144] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/04/91 00:40 (14 lines) Subject: compiling under minix? Date: Tue, 3 Dec 91 21:26:28 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Has anyone done this? When trying to compile Linux under Minix I get a missing "divi.." or something on link. I assume these to be soft floating point routines. Why? I have a problem with the harddisk driver under Linux being to fast. I had the same problem with minix, but being smaller and slower, I was able to do enough compiling to put a delay in the read function of wini.c. Linux uses GCC, which use causes so much disk reading to happen, that compiling is out of the question. --[0144]-- [0145] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/04/91 06:03 (24 lines) Subject: Re: compiling under minix? Date: Wed, 4 Dec 1991 12:57:53 +0200 From: Linus Benedict Torvalds In-Reply-To: Peter MacDonald's message as of Dec 3, 21:26 To: pmacdona@sol.UVic.CA (Peter MacDonald), linux-activists@joker.cs.hut.fi Peter MacDonald: "compiling under minix?" (Dec 3, 21:26): > Has anyone done this? When trying to compile Linux under Minix > I get a missing "divi.." or something on link. I assume these > to be soft floating point routines. > > Why? I have a problem with the harddisk driver under Linux > being to fast. I had the same problem with minix, but being smaller > and slower, I was able to do enough compiling to put a delay in the > read function of wini.c. Linux uses GCC, which use causes so much > disk reading to happen, that compiling is out of the question. When compiling under minix, you are probably using an older version of gcc (1.37.1 is the one that was on plains). Older versions are unable to inline the integer division routines, and use a function found in gnulib for division instead. Include gnulib in the final link, and all should work. (Use the gnulib with minix - at least that one has been tested with these functions). Linus --[0145]-- [0146] daemon@ATHENA.MIT.EDU (LCDR Michael E. Dobson) Linux_Activists 12/04/91 13:28 (25 lines) Subject: cc1 fails silently From: "LCDR Michael E. Dobson" To: linux-activists@joker.cs.hut.fi (Linix Mailing LIst) Date: Wed, 4 Dec 91 13:01:58 EST Today when I had some time I wanted to try installing a pager and some library routines. Imagine my surprise when nothing would compile! I could not even get the very simple fixit.c program to compile, even gcc -c fixit.c -o fixit.o produced nothing!! Using gcc -v and manually running the indiviual steps, it seems cc1 is failing silently, ie, if I run the cc1 command from gcc -v on the output from cpp, I get no .s file produced! This all used to work fine for me, I was even able to build the recently posted mawk with little effort. Does anyone have a clue as to what is going on? I'd like to get this solved so I can get less up and move on to bigger things. I'm looking to see what needs to be done to the posix/stdc lib routines that came with the new pdksh sources. THey look to have at least a complete string package which means I can then tackle uucp/mail/news. Any suggestions greatly appreciated. -- Mike Dobson, Sys Admin for | Internet: rdc30@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30 AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb or nrd0mxd@vmnmdsc WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com --[0146]-- [0147] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/04/91 14:33 (39 lines) Subject: Re: cc1 fails silently Date: Wed, 4 Dec 1991 21:13:38 +0200 From: Linus Benedict Torvalds In-Reply-To: "LCDR Michael E. Dobson"'s message as of Dec 4, 13:01 To: "LCDR Michael E. Dobson" , "LCDR Michael E. Dobson": "cc1 fails silently" (Dec 4, 13:01): > Today when I had some time I wanted to try installing a pager and some > library routines. Imagine my surprise when nothing would compile! I could > not even get the very simple fixit.c program to compile, even gcc -c > fixit.c -o fixit.o produced nothing!! Using gcc -v and manually running > the indiviual steps, it seems cc1 is failing silently, ie, if I run the cc1 > command from gcc -v on the output from cpp, I get no .s file produced! > This all used to work fine for me, I was even able to build the recently > posted mawk with little effort. Does anyone have a clue as to what is > going on? cc1 failing silently is usually due to out of memory errors, but as it worked for you before, that probably isn't it. The only other solution I can come up with is kernel bugs :-(. It seems there are a few race-conditions left in 0.10, which can cause filesystem errors. The worst of these was fixed with the new buffer.c, and if you don't have the updated binaries, filesystem errors are a certainty after a while (unless you are very lucky). Fsck is not (and never will be) able to find errors that have creapt in into the data-blocks of files - and as cc1 is the biggest binary linux uses, that's the one most likely to catch these errors. There was another race-condition I found only yesterday, but it shouldn't cause too many problems, especially not for harddisks. That one will be corrected in 0.11 (countdown: 4-5 days). I'm not even certain this one can ever happen. I'd suggest you verify your binary, and you might even upgrade to the gcc-cc1 that understands floats with exponents, available from Tupac-Amaru (incoming). If that doesn't cut it, I'd be interested in what changes you have made to your hardware/system? Linus --[0147]-- [0148] daemon@ATHENA.MIT.EDU (LCDR Michael E. Dobson) Linux_Activists 12/04/91 16:27 (51 lines) Subject: Re: cc1 fails silently From: "LCDR Michael E. Dobson" To: linux-activists@joker.cs.hut.fi (Linix Mailing LIst) Date: Wed, 4 Dec 91 15:50:07 EST In-Reply-To: <9112041942.AA05005@tsx-11.MIT.EDU>; from "Theodore Ts'o" at Dec 4, 91 2:42 pm In response to my question about cc1 failing silently I received the following: > > Date: Wed, 4 Dec 1991 21:13:38 +0200 > From: Linus Benedict Torvalds > > cc1 failing silently is usually due to out of memory errors, but as it > worked for you before, that probably isn't it. The only other solution > I can come up with is kernel bugs :-(. > From: <9112041942.AA05005@tsx-11.MIT.EDU>; from "Theodore Ts'o" at Dec 4, 91 2:24pm > Have you checked to see if you've filled your hard disk? This is > somewhat hard to check since there's no df utility. You can find out > the number of free blocks of your root partition at boot time, though. > It appears you both were wrong and it is something more trouble, possibly related to the race conditions Linus mentioned, but more likely some subtle kernel bugs. I forgot to mention I received a swapper panic when I soft booted from DOS the first time and just redid the soft boot. Just a few minutes ago I did a hard boot (ie hit the reset button) and saw the following at bootup: Partiton table ok. 5278/9860 free blocks 2798/3294 free inodes 507 buffers = 519168 bytes free buffer space Free mem: 3145728 bytes Ok. bash# A "du" on / gave 8423 /. The best part is that gcc now works just fine!! However, the make of less failed because I don't have a sgtty.h Will grab the Minix version and see what develops. It's also looking for libtermcap.a but we'll see ;-) Regards, -- Mike Dobson, Sys Admin for | Internet: rdc30@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30 AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb or nrd0mxd@vmnmdsc WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com --[0148]-- [0149] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 12/04/91 21:30 (42 lines) Subject: Re: cc1 fails silently Date: Wed, 4 Dec 91 21:13:22 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: "LCDR Michael E. Dobson" Cc: linux-activists@joker.cs.hut.fi In-Reply-To: LCDR Michael E. Dobson's message of Wed, 4 Dec 91 15:50:07 EST, Reply-To: tytso@athena.mit.edu It appears you both were wrong and it is something more trouble, possibly related to the race conditions Linus mentioned, but more likely some subtle kernel bugs. Well, maybe. The swapper panic which happens after you type ctrl-alt-del from DOS is standard in Linux 0.10 --- it's harmless, and typing ctrl-alt-del after the panic will allow Linux to boot successfully. Partiton table ok. 5278/9860 free blocks 2798/3294 free inodes 507 buffers = 519168 bytes free buffer space Free mem: 3145728 bytes Ok. bash# A "du" on / gave 8423 /. Remember that "du" outputs sizes in 512 byte blocks, courtesy of POSIX. My personal opinion is that it's one of the stupidest mistakes POSIX has committed, since most users care about file sizes in kilobytes, not in 512 byte blocks --- but then, I can alias du to "du -k", so the only losers are the innocent, naive users. [End of soapbox] With that said, you may have a problem, but it looks like the standard corrupted filesystem problem that happens when you are using a stock, unpatched version of Linux 0.10. The number of free blocks as caluclated by the "du" is (9860 - 8423/2) = 5644, which is larger than 5278, but only by 366k. I've seen that sort of lossage on the stock Linux 0.10, and I haven't seen it once the bug fix to buffer.c was applied. - Ted --[0149]-- [0150] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/04/91 22:31 (199 lines) Subject: Re: cc1 fails silently Date: Thu, 5 Dec 1991 05:15:29 +0200 From: Linus Benedict Torvalds In-Reply-To: Theodore Ts'o's message as of Dec 4, 21:13 To: tytso@athena.mit.edu, Cc: linux-activists@joker.cs.hut.fi Theodore Ts'o: "Re: cc1 fails silently" (Dec 4, 21:13): > > With that said, you may have a problem, but it looks like the standard > corrupted filesystem problem that happens when you are using a stock, > unpatched version of Linux 0.10. The number of free blocks as > caluclated by the "du" is (9860 - 8423/2) = 5644, which is larger than > 5278, but only by 366k. I've seen that sort of lossage on the stock > Linux 0.10, and I haven't seen it once the bug fix to buffer.c was > applied. It does seem so, but always remeber that du doesn't count blocks exactly: it uses a heuristic algorithm that doesn't work on sparse files etc. I'd still check the filesystem - that's the most likely problem. And then over to happier things: here's sources to mount and umount, as corsini wanted something that keeps track of mounted devices, and as I couldn't find anything more interesting to do I just hacked these together . These versions keep the file "/etc/mtab" up-to-date, just like real mount/umount should do. You can certainly confuse them, but they are a bit better than nothing. This is a 1/2 hour hack, so don't expect wonders, but my limited testing hasn't shown any problems yet. /etc/mtab will later be needed for "df", but as ustat isn't implemented yet, df won't work. Oh well. Meanwhile you can get mount-info by "cat /etc/mtab". Linus ---- mount.c ---------------- #include #include #include #include #define TAB_FILE "/etc/mtab" #define LOCK_FILE "/etc/mtab~" int tab = -1; int lock = -1; volatile void die(void) { if (lock >= 0) unlink(LOCK_FILE); exit(1); } main(int argc, char ** argv) { int i; char buffer[1024]; if (argc !=3) { fprintf(stderr,"mount: usage: mount dev dir\n"); die(); } lock = open(LOCK_FILE,O_CREAT | O_EXCL,0644); if (lock < 0) { fprintf(stderr,"mount: unable to open lock-file\n"); die(); } chmod(LOCK_FILE,0644); tab = open(TAB_FILE,O_RDONLY); if (mount(argv[1],argv[2],0)) { fprintf(stderr,"mount: error %d\n",errno); die(); } if (tab >= 0) while ((i=read(tab,buffer,1024))>0) write(lock,buffer,i); i=strlen(argv[1]); argv[1][i]=' '; write(lock,argv[1],i+1); i=strlen(argv[2]); argv[2][i]='\n'; write(lock,argv[2],i+1); unlink(TAB_FILE); link(LOCK_FILE,TAB_FILE); unlink(LOCK_FILE); return 0; } ----- umount.c --------------- #include #include #include #include #define TAB_FILE "/etc/mtab" #define LOCK_FILE "/etc/mtab~" #define CHECK 0 #define WRITE 1 #define NOWRITE 2 int tab = -1; int lock = -1; static int read_char(void) { static char buffer[1024]; static int i=0; static int pos=0; if (tab < 0) return -1; if (pos == i) { i = read(tab,buffer,1024); pos = 0; } if (i <= 0) return -1; return (unsigned) buffer[pos++]; } static void write_char(int c) { static char buffer[1024]; static int i=0; if (c<0) { if (i) write(lock,buffer,i); i = 0; return; } buffer[i++] = c; if (i<1024) return; write(lock,buffer,i); i=0; } volatile void die(void) { if (lock >= 0) unlink(LOCK_FILE); exit(1); } main(int argc, char ** argv) { int c,i,len; int state; if (argc != 2) { fprintf(stderr,"umount: usage: umount dev\n"); die(); } lock = open(LOCK_FILE,O_CREAT | O_EXCL,0600); if (lock < 0) { fprintf(stderr,"umount: unable to open lock-file\n"); die(); } tab = open(TAB_FILE,O_RDONLY); if (umount(argv[1])) { fprintf(stderr,"umount: error %d\n",errno); die(); } len = strlen(argv[1]); state = CHECK; i = 0; do { c = read_char(); if (state==CHECK && !argv[1][i] && (c==' ' || c=='\n')) state=NOWRITE; if (c=='\n') { if (state != NOWRITE) write_char(c); state = CHECK; i = 0; continue; } if (state == NOWRITE) continue; if (state == WRITE) { write_char(c); continue; } if (c == argv[1][i]) i++; else { for (state=0 ; state= 0); write_char(-1); unlink(TAB_FILE); link(LOCK_FILE,TAB_FILE); unlink(LOCK_FILE); return 0; } --[0150]-- [0151] daemon@ATHENA.MIT.EDU (LCDR Michael E. Dobson) Linux_Activists 12/05/91 09:08 (57 lines) Subject: Re: cc1 fails silently From: "LCDR Michael E. Dobson" To: tytso@athena.mit.edu Date: Thu, 5 Dec 91 8:37:35 EST Cc: linux-activists@joker.cs.hut.fi (Linix Mailing LIst) In-Reply-To: <9112050213.AA05299@tsx-11.MIT.EDU>; from "Theodore Ts'o" at Dec 4, 91 9:13 pm I previously said: > > It appears you both were wrong and it is something more trouble, possibly > related to the race conditions Linus mentioned, but more likely some > subtle kernel bugs. > To which Ted responded: > Well, maybe. The swapper panic which happens after you type > ctrl-alt-del from DOS is standard in Linux 0.10 --- it's harmless, and > typing ctrl-alt-del after the panic will allow Linux to boot > successfully. > Depends what you mean by successfully. If I can't run gcc after ctrl-alt-del boot, I don't consider the boot successfull. Remember, I said the cc1 failure disappeared when I did a hard boot, I did nothing else to the system, did not reload the gcc binaries nor mkfs a new system. Now I suppose it is therefore the in core image of the file system that was corrupted and not the hard disk fs itself. I haven't attempted to build a linux kernel myself yet so I didn't apply the buffer.c patch, will wait for 0.11 which will be able to compile itself without using Minix or some other OS. Ted then pointed out: > Remember that "du" outputs sizes in 512 byte blocks, courtesy of POSIX. > My personal opinion is that it's one of the stupidest mistakes POSIX > has committed, since most users care about file sizes in kilobytes, not > in 512 byte blocks --- but then, I can alias du to "du -k", so the only > losers are the innocent, naive users. [End of soapbox] > Guess it's time to set up a "proper" .profile with a few aliases in it ;-) Anyone know why the default TERM is "dumb" instead of "console"? BTW, once gcc was working, I successfully built less using only #define TERMIO 1 #define REGCMP 0 #define RECOMP 0 in defines.h and removing the reference to libtermcap.a in the Makefile. I also was able to compile all the stdc routines from the pdksh src with the exception of setvbuf.c, stdio.c (probably not needed) and vprintf.c. I had to change the #include "stdh.h" to #include in strstr.c and one of the mem*.c routines. Anyone got a good exerciser for the mem* and str* routines? These could be very useful additions to the Linux libc.a NOTE, I used the *.h files that came with pdksh. -- Mike Dobson, Sys Admin for | Internet: rdc30@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30 AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb or nrd0mxd@vmnmdsc WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com --[0151]-- [0152] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 12/05/91 14:42 (34 lines) Subject: Re: cc1 fails silently Date: Thu, 5 Dec 91 14:17:06 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: "LCDR Michael E. Dobson" Cc: linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu From: "LCDR Michael E. Dobson" Date: Thu, 5 Dec 91 8:37:35 EST corrupted and not the hard disk fs itself. I haven't attempted to build a linux kernel myself yet so I didn't apply the buffer.c patch, will wait for 0.11 which will be able to compile itself without using Minix or some other OS. Do you know about about TSX-11.MIT.EDU, or some of the other anonymous FTP sites? There are precompiled boot images of Linux 0.10 which have the patched buffer.c. There's also a pre-compiled image of less there already. You might want to look around; there's binaries for kermit, Bison (yacc), flex (lex), RCS, etc. Might help you from reiventing the wheel. :-) I also was able to compile all the stdc routines from the pdksh src with the exception of setvbuf.c, stdio.c (probably not needed) and vprintf.c. I had to change the #include "stdh.h" to #include in strstr.c and one of the mem*.c routines. Anyone got a good exerciser for the mem* and str* routines? These could be very useful additions to the Linux libc.a NOTE, I used the *.h files that came with pdksh. I believe the Linux libc.a already contains the mem* and str* routines, using the GNU libc routines. At least, the libc.a included in gccbin.tar.Z already has those routines. - Ted --[0152]-- [0153] daemon@ATHENA.MIT.EDU (chrisa@extro.ucc.su.OZ.AU) Linux_Activists 12/05/91 19:24 (25 lines) Subject: FAQ, port lists & shoelace Date: Fri, 6 Dec 1991 00:11:49 GMT To: linux-activists@joker.cs.hut.fi From: chrisa@extro.ucc.su.OZ.AU Hello * A few questions 1) Has anything been done for a FAQ list as yet? 2) It seems that there may be a little reinventing of the wheel going on in terms of porting stuff to linux. Maybe it would be a good idea to compile a list of what has been ported so far, by whom, and where it is (or patches to the original code) is available from. I guess if noone else is willing, I could do this. 3) I have read about shoelace in the minix newsgroup before, but i only have macminix. Do you need to compile shoelace under minix to get it working or can it be compiled under linux? enuff for now... chris. --[0153]-- [0154] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 12/05/91 23:26 (26 lines) Subject: Re: FAQ, port lists & shoelace Date: Thu, 5 Dec 91 22:49:20 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: chrisa@extro.ucc.su.OZ.AU Cc: linux-activists@joker.cs.hut.fi In-Reply-To: chrisa@extro.ucc.su.OZ.AU's message of Fri, 6 Dec 1991 00:11:49 GMT, Reply-To: tytso@athena.mit.edu >2) It seems that there may be a little reinventing of the wheel going on > in terms of porting stuff to linux. Maybe it would be a good idea to > compile a list of what has been ported so far, by whom, and where it is > (or patches to the original code) is available from. I guess if noone > else is willing, I could do this. blum@messua.informatik.rwth-aachen.de keeps such a list. Send mail to him for more info. Stuff regarding Linux can be found at these anonymous FTP sites: nic.funet.fi, tsx-11.mit.edu, and tupac-amaru.informatik.rwth-aachen.de. New files that hit one site generally hit all three (at least, I try to send binaries that get sent to tsx-11 to the other two sites, and I try to grab anything new that gets downloaded to nic.funet.fi and tupac-amaru). So you should also try looking at one of the anonymous FTP sites to see if you can just pick up the binaries. - Ted --[0154]-- [0155] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/06/91 04:01 (46 lines) Subject: The FAQ and other questions Date: Fri, 6 Dec 91 09:52:11 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! Following are some answers to some questions recently mailed: 1) Has anything been done for a FAQ list as yet? I am currently developing such a beast, and a LINUX Info sheet is already done (mostly). If you are interested in helping with the FAQ, mail me and you are on the list.... 2) It seems that there may be a little reinventing of the wheel going on in terms of porting stuff to linux. Maybe it would be a good idea to compile a list of what has been ported so far, by whom, and where it is (or patches to the original code) is available from. I guess if noone else is willing, I could do this. This list is available as TODO on tupac-amaru.informatik.rwth-aachen.de:/pub/msdos/replace as are all the binaries 3) I have read about shoelace in the minix newsgroup before, but i only have macminix. Do you need to compile shoelace under minix to get it working or can it be compiled under linux? I remember some patches for shoelace under linux sent out on this list, but I didn`t get them This leads me to an announcement: I think next year I will start another service for LINUX. I will save all the postings on the mailing list an make it available via anon ftp, perhaps even via a mailserver with the ability to grep for keywords.... If you like this idea, have other ideas, or have set up such a service yourself, please mail me See you, Robert "I'll do it ASAP" Blum --[0155]-- [0156] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/06/91 04:41 (67 lines) Subject: The new TODO file Date: Fri, 6 Dec 91 10:29:34 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! This is this weeks mailing of TODO :-) If you have any additions, send mail (please!) Robert Blum This files contains the status of several tools for Linux Currently ported/developed/compiled projects: Name: ported by: bison nicholas@cs.uwa.oz.au (binary only) diff tytso@mit.edu (binary only) flex tytso@mit.edu (binary only) fsck torvalds@kruuna.helsinki.fi (source only) gcc torvalds@kruuna.helsinki.fi (src &binary) german kbd upsyf173@comparex.hrz.uni-bielefeld.de (source only) id ???? (binary only) kermit tytso@mit.edu (binary only) less jtkohl@berkeley.cs.edu (binary only) mkfs torvalds@kruuna.helsinki.fi (source only) mount torvalds@kruuna.helsinki.fi (source only) pmake jtkohl@berkeley.cs.edu (binary only) rcs ???? (binary only) umount torvalds@kruuna.helsinki.fi (source only) whoami ???? (binary only) All these programs can be FTPed as binaries/sources from the following sites nic.funet.fi tsx-11.mit.edu tupac-amaru.informatik.rwth-aachen.de Try your nearest site first! If you can't find them there, you'll find them on tupac-amaru in every case. =============================================================================== Projects currently under development: Name: ported by: Remarks c386 blum@messua.informatik.rwth-aachen.de Is working under Linux A cc for this exists Is currently teached ANSI. Any help on this would be appreciated. gawk nicholas@cs.uwa.oz.au Still needs a working mathlib. networking jtkohl@echidna.berkeley.edu Mainly the BSD code Perhaps even ffs Networking= BSD networking Tape VOL2 mathlib nicholas@cs.uwa.oz.au Will be a library for 387/287/soft-float-code VFS proven@athena.mit.edu VFS=Virtual File System Will probably out with Linux 0.11 --[0156]-- [0157] daemon@ATHENA.MIT.EDU (LCDR Michael E. Dobson) Linux_Activists 12/06/91 10:42 (28 lines) Subject: Possible bug in termios.h? From: "LCDR Michael E. Dobson" To: linux-activists@joker.cs.hut.fi (Linix Mailing LIst) Date: Fri, 6 Dec 91 10:15:10 EST While working on a port of UUCP, I came across what may be a bug in the file. The values PARENB and PARODD where coming up undefined even though termios.h had been included. Checking the source against POSIX 1003.1-1988 we find: Linux 1003.1 c_cflag field c_cflag field CPARENB PARENB CPARODD PARODD It seems that we should be using the mask name symbols PARENB and PARODD to be compliant with section 7.1.2.4 of 1003.1 Any comments from the group? PS: before flamming me for working on UUCP, I know we don't have login/getty/uugetty nor do we have getlogin()/cuserid(), ttyname(), cget*(), or cfset*(). Stay tuned! -- Mike Dobson, Sys Admin for | Internet: rdc30@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30 AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb or nrd0mxd@vmnmdsc WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com --[0157]-- [0158] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 12/06/91 12:18 (70 lines) Subject: uemacs 3.11 Date: Fri, 6 Dec 91 17:55:42 +0100 From: corsini@numero6.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi Hi, I've compiled, nearly successfuly, micro emacs 3.11 under linux. To do so, 1) get the sources from midas.mgmt.perdue.edu 2) apply the patches available from comp.emacs, for unix boxes (if needed i can send it to this mailing list) 3) make the following changes: -a- in eproto.h line 24: change mlwrite(va_decl) to mlwrite(va_alist) this makes the error to be only a warning -b- in unix.c to fit the def of rename() in /usr/include/stdio.h change lines 1241 and 1242 char * file1; char * file2; by const char * file1; const char * file2; Moreover since linux has no ltermcap.a change also #if HPUX || VAT char PC, *UP; short ospeed; #else by #if HPUX || VAT || USG char PC, *UP; short ospeed; #else -c- finally set the following flags to 1 in estruct.h USG GCC TERMCAP supress the -ltermcap option when linking bin/emacs.exe that's all. Hope this helps [mmc] PS1: the nearly success is caused by when exiting emacs 3.11, the screen is not cleaned (apply cls by hand is what i do). I still dig on it. PS2: if u are interested, i can post the previous changes in cdif form. PS3: on MSX-11 there are a lot of patches, some were even not posted on this list. My questions and "requierement" are Are these patches also available on other sites (the european one)?, i can't verify myself 'cause my site can't access them ('cause of money) Would it be possible to make a README file for these patches where there would be: the order of apliance, the things they cure --[0158]-- [0159] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 12/07/91 10:49 (12 lines) Subject: micro emacs Date: Sat, 7 Dec 91 16:40:22 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi Hi there, it seems that the ^X^C is interpreted only as ^C which kill the emacs process in fact ^X C do the thing that ^X^C is supposed to do. The called function are correct, and there is no problem with the virtual screen functions. [mmc] PS as i mail with a blind terminal, the ^key must be read sa --[0159]-- [0160] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 12/08/91 10:40 (13 lines) Subject: micro emacs again Date: Sun, 8 Dec 91 16:31:14 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi Once again, ^X C is not a good solution, because it calls a sub-shell. X exit-emacs is correct, in fact it is the function bind to ^X^C, but the ^C is still catch by the system, and cause an interruption. [mmc] --[0160]-- [0161] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/08/91 10:59 (33 lines) Subject: linux-0.11 available Date: Sun, 8 Dec 1991 17:51:24 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi The subject says it all: I have uploaded linux version 0.11 to nic.funet.fi and tupac-amaru. They won't show up for a while on nic, but are already visible in pub/msdos/replace/incoming at amaru. rtx-11 is so slow to use from here that I didn't upload them there: I guess they'll show up within a couple of days (tytso?). The files uploaded were: bootimage.Z - US keyboard compressed bootimage rootimage.Z - 1200kB compressed root image linux-0.11.tar.Z - sources as86.tar.Z - linux binaries for bruce evans' 16-bit assembler and loader. INSTALL-0.11 - updated install-info This version has a lot of corrections, and is stable at least on my machine. I /hope/ every known bug is fixed, but no promises (and all unknown bugs are still there, probably with reinforcements ;-). Those who like to use caps lock as a ctrl-key, you'll have to re-patch the kernel. It's not implemented in the standard version. Linus PS. I'll be a bit busy with the #"$/% physics-course I'm taking, so I might not be as active on the net this coming week as I would like to. PPS. corsini: the problem you have with the recompiled uemacs sounds like it isn't resetting the ISIG bit in c_lflags when moving to raw mode. Search for c_lflags in the source: it should effectively be set to zero (I think) - no signals, no canonical mode etc. --[0161]-- [0162] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/08/91 11:42 (21 lines) Subject: ISIG bug already :-( Date: Sun, 8 Dec 1991 18:34:04 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi It seems God hates me or something: 5 minutes after sending out linux-0.11 I found a bug. This one also explains why corsini has had problems with uemacs: I had the meaning of ISIG reversed in the kernel. Happily the bug is not very important, and correcting it breaks /my/ version of uemacs, but I'm a bit shamefaced. The bug is in linux/kernel/char_drv/tty_io.c: search for the line containing "if (!L_ISIG" and remove the incorrect "!". I'll make a new kernel binary available, as well as a new uemacs. Hopefully nobody ever even gets to see the bad versions. I guess we'll have to rename the system: wirzeniu already suggested the name "buggyx" :-) Linus PS. Apologies to corsini for thinking he did something wrong. --[0162]-- [0163] daemon@ATHENA.MIT.EDU (Marc Peters) Linux_Activists 12/08/91 18:16 (20 lines) Subject: v 0.11 boot disk problem Date: Sun, 8 Dec 91 15:01:30 -0800 From: mpeters@polyslo.csc.calpoly.edu (Marc Peters) To: Linux-activists@joker.cs.hut.fi I just downloaded the new improved v0.11, but it doesn't want to load on my computer. It gives a couple errors similar to HD controller reset failed: 000 Kernel Panic: HD controller not ready and aborts the loading of the system. My computer has an MFM HD and controller which may account for the problem, but v0.10 didn't seem to mind. A friend has a machine with an IDE drive and controller, it gives the first error but loads the system and seems to work fine. If you could direct me toward a cure I'd be happy again, even if the cure involves replacing my HD and controller. But I'm wondering what differences could be in the new kernel that would obsolete my HD and if those changes can't be re-changed. Thank you for your time, Marc Peters --[0163]-- [0164] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 12/08/91 18:28 (16 lines) Subject: RE: v 0.11 boot disk problem Date: Mon, 9 Dec 1991 01:18:21 +0200 From: Ari Lemmke To: Linux-activists@joker.cs.hut.fi In-Reply-To: Marc Peters's message of Sun, 8 Dec 91 15:01:30 -0800 <9112082301.AA00933@polyslo.csc.calpoly.edu> Linus downloaded new stuff .. so: Linux 0.11 should now be available at nic.funet.fi ... everything needed is in INSTALL directory (actually stuff in INSTALL directory is hard linked from other directories). The main README file changes constantly ... arl --[0164]-- [0165] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/08/91 20:12 (51 lines) Subject: hd_reset fails in 0.11 Date: Mon, 9 Dec 1991 02:57:40 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Marc Peters: "v 0.11 boot disk problem" (Dec 8, 15:01): > I just downloaded the new improved v0.11, but it doesn't want to load on my > computer. It gives a couple errors similar to > HD controller reset failed: 000 > Kernel Panic: HD controller not ready > and aborts the loading of the system. My computer has an MFM HD and > controller which may account for the problem, but v0.10 didn't seem to mind. > A friend has a machine with an IDE drive and controller, it gives the > first error but loads the system and seems to work fine. Thanks, this is why there are still debug-statements in the code. There are in fact two solutions (I hope) to the problem. Both of them require you to change the file "linux/kernel/blk_drv/hd.c" which does the harddisk specific stuff. As 0.10 doesn't try to reset the controller at bootup, it seems to work, and you can still use it to recompile 0.11. 1 - set static int reset to 0 at startup (currently 1). This means linux won't try to reset the controller in the beginning, but this is just a temporary hack: if there are errors later on that need a reset, you'll be in the same trouble. 2 - try to edit the timeouts in "reset_controller". If memory serves, it's a line that goes like this: outb_p(4,HD_CMD); >> for (i=0 ; i<100 ; i++) nop(); outb_p(xxx,HD_CMD); Change the max value to 10000 or something, and try again. I have only one controller to test, and timing-problems are always the worst kind. There are a couple of other timing-values that are completely arbitrary (guess a number between 1 and 100000, and if it works, it works :-), but this is the first suspect. I'd be very grateful if everybody who encounters this problem would try out (2), and report to me how big the value had to be before the reset made it (or indeed if it works even then). Don't do (1) unless nothing else works. I'd also be interested to know what kind of machine you are running (fast machine, slow disk?). Linus PS. I hope even old linux-users read the INSTALL-file: there is a change in how linux boots up. No more /bin/update, instead linux executes the shell script /etc/rc, which may mount/fsck etc, and start up update in the background. --[0165]-- [0166] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 12/08/91 21:02 (38 lines) Subject: hd_reset fails in 0.11 Date: Mon, 9 Dec 1991 03:51:38 +0200 From: Ari Lemmke To: Linux-activists@joker.cs.hut.fi In-Reply-To: Linus Benedict Torvalds's message of Mon, 9 Dec 1991 02:57:40 +0200 <199112090057.AA06512@kruuna.helsinki.fi> >2 - try to edit the timeouts in "reset_controller". If memory serves, >it's a line that goes like this: > outb_p(4,HD_CMD); > >> for (i=0 ; i<100 ; i++) > nop(); > outb_p(xxx,HD_CMD); >Change the max value to 10000 or something, and try again. I have only >one controller to test, and timing-problems are always the worst kind. >There are a couple of other timing-values that are completely arbitrary >(guess a number between 1 and 100000, and if it works, it works :-), but >this is the first suspect. I hacked one SCSI driver for Mach pc532 ... and there was a lot of static wait loops (aaaaaargh) .. what we did was changed wait loops as: Wait_uSec( 100 ); and Wait_uSec function has loop .. where is (should be) computed one uSec loop. But we have all only 25MHz 32532 chips .. so it was hard coded (ugh). There are many PC 386s around .. like mine .. I'm running my 386/25 with 16 MHz CPU, and don't have guts to run it full speed (gets really hot, and don't have peltier element or any other way to cool my machine just now ;-), so I'm running it about 6 MHz speed (my board has dip for it). arl --[0166]-- [0167] daemon@ATHENA.MIT.EDU (Michael Kronvold) Linux_Activists 12/08/91 22:13 (16 lines) Subject: Linux and SCSI (was: hd_reset fails in 0.11) Date: Sun, 8 Dec 91 21:01:14 GMT-0600 From: kronvold@sumter.cso.uiuc.edu (Michael Kronvold) To: Linux-activists@joker.cs.hut.fi In-Reply-To: Ari Lemmke's message of Mon, 9 Dec 1991 03:51:38 +0200 <199112090151.AA26582@zen.cs.hut.fi> > I hacked one SCSI driver for Mach pc532 ... and there > was a lot of static wait loops (aaaaaargh) .. what we did was > changed wait loops as: > Wait_uSec( 100 ); > and Wait_uSec function has loop .. where is (should be) > computed one uSec loop. I'm trying (and failing miserably) to get Linux up on my 386-40 with a SCSI drive... Anything you have that I could use as a referance? - Mike --[0167]-- [0168] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/09/91 03:49 (125 lines) Subject: The Linux info sheet Date: Mon, 9 Dec 91 09:06:54 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! Following is the first official version of a Linux info sheet. If you like it, I'd suggest posting this thing to: comp.os.misc comp.os.mach comp.os.minix comp.os.coherent comp.os.sysv.i386 comp.unix.programmers comp.binaries.ibm.pc.d Comments and suggestions are welcome. Ciao, Robert LINUX INFORMATION SHEET 1. WHAT IS LINUX 0.11 LINUX 0.11 is a freely distributable UNIX clone. It is almost fully System V compatible. LINUX has been written from scratch, and therefore does not contain any AT&T or MINIX code--not in the kernel, the compiler, the utilities, or the libraries. For this reason it can be made available with the complete source code via anonymous FTP. Sorrily, it runs only on 386/486 AT-bus-machines. EISA will probably do too, but you need an AT-Bus controller for your harddisk. Version 0.11 is still a beta release, but it provides almost full functionality. Various users have been able to compile bigger projects like bison/flex by only changing the makefile to their needs, and these tools are fully functional. 2. LINUX features - System call compatible with V7 of the UNIX operating system - Full multiprogramming (multiple programs can run at once) - Memory paging with copy-on-write - Demand loading of executables - Page sharing of executables - ANSI compliant C compiler (gcc) - A complete set of compiler writing tools (bison as yacc-replacement, flex as lex replacement) - The gnu-born again shell (bash) - Micro emacs - most utilities you need for development (cat, cp, kermit, ls, make, etc.) - Over 200 library procedures (atoi, fork, malloc, read, stdio, etc.) - Currently 3 national keyboards: finnish/us/german - Full source code (in C) for the OS is freely distributable - Full source code of the tools can be gotten from many anonymous ftp sites (It's almost completel the GNU project) - Runs in protected mode on 386 and above - Support for extended memory up to 16M on 386 and above - RS-232 serial line support with terminal emulation, kermit, zmodem, etc. - Supports the real time clock 3. HARDWARE REQUIRED - A 386 or 486 machine that is an AT-bus-machine. EISA will probably do too. - An IDE hard disk is required to use this system. - Both 5.25" and 3.5" diskettes are supported - At least 2 megabytes of RAM is required for LINUX to be operational, but gcc will only work from 4 MB on. - Any video card will do - Up to two serial lines are supported - The real time clock is supported 4. PARTIAL LIST OF UTILITIES INCLUDED IN OR AVAILABLE FOR LINUX 0.10 - The MTOOLS package (reading/writing to DOS) - The complete GNU filetools (ls,cat,cp,mv,...) - The GNU C compiler with GNU assembler,linker,ar,... - bison - flex - rcs - pmake (BSD 4.2 make) - kermit - Micro emacs - less - mkfs - fsck - mount/umount 5. LINUX BINARIES The LINUX binaries (including all the tools) are available at three anonymous FTP sites. These are: nic.funet.fi:/pub/OS/Linux tsx-11.mit.edu tupac-amaru.informatik.rwth-aachen.de:/pub/msdos/replace 6. LEGAL STATUS OF LINUX Although LINUX is supplied with the complete source code, it is copyrighted software. But it is, opposite to MINIX available for free, provided you obey to the rules specified in the LINUX copyright. 7. NEWS ABOUT LINUX Since LINUX's introduction to the public there has been a rapidly growing mailing list, "linux-activists@joker.cs.hut.fi". To subscribe to this list, mail to "linux-activists-requests@joker.cs.hut.fi". If the traffic in this lists increases further, there are plans to swap (at least partially) over to comp.os.misc, so watch out for any LINUX articles in this group. If you simply want to know whats the current state of the art, do a "finger torvalds@kruuna.helsinki.fi", and you'll get some information. 8. FUTURE PLANS The major current project is bringing LINUX to a version number greater than 1.0. It has also to undergo some (minor) revisions to be compatible to the IEEE POSIX P1003.1 and P1003.2 standards. Various people are currently working on - math support/fp emulation in the kernel - Page swapping (since paging is alreay implemented) - A virtual filesystem layer - STREAMS If you want to join the developers, join the mailing list --[0168]-- [0169] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/09/91 23:07 (8 lines) Subject: linux-.11 cures unexpected interupt problem Date: Mon, 9 Dec 91 19:56:31 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Just a word of praise for linux-0.11. I still get unexpected HD interrupt messages, but I could compile the system, and comment out that message. Which means linux can live with my brain-dead IDE drive, something minix couldn't do without my modifying the harddisk driver. --[0169]-- [0170] daemon@ATHENA.MIT.EDU (Drew Eckhardt) Linux_Activists 12/10/91 00:23 (56 lines) Subject: Re: Linux and SCSI (was: hd_reset fails in 0.11) Date: Mon, 9 Dec 1991 22:15:17 -0700 From: Drew Eckhardt To: Linux-activists@joker.cs.hut.fi, kronvold@sumter.cso.uiuc.edu > was a lot of static wait loops (aaaaaargh) .. what we did was > changed wait loops as: > Wait_uSec( 100 ); Accomodating the BUS settle time is a real pain. In my linux driver I am using small chunks of inline assembler to accomodate it and the glitch detection discussed in the standard. > and Wait_uSec function has loop .. where is (should be) > computed one uSec loop. I'm trying (and failing miserably) to get Linux up on my 386-40 with a SCSI drive... Anything you have that I could use as a referance? Before any one else starts on this, I'm currently working on a Linux SCSI driver (~60 - 70% complete). A brief description of the project : It's a multi-tiered design, with SCSI disk / tape Linux block device drivers, a high-level host independant module that has a generic interface to the low level module and host independant initialization routines, and a low level, host specific implementation. The interface between the low & high level part is through an array of host structures, where each host structure has a pointer to a detect function, an information function, and the actual SCSI command function. Use of multiple host adapters is supported. Code in the high-level SCSI initialization routine scans each present SCSI host for devices - target ID 0-6, LUN 0-7 if LUN 0 is found. Capacity of each device is determined, and a structure in either the ST tape driver or SD disk driver. This, in conjunction with the detect function supplied for each host, allows the drivers to be 100% self configuring. The SCSI disk and TAPE drivers simply pass SCSI commands through the high level interface to their appropriate devices. The disk device also automatically remaps bad sectors. It will initially be bundled with a low-level driver for the Seagate ST-01/ST-02 SCSI hosts - what I have. They're 8 bit, can't run 1:1 on SCSI disks, but they're dirt cheap... If any one has other hosts, and wants to volunteer to write a matching low level driver, I can supply the interface specifications for your driver now, and working disk block device driver within a couple days when I'm satisfied with it. --[0170]-- [0171] daemon@ATHENA.MIT.EDU (Michael Kronvold) Linux_Activists 12/10/91 02:30 (12 lines) Subject: Linux and SCSI (was: hd_reset fails in 0.11) Date: Tue, 10 Dec 91 01:16:26 GMT-0600 From: kronvold@sumter.cso.uiuc.edu (Michael Kronvold) To: drew@hazelrah.cs.colorado.edu Cc: Linux-activists@joker.cs.hut.fi In-Reply-To: Drew Eckhardt's message of Mon, 9 Dec 1991 22:15:17 -0700 <199112100515.AA13922@hazelrah.cs.Colorado.EDU> Well, I'm using a DTC controller, and I seriously doubt my ability to write the low level for it... BUT, I'm willing to try just in case someone else out there might have a similar controller. :) - Mike --[0171]-- [0172] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 12/10/91 02:55 (41 lines) Subject: Signal handler compatibility? Date: Tue, 10 Dec 91 02:47:13 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: Linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu Well, it looks like I have job control pretty much functioning with a version of bash that understands job control, and it pretty much works. One or two more days while I do more testing and packaging of diffs, and I'll be sending the kernel changes to Linus, and making them available on TSX-11 so that more adventurous souls who job control sooner rather than later can grab it and try it out. One of the problems which I've run into during my testing is that when a read gets interrupted with a ^Z, when you restart it, the system call that was in progress returns a -EINTR, and the program is supposed to understand the EINTR and restart the system call. Well, the problem is thatmost programs *don't* bother to understand EINTR, and so it is highly desirable to have restartable system calls ala BSD 4.3. Unfortunately, in order to do that, it will be necessary to change the signal trampoline code so the signal handler exits, a sigreturn system call is executed. This in fact will result in cleaner and clearer code in the kernel, but since the signal trampoline code is part of libc.a, it would mean that code which used signal handlers would need to be recompiled. In other words, a kernel which used the new way of doing signal handling would not be binary compatible with binaries that used signal handlers. Now, I can think of ways that would probably work in making the resulting kernel be backwards compatible, but they all involve really gross hacks that would be really painful, and I'm not sure that it would be good thing to be introducing ugly hacks to maintain backwards compatibility when Linux is still in beta test. How do people feel about this one? How much code which has been ported actually use signal handlers? Would people be willing to recompile them with a new libc.a? Linus, would you be willing to take a change in the signal handling code that might not be backwards compatible? - Ted --[0172]-- [0173] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 12/10/91 09:19 (26 lines) Subject: hd controller problem From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Tue, 10 Dec 91 8:03:28 CST Hi all, Like others I had a problem when starting up Linux 0.11. The changes suggested sort of worked, i.e. not doing a reset on boot did, but making a bigger loop in reset_controller didn't. The method I used was to increase the loop in drive_busy from 10000 to 100000. The loop in reset_ controller is back to 100. No problems. Linus you asked about machines people are using that have the problem. My motherboard is a 33mhz-64k cache board. The controller is a HD/FD, with the HD portion locked to 1:1 interleave. As you may remember from earlier discussion the FD portion wouldn't work under Linux so I disabled it and put a floppy only controller card in. The Hard disk seems to be sluggish and usually responds slow, so I imagine that is where the problem is coming from. Later, -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0173]-- [0174] daemon@ATHENA.MIT.EDU (LCDR Michael E. Dobson) Linux_Activists 12/10/91 11:17 (26 lines) Subject: Seg Faults under 0.11 From: "LCDR Michael E. Dobson" To: linux-activists@joker.cs.hut.fi (Linux Mailing List) Date: Tue, 10 Dec 91 10:44:17 EST I seem to be having some trouble with Out of memory errors under 0.11 that I didn't have under 0.10. Uncompress is failing with an: Out of memory. Segmentation Fault error on even small files. At bootup I show 3647 free blocks on the root hd device and 3145728 free bytes of mem. The cu from Will Rose's UUCP 1.2 package also fails with the above error even though I now have it compiling and linking with only some incompatible pointer type warnings, some unused variable warnings, and some implicit function declaration warnings. Can anyone shed some light as to what could be causing the above errors? -- Mike Dobson, Sys Admin for | Internet: rdc30@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30 AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb or nrd0mxd@vmnmdsc WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com --[0174]-- [0175] daemon@ATHENA.MIT.EDU (d7stfax@dtek.chalmers.se) Linux_Activists 12/10/91 12:56 (29 lines) Subject: IDE partitions larger than 65536? From: d7stfax@dtek.chalmers.se To: linux-activists@joker.cs.hut.fi (The Linux mailing list) Date: Tue, 10 Dec 91 18:45:55 MET I've finally come around to get Linux home (I've had other things to do, and thought I'd wait till the 0.11 release anyway.), and everything worked like a charm, until I tried the 'mkfs' it wouldn't run, but stopped with a USAGE:! To make a long story short, I've now found out that it was due to me wanting to use my entire 105 Meg hard disk as one partition, mkfs won't allocate more than 65536 blocks. My question is now simply, should I repartition my hard disk to two partitions, or can I easily change the 16 bit block number limit (e.g. DEFINE, and recompile)? I strongly suspect the former, but since I haven't begun to read the sources yet I'm not 100% sure. If it's repartition time could some kind soul point me to a good (DOS?) program that does that? DOS fdisk doesn't seem up to it, especially since the disk had only one 105 Meg Interactive Unix partition on it. My setup is: 386-25, IDE Plus co. 105 Meg hard disk, 10 Meg memory, VGA controler. I'm no MSDOS junkie, but I asked the ones here, and the above is as far as I got. Regards, -- Stefan Axelsson, Chalmers University of Technology, d7stfax@dtek.chalmers.se Sweden --[0175]-- [0176] daemon@ATHENA.MIT.EDU (Michael K. Johnson) Linux_Activists 12/10/91 13:28 (17 lines) Subject: DTC SCSI controllers Date: Tue, 10 Dec 91 12:17:07 CST From: johnsonm@stolaf.edu (Michael K. Johnson) To: Linux-activists@joker.cs.hut.fi I have a DTC SCSI controller, and would be willing to (as I become a bit more proficient) write the low-level driver for it. However, there is a catch -- I will almost assuredly, due to my schedule, not be able to start till february or so. Sooooo, if anyone else wants to pick this up, feel free:-) If anyone needs to talk to them, I have voice and BBS numbers for their tech support. michaelkjohnson johnsonm@stolaf.edu I do not do .sig's --[0176]-- [0177] daemon@ATHENA.MIT.EDU (Patrick L. McGillan) Linux_Activists 12/10/91 15:50 (14 lines) Subject: printing From: Patrick L. McGillan To: linux-activists@joker.cs.hut.fi (Linux User Group) Date: Tue, 10 Dec 91 14:36:28 CST Hi, Am I missing something or does linux have no way of printing something out. I.E. how do others obtain print outs of their work. -- Patrick L. McGillan Computer Systems Specialist University Of Wisconsin Ph: (715) 394-8191 Superior, Wisconsin pmcgilla@uwsuper.edu --[0177]-- [0178] daemon@ATHENA.MIT.EDU (David Darknell) Linux_Activists 12/10/91 16:19 (11 lines) Subject: Re: Linux and SCSI (was: hd_reset fails in 0.11) Date: Tue, 10 Dec 91 13:04:50 PST From: David Darknell To: Linux-activists@joker.cs.hut.fi, drew@hazelrah.cs.colorado.edu, YES! I am trying to write a driver for a FastCache High performance SCSI controller (I used to have a ST-01/02) but I am in a catch 22: I cannot run Linux on the drive without a driver, but cannot write the driver without Linux. So here is my plan: Install MFM controller and 40Meg drive long enough to write the SCSI driver, then dump it. I would be happy to get anything you have that might make my job easier! --[0178]-- [0179] daemon@ATHENA.MIT.EDU (LCDR Michael E. Dobson) Linux_Activists 12/10/91 16:31 (39 lines) Subject: More Seg Fault troubles From: "LCDR Michael E. Dobson" To: torvalds@kruuna.helsinki.fi (Linus Torvalds) Date: Tue, 10 Dec 91 16:05:11 EST Cc: linux-activists@joker.cs.hut.fi (Linux Mailing List) Linus, I've found another set of conditions where I can reproducibly generate the out of memory Segmentation fault messages using a simple command. Environment: drwxr-xr-x root sys /usr/spool drwxr-xr-x uucp uucp /usr/spool/uucp ls -l /usr/spool from anywhere but within /usr/spool generates : /usr/spool total 1 out of memory Segmentation fault a plain ls /usr/spool generates: uucp with no errors looks possibly like a EPERM problem during the stat of the directory. -- Mike Dobson, Sys Admin for | Internet: rdc30@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30 AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb or nrd0mxd@vmnmdsc WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com --[0179]-- [0180] daemon@ATHENA.MIT.EDU (Marc Peters) Linux_Activists 12/10/91 16:33 (35 lines) Subject: Serial Communications... Date: Tue, 10 Dec 91 13:22:00 -0800 From: mpeters@polyslo.csc.calpoly.edu (Marc Peters) To: linux-activists@joker.cs.hut.fi I may have missed this discussion, but is anyone else having a problem with modem communications? It seems that the serial communication is sending 16 bit words rather than 8 bit characters (ie. it sends two characters at a time). This works great if the command you send is of odd character length so when you hit a carriage return it makes it even, but when you have an even length command, you must hit return followed by say a to have the return sent. This happens in both V 0.10 and V 0.11 in both Kermit and Term. Note: It happens when sending the "at" string to the modem as well as when the modem is connected. Also, I was able to fix the HD not ready error by changing the length of the null loop in the hd_ready function (in hd.c) to 30,000. Changing the length of the controller reset function didn't accomplish anything more than delaying the time it took before it printed the error. I still get the controller reset error but it isn't fatal so things keep moving. I have a 386DX-33 with a MFM hard drive. The drive is pretty old so it is a little slow (which may be the problem). I did try V 0.11 on a 386DX-25 that has a faster IDE controller drive in it and it doesn't get the fatal error with the drive ready loop set to 10,000. It still get the controller reset error though. The last question I have is how do I change the source code to compile the kernel to boot from Major 0 minor 0 rather than Major 3 minor 6? I tried changing the defaults in build.c and changed bootsect.s to have 000 instead for the root device (should give the floppy). However, when I compile the kernel, the build program consistently uses (3, 6). What am I missing? Marc Peters mpeters@polyslo.calpoly.edu --[0180]-- [0181] daemon@ATHENA.MIT.EDU (LCDR Michael E. Dobson) Linux_Activists 12/11/91 12:36 (42 lines) Subject: Re: More Seg Fault troubles From: "LCDR Michael E. Dobson" To: torvalds@cc.helsinki.fi (Linus Benedict Torvalds) Date: Wed, 11 Dec 91 12:02:13 EST Cc: linux-activists@joker.cs.hut.fi (Linux Mailing List) In-Reply-To: <199112102246.AA07956@kruuna.helsinki.fi>; from "Linus Benedict Torvalds" at Dec 11, 91 12:46 am Linus, I've done some more investigating and can give you detailed info that should reproduce the bug on your system. Entry from /etc/passwd that causes problem uucp::5:5:/usr/lib/uucp **NOTE NO ":" on end of entry*** ls -l /usr/spool drwxr-xr-x uucp uucp 48 11 DEc 10:53 uucp /usr/spool total 1 out of memory Segmentation fault ls -lR /usr/spool is ok! cd /usr/spool ls -l is ok! Now for the interesting part: adding ":" to end of uucp entry in /etc/passwd cures problem!! So, you know the code involved, bug or "feature"? -- Mike Dobson, Sys Admin for | Internet: rdc30@nmrdc1.nmrdc.nnmc.navy.mil nmrdc1.nmrdc.nnmc.navy.mil | UUCP: ...uunet!mimsy!nmrdc1!rdc30 AT&T 3B2/600G Sys V R 3.2.2 | BITNET: dobson@usuhsb or nrd0mxd@vmnmdsc WIN/TCP for 3B2 | MCI-Mail: 377-2719 or 0003772719@mcimail.com --[0181]-- [0182] daemon@ATHENA.MIT.EDU (drew@anchor.cs.colorado.edu) Linux_Activists 12/11/91 18:57 (359 lines) Subject: Re: Linux and SCSI To: Linux-activists@joker.cs.hut.fi, Cc: drew@anchor.cs.colorado.edu Date: Wed, 11 Dec 91 16:41:04 MST From: drew@anchor.cs.colorado.edu -------- > > Date: Tue, 10 Dec 91 12:13:59 CST > To: drew@hazelrah.cs.Colorado.EDU > From: johnsonm@stolaf.edu (Michael K. Johnson) > Subject: Re: Linux and SCSI (was: hd_reset fails in 0.11) > > > Return-Path: johnsonm@stolaf.edu > Status: RO > > -------------------------------------------------------------------- > I am just learning unix systems programming with linux, but I have > a SCSI hard drive and a DTC adapter, and would be very willing to > write the device dependent stuff for it when I get to that ability > level if no one else has done it be then. I will be taking an OS > class next semester (starting february) so I could even use this > as a project. So although I can't do this right now, I would like > it if you could put me on your list to get the information, which > I can save and then hopefully work on when I am able. > > Thanks a lot! > > michaelkjohnson > > Date: Tue, 10 Dec 91 12:17:07 CST > To: Linux-activists@joker.cs.hut.fi > From: johnsonm@stolaf.edu (Michael K. Johnson) > Subject: DTC SCSI controllers > > > Return-Path: johnsonm@stolaf.edu > Status: RO > > -------------------------------------------------------------------- > > I have a DTC SCSI controller, and would be willing to (as I become a bit > more proficient) write the low-level driver for it. However, there is > a catch -- I will almost assuredly, due to my schedule, not be able to > start till february or so. Sooooo, if anyone else wants to pick this > up, feel free:-) > > If anyone needs to talk to them, I have voice and BBS numbers for their > tech support. > > michaelkjohnson > johnsonm@stolaf.edu > I do not do .sig's > > > > > Date: Tue, 10 Dec 91 13:04:50 PST > To: Linux-activists@joker.cs.hut.fi, drew@hazelrah.cs.Colorado.EDU, > kronvold@sumter.cso.uiuc.edu > From: David Darknell > Subject: Re: Linux and SCSI (was: hd_reset fails in 0.11) > > > Return-Path: david@maxwell.UCSC.EDU > Status: RO > > -------------------------------------------------------------------- > YES! I am trying to write a driver for a FastCache High performance > SCSI controller (I used to have a ST-01/02) but I am in a catch 22: > I cannot run Linux on the drive without a driver, but cannot write the > driver without Linux. So here is my plan: Install MFM controller and > 40Meg drive long enough to write the SCSI driver, then dump it. I > would > be happy to get anything you have that might make my job easier! -------- You don't have to compile Linux under Linux. Another possibility is cross compiling. If you have access to another little endian machine , LSB first, cross compiling is as easy as doing a make gcc with target machine set to some tm-i386 file. Depending on how the host system is set up, you may be able to use the native ld / ar - and even if not, it is no problem to compile the gnu binutils and have gcc/gas use them. Anyways, here's my hosts.h file, the generic interface to the lowlevel host specific drivers. There isn't much too it - the point here was to keep things SIMPLE, flexible, and 100% self configuring so we aren't recompiling just to get SCSI support. This is pretty firm - I have one idea I may / may not want to implement that I'll talk about in the end. -- cut here - hosts.h -- #ifndef __HOST_H__ #define __HOSTS_H__ /* File hosts.h SCSI host adapter include file. */ #define MAX_SCSI_HOSTS 1 /* The Scsi_Host type has all that is needed to interface with a SCSI host in a device independant matter. */ typedef struct { /* The name pointer is a pointer to the name of the SCSI device detected. */ char *name; /* The detect function shall return non zero on detection, and initialize all data necessary for this particular SCSI driver. */ int (* detect)(void); /* The info function will return whatever useful information the developer sees fit. */ char * (* info)(void); /* The command function shall return the SCSI return code in the low 8 bits, a driver error in the high 8 bits. Target is the target ID, IN normal numbers - not a bit. The cmnd is the variable length command to be sent, buff a pointer to the buffer which will be read from / written to, and bufflen the length of that buffer */ int (* command)(unsigned char target, const void *cmnd, void *buff, int bufflen); /* present contains a flag as to weather we are present - so we don't have to call detect multiple times. */ unsigned char present; } Scsi_Host; /* The scsi_hosts array is the array containing the data for all possible scsi hosts. */ extern Scsi_Host scsi_hosts[MAX_SCSI_HOSTS]; /* scsi_init initializes the scsi hosts. */ void scsi_init(void); #endif -- end -- And, for our return codes, useful SCSI stuff, etc, we have scsi.h -- scsi.h cut here -- #ifndef __SCSI_H__ #define __SCSI_H__ /* For documentation on the OPCODES, MESSAGES, and SENSE values, please consult the SCSI standard. */ /* SCSI opcodes */ #define TEST_UNIT_READY 0x00 #define REZERO_UNIT 0x01 #define REQUEST_SENSE 0x03 #define FORMAT_UNIT 0x04 #define REASSIGN_BLOCKS 0x07 #define READ_6 0x08 #define WRITE_6 0x0a #define SEEK 0x0b #define INQUIRY 0x12 #define MODE_SELECT 0x15 #define RESERVE 0x16 #define RELEASE 0x17 #define COPY 0x18 #define MODE_SENSE 0x1a #define START_STOP 0x1b #define RECIEVE_DAIGNOSTIC 0x1c #define SEND_DIAGNOSTIC 0x1d #define ALLOW_MEDIUM_REMOVAL 0x1e #define READ_CAPACITY 0x25 #define READ_10 0x28 #define WRITE_10 0x2a #define SEEK_10 0x2b #define WRITE_VERIFY 0x2e #define VERIFY 0x2f #define SEARCH_HIGH 0x30 #define SEARCH_EQUAL 0x31 #define SEARCH_LOW 0x32 #define SET_LIMITS 0x33 #define COMPARE 0x39 #define COPY_VERIFY 0x3a /* MESSAGE CODES */ #define COMMAND_COMPLETE 0x00 #define EXTENDED_MESSAGE 0x01 #define SAVE_POINTERS 0x02 #define RESTORE_POINTERS 0x03 #define DISCONNECT 0x04 #define INITIATOR_ERROR 0x05 #define ABORT 0x06 #define MESAGE_REJECT 0x07 #define NOP 0x08 #define MSG_PARITY_ERROR 0x09 #define LINKED_CMD_COMPLETE 0x0a #define LINKED_FLG_CMD_COMPLETE 0x0b #define BUS_DEVICE_RESET 0x0c #define IDENTIFY 0x80 /* Our errors returned by OUR driver, NOT SCSI message. Orr'd with SCSI message passed back to driver . */ /* NO error */ #define DID_OK 0x0000 /* Couldn't connect before timeout period */ #define DID_NO_CONNECT 0x0100 /* BUS stayed busy through time out period */ #define DID_BUS_BUSY 0x0200 /* TIMED OUT for other reason */ #define DID_TIME_OUT 0x0300 /* ERROR from TARGET */ #define DID_TERROR 0x0400 /* TARGET was busy */ #define DID_TBUSY 0x0500 /* TARGET disconnected prematurely */ #define DID_TDISCONNECT 0x0600 /* TARGET was off line */ #define DID_TOFFLINE 0x0700 /* TARGET wants US to send IT a message */ #defibe DID_TREQ_MSG_OUT 0x0800 /* TARGET parity error */ #define DID_TPARITY 0x0900 /* TARGET requested reselect */ #define DID_TRESELECT 0x0A00 /* TARGET was not in the range 0-6 inlclusive */ #define DID_BAD_TARGET 0x0B00 /* SENSE KEYS */ #define NO_SENSE 0x00 #define RECOVERED_ERROR 0x01 #define NOT_READY 0x02 #define MEDIUM_ERROR 0x03 #define HARDWARE_ERROR 0x04 #define ILLEGAL_REQUEST 0x05 #define UNIT_ATTENTION 0x06 #define DATA_PROTECT 0x07 #define BLANK_CHECK 0x08 #define COPY_ABORTED 0x0a #define ABORTED_COMMAND 0x0b #define VOLUME_OVERFLOW 0x0d #define MISCOMPARE 0x0e /* DEVICE TYPES */ #define TYPE_DISK 0x00 #define TYPE_TAPE 0x01 #define TYPE_WORM 0x04 /* Treated as ROM by our system */ #define TYPE_ROM 0x05 #define TYPE_NO_LUN 0x7f /* Every SCSI command starts with a one byte OP-code. The next byte's high three bits are the LUN of the device. Any multi-byte quantities are stored high byte first, and may have a 5 bit MSB in the same byte as the LUN. */ #endif -- end -- I'll divert work from the low level routines to the high & mid level routines to have something to pass around for when people start getting other low level drivers done. I *REALLY* like the above interface in terms of meeting the design criteria of simplicity, independance of the host-specific code, and the ability for the routines to configure automatically. The finaly interface will be almost identical to what is there now. However, it might also be nice to be able to queue commands for use with interrupt driven SCSI hosts that can function without the computer controlling everything- We may want to add a que_command call that will add a command to an internal queue in the host specific driver. This would be something like the command function, only it would also take a pointer to a routine that was called on completion, like int (*queue_command)(unsigned char target, const void *cmd, void *buff, int bufflen, void (*complete)(int host, int serial_no, int cmd_return)); Where it returns the serial number of the queued command, and calls the complete function on termination with the SCSI message / return code , host # and serial number of the command that terminated. Other solicitations for opinions 1. Other peoples opinions on when to remap 2. What we want to do about sector sizes that are not 512 bytes 3. Currently, I use only 10 byte read/writes in my disk / tape drivers. The rationale behind this is that 10 byte commands fall in the same compliance level as INQUIRY and READ CAPACITY commmands, and presumably a drive would have all. Is this a valid ssumption? Does anybody see a reason for me to bloat the code and check for 10 byte commmand failure, and implement the 6 byte read/write if so? --[0182]-- [0183] daemon@ATHENA.MIT.EDU (drew@anchor.cs.colorado.edu) Linux_Activists 12/11/91 19:39 (359 lines) Subject: Re: Linux and SCSI To: Linux-activists@joker.cs.hut.fi, Cc: drew@anchor.cs.colorado.edu Date: Wed, 11 Dec 91 17:17:25 MST From: drew@anchor.cs.colorado.edu -------- > > Date: Tue, 10 Dec 91 12:13:59 CST > To: drew@hazelrah.cs.Colorado.EDU > From: johnsonm@stolaf.edu (Michael K. Johnson) > Subject: Re: Linux and SCSI (was: hd_reset fails in 0.11) > > > Return-Path: johnsonm@stolaf.edu > Status: RO > > -------------------------------------------------------------------- > I am just learning unix systems programming with linux, but I have > a SCSI hard drive and a DTC adapter, and would be very willing to > write the device dependent stuff for it when I get to that ability > level if no one else has done it be then. I will be taking an OS > class next semester (starting february) so I could even use this > as a project. So although I can't do this right now, I would like > it if you could put me on your list to get the information, which > I can save and then hopefully work on when I am able. > > Thanks a lot! > > michaelkjohnson > > Date: Tue, 10 Dec 91 12:17:07 CST > To: Linux-activists@joker.cs.hut.fi > From: johnsonm@stolaf.edu (Michael K. Johnson) > Subject: DTC SCSI controllers > > > Return-Path: johnsonm@stolaf.edu > Status: RO > > -------------------------------------------------------------------- > > I have a DTC SCSI controller, and would be willing to (as I become a bit > more proficient) write the low-level driver for it. However, there is > a catch -- I will almost assuredly, due to my schedule, not be able to > start till february or so. Sooooo, if anyone else wants to pick this > up, feel free:-) > > If anyone needs to talk to them, I have voice and BBS numbers for their > tech support. > > michaelkjohnson > johnsonm@stolaf.edu > I do not do .sig's > > > > > Date: Tue, 10 Dec 91 13:04:50 PST > To: Linux-activists@joker.cs.hut.fi, drew@hazelrah.cs.Colorado.EDU, > kronvold@sumter.cso.uiuc.edu > From: David Darknell > Subject: Re: Linux and SCSI (was: hd_reset fails in 0.11) > > > Return-Path: david@maxwell.UCSC.EDU > Status: RO > > -------------------------------------------------------------------- > YES! I am trying to write a driver for a FastCache High performance > SCSI controller (I used to have a ST-01/02) but I am in a catch 22: > I cannot run Linux on the drive without a driver, but cannot write the > driver without Linux. So here is my plan: Install MFM controller and > 40Meg drive long enough to write the SCSI driver, then dump it. I > would > be happy to get anything you have that might make my job easier! -------- You don't have to compile Linux under Linux. Another possibility is cross compiling. If you have access to another little endian machine , LSB first, cross compiling is as easy as doing a make gcc with target machine set to some tm-i386 file. Depending on how the host system is set up, you may be able to use the native ld / ar - and even if not, it is no problem to compile the gnu binutils and have gcc/gas use them. Anyways, here's my hosts.h file, the generic interface to the lowlevel host specific drivers. There isn't much too it - the point here was to keep things SIMPLE, flexible, and 100% self configuring so we aren't recompiling just to get SCSI support. This is pretty firm - I have one idea I may / may not want to implement that I'll talk about in the end. -- cut here - hosts.h -- #ifndef __HOST_H__ #define __HOSTS_H__ /* File hosts.h SCSI host adapter include file. */ #define MAX_SCSI_HOSTS 1 /* The Scsi_Host type has all that is needed to interface with a SCSI host in a device independant matter. */ typedef struct { /* The name pointer is a pointer to the name of the SCSI device detected. */ char *name; /* The detect function shall return non zero on detection, and initialize all data necessary for this particular SCSI driver. */ int (* detect)(void); /* The info function will return whatever useful information the developer sees fit. */ char * (* info)(void); /* The command function shall return the SCSI return code in the low 8 bits, a driver error in the high 8 bits. Target is the target ID, IN normal numbers - not a bit. The cmnd is the variable length command to be sent, buff a pointer to the buffer which will be read from / written to, and bufflen the length of that buffer */ int (* command)(unsigned char target, const void *cmnd, void *buff, int bufflen); /* present contains a flag as to weather we are present - so we don't have to call detect multiple times. */ unsigned char present; } Scsi_Host; /* The scsi_hosts array is the array containing the data for all possible scsi hosts. */ extern Scsi_Host scsi_hosts[MAX_SCSI_HOSTS]; /* scsi_init initializes the scsi hosts. */ void scsi_init(void); #endif -- end -- And, for our return codes, useful SCSI stuff, etc, we have scsi.h -- scsi.h cut here -- #ifndef __SCSI_H__ #define __SCSI_H__ /* For documentation on the OPCODES, MESSAGES, and SENSE values, please consult the SCSI standard. */ /* SCSI opcodes */ #define TEST_UNIT_READY 0x00 #define REZERO_UNIT 0x01 #define REQUEST_SENSE 0x03 #define FORMAT_UNIT 0x04 #define REASSIGN_BLOCKS 0x07 #define READ_6 0x08 #define WRITE_6 0x0a #define SEEK 0x0b #define INQUIRY 0x12 #define MODE_SELECT 0x15 #define RESERVE 0x16 #define RELEASE 0x17 #define COPY 0x18 #define MODE_SENSE 0x1a #define START_STOP 0x1b #define RECIEVE_DAIGNOSTIC 0x1c #define SEND_DIAGNOSTIC 0x1d #define ALLOW_MEDIUM_REMOVAL 0x1e #define READ_CAPACITY 0x25 #define READ_10 0x28 #define WRITE_10 0x2a #define SEEK_10 0x2b #define WRITE_VERIFY 0x2e #define VERIFY 0x2f #define SEARCH_HIGH 0x30 #define SEARCH_EQUAL 0x31 #define SEARCH_LOW 0x32 #define SET_LIMITS 0x33 #define COMPARE 0x39 #define COPY_VERIFY 0x3a /* MESSAGE CODES */ #define COMMAND_COMPLETE 0x00 #define EXTENDED_MESSAGE 0x01 #define SAVE_POINTERS 0x02 #define RESTORE_POINTERS 0x03 #define DISCONNECT 0x04 #define INITIATOR_ERROR 0x05 #define ABORT 0x06 #define MESAGE_REJECT 0x07 #define NOP 0x08 #define MSG_PARITY_ERROR 0x09 #define LINKED_CMD_COMPLETE 0x0a #define LINKED_FLG_CMD_COMPLETE 0x0b #define BUS_DEVICE_RESET 0x0c #define IDENTIFY 0x80 /* Our errors returned by OUR driver, NOT SCSI message. Orr'd with SCSI message passed back to driver . */ /* NO error */ #define DID_OK 0x0000 /* Couldn't connect before timeout period */ #define DID_NO_CONNECT 0x0100 /* BUS stayed busy through time out period */ #define DID_BUS_BUSY 0x0200 /* TIMED OUT for other reason */ #define DID_TIME_OUT 0x0300 /* ERROR from TARGET */ #define DID_TERROR 0x0400 /* TARGET was busy */ #define DID_TBUSY 0x0500 /* TARGET disconnected prematurely */ #define DID_TDISCONNECT 0x0600 /* TARGET was off line */ #define DID_TOFFLINE 0x0700 /* TARGET wants US to send IT a message */ #defibe DID_TREQ_MSG_OUT 0x0800 /* TARGET parity error */ #define DID_TPARITY 0x0900 /* TARGET requested reselect */ #define DID_TRESELECT 0x0A00 /* TARGET was not in the range 0-6 inlclusive */ #define DID_BAD_TARGET 0x0B00 /* SENSE KEYS */ #define NO_SENSE 0x00 #define RECOVERED_ERROR 0x01 #define NOT_READY 0x02 #define MEDIUM_ERROR 0x03 #define HARDWARE_ERROR 0x04 #define ILLEGAL_REQUEST 0x05 #define UNIT_ATTENTION 0x06 #define DATA_PROTECT 0x07 #define BLANK_CHECK 0x08 #define COPY_ABORTED 0x0a #define ABORTED_COMMAND 0x0b #define VOLUME_OVERFLOW 0x0d #define MISCOMPARE 0x0e /* DEVICE TYPES */ #define TYPE_DISK 0x00 #define TYPE_TAPE 0x01 #define TYPE_WORM 0x04 /* Treated as ROM by our system */ #define TYPE_ROM 0x05 #define TYPE_NO_LUN 0x7f /* Every SCSI command starts with a one byte OP-code. The next byte's high three bits are the LUN of the device. Any multi-byte quantities are stored high byte first, and may have a 5 bit MSB in the same byte as the LUN. */ #endif -- end -- I'll divert work from the low level routines to the high & mid level routines to have something to pass around for when people start getting other low level drivers done. I *REALLY* like the above interface in terms of meeting the design criteria of simplicity, independance of the host-specific code, and the ability for the routines to configure automatically. The finaly interface will be almost identical to what is there now. However, it might also be nice to be able to queue commands for use with interrupt driven SCSI hosts that can function without the computer controlling everything- We may want to add a que_command call that will add a command to an internal queue in the host specific driver. This would be something like the command function, only it would also take a pointer to a routine that was called on completion, like int (*queue_command)(unsigned char target, const void *cmd, void *buff, int bufflen, void (*complete)(int host, int serial_no, int cmd_return)); Where it returns the serial number of the queued command, and calls the complete function on termination with the SCSI message / return code , host # and serial number of the command that terminated. Other solicitations for opinions 1. Other peoples opinions on when to remap 2. What we want to do about sector sizes that are not 512 bytes 3. Currently, I use only 10 byte read/writes in my disk / tape drivers. The rationale behind this is that 10 byte commands fall in the same compliance level as INQUIRY and READ CAPACITY commmands, and presumably a drive would have all. Is this a valid ssumption? Does anybody see a reason for me to bloat the code and check for 10 byte commmand failure, and implement the 6 byte read/write if so? --[0183]-- [0184] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 12/12/91 00:12 (10 lines) Subject: GNU awk (binaries & sources) Date: Wed, 11 Dec 91 21:07:17 PST To: linux-activists@joker.cs.hut.fi From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu I've had Ted Ts'o put my port of GNU awk (2.11, I think it was...) onto tsx-11.mit.edu, in ~ftp/pub/linux/binaries & ~ftp/pub/linux/ports (the latter has diffs from the FSF distributed sources). John --[0184]-- [0185] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 12/12/91 10:18 (8 lines) Subject: find-1.2 (binaries only) Date: Thu, 12 Dec 91 15:47:53 +0100 From: corsini@numero6.greco-prog.fr (Marc CORSINI) To: linux-activists@joker.cs.hut.fi The port of GNU find-1.2, is available on tsx-11.mit.edu in pub/linux/binaries [mmc] --[0185]-- [0186] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 12/12/91 11:49 (40 lines) Subject: find-1.2 Date: Thu, 12 Dec 1991 18:16:00 +0200 From: Ari Lemmke To: linux-activists@joker.cs.hut.fi In-Reply-To: Marc CORSINI's message of Thu, 12 Dec 91 15:47:53 +0100 <9112121447.AA03130@numero6.greco-prog.fr> > The port of GNU find-1.2, is available on tsx-11.mit.edu in > pub/linux/binaries Also available on nic.funet.fi: /pub/OS/Linux/bin: -rw-r--r-- 1 arl 51202 Dec 8 15:47 as86.tar.Z -rw-r--r-- 1 arl 146964 Sep 17 17:24 bash.Z -rw-r--r-- 1 arl 76265 Nov 17 04:01 bison.tar.Z -rw-r--r-- 1 arl 90721 Nov 17 20:53 diffbin.tar.Z -rw-r--r-- 1 arl 106429 Dec 12 03:56 find-1.2.tar.Z -rw-r--r-- 1 arl 76925 Nov 17 04:08 flex.tar.Z -rw-r--r-- 1 arl 7722 Dec 12 03:56 gawk-diffs -rw-r--r-- 1 arl 68625 Dec 12 03:57 gawk.Z -rw-r--r-- 1 arl 666231 Oct 2 14:49 gccbin.tar.Z -rw-r--r-- 1 arl 87613 Nov 17 20:53 kermit.Z -rw-r--r-- 1 arl 42737 Nov 20 07:31 less.Z -rw-r--r-- 1 arl 262475 Dec 6 05:38 rcs.tar.Z -rw-r--r-- 1 arl 91743 Dec 8 19:24 uemacs.Z -rw-r--r-- 1 arl 930 Sep 17 17:24 update.Z -rw-r--r-- 1 arl 898837 Oct 6 14:57 utilbin.tar.Z /pub/OS/Linux/xtra: -rw-r--r-- 1 arl 375 Nov 20 07:30 README.pmake -rw-r--r-- 1 arl 6380 Nov 20 07:30 pm_supp.tar.Z -rw-r--r-- 1 arl 72229 Nov 20 07:30 pmake.Z /pub/OS/Linux/tools: -rw-r--r-- 1 arl 16270 Nov 18 20:32 fsck.c arl --[0186]-- [0187] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 12/12/91 13:50 (31 lines) Subject: Looking for alpha testers for job control changes Date: Thu, 12 Dec 91 13:30:42 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: linux-activists@joker.cs.hut.fi Reply-To: tytso@athena.mit.edu I'm looking for a few people who are willing to take a look at my changes to add job control to Linux and test them out. The ideal alpha tester is someone who is willing to try out these changes and see if 1) they can find some way of using job control which breaks my implementation, 2) if they conflict with changes they are planning to make to the kernel (mostly changes in exit.c and signal.c, with additional changes in tty_io.c, tty_ioctl.c, sys.c, and open.c), and/or 3) if they reasonably correspond with other implementations of job control, particularily BSD 4.3 and Sys V. I make no guarantees about the correctness of these patches, and any future patches which I send out will be relative to Linux 0.11, NOT to these alpha patches. The main reason why I want people to try them out is that I've implemented job control almost entirely from the POSIX spec, and I would other people to check to see if my interpretation of the POSIX spec is compatible with the rest of the world. If you feel up to trying them out, please let me know. If you want to look at the changes before deciding, they can be found in TSX-11:~ftp/ALPHA/jobcontrol. One generic bug which will hit when you try this is out is that apparently there is a bug with how gcc handles signals. If you send gcc a SIGCONT (you don't even need to stop it first), it will die with an IOT trap. I suspect gcc needs to be recompiled with a recent libc.a to fix this problem. - Ted --[0187]-- [0188] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/12/91 14:06 (42 lines) Subject: "weekly" bugreport etc Date: Thu, 12 Dec 1991 20:52:46 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Well, time for my weekly bug-report again. Nothing too bad this time. 1) linux/kernel/signal.c kills a process with the wrong error code when it gets a signal that the process doesn't handle. The easiest way to test this is by sending a SIGQUIT to some running program (with ^|) - bash will report that the program died due to "Illegal Instruction" This bug already got corrected in some version, but it wiggled its way back :-(. The line is something like this (in do_signal()): if (!sa_handler) { if (nr == SIGCHLD) return; else do_exit(1<<(nr-1)); } when it should be if (!sa_handler) { if ... ... else do_exit(nr); } 2) As has been shown, you can get spurious "out of memory" errors if the passwd file has the incorrect format. This wasn't a error in the kernel, but in the library - I'll correct it by using the GNU lib etc. I'll also make full library source available (not before sunday: I've got 1e3 things to do). In the meanwhile, this bug isn't easy to trigger, and not fatal even then, so... Linus PS. I'm interested in hearing about everybody that has problems with either the harddisk or the serial line. There was a report that serial lines sent out 2 characters at a time - does anybody else see this? --[0188]-- *** /afs/net/tools/src/play/play.c Tue Jul 23 13:15:03 1991 --- play.c Wed Dec 18 17:38:06 1991 *************** *** 30,35 **** --- 30,37 ---- #define OPTION_TICKLE_SSAVE 2 int Special_X_Error_Handler(); + int (*Default_X_Error_Handler)(); + int bad_window_found; /* This is set if a bad window error */ /* is ignored */ *************** *** 137,143 **** /* * Redirect the error routine so bad windows don't kill us. */ ! XSetErrorHandler(Special_X_Error_Handler); while (1) { int no_state; --- 139,145 ---- /* * Redirect the error routine so bad windows don't kill us. */ ! Default_X_Error_Handler = XSetErrorHandler(Special_X_Error_Handler); while (1) { int no_state; *************** *** 413,516 **** bad_window_found++; return 0; } ! if (_XPrintDefaultError(dpy, event, stderr) == 0) ! return 0; ! exit(1); ! } ! ! /* ! * Stolen from X11R4's XlibInt.c ! */ ! int _XPrintDefaultError (dpy, event, fp) ! Display *dpy; ! XErrorEvent *event; ! FILE *fp; ! { ! char buffer[BUFSIZ]; ! char mesg[BUFSIZ]; ! char number[32]; ! char *mtype = "XlibMessage"; ! register _XExtension *ext = (_XExtension *)NULL; ! XGetErrorText(dpy, event->error_code, buffer, BUFSIZ); ! XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ); ! (void) fprintf(fp, "%s: %s\n ", mesg, buffer); ! XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d", ! mesg, BUFSIZ); ! (void) fprintf(fp, mesg, event->request_code); ! if (event->request_code < 128) { ! sprintf(number, "%d", event->request_code); ! XGetErrorDatabaseText(dpy, "XRequest", number, "", buffer, BUFSIZ); ! } else { ! for (ext = dpy->ext_procs; ! ext && (ext->codes.major_opcode != event->request_code); ! ext = ext->next) ! ; ! if (ext) ! strcpy(buffer, ext->name); ! else ! buffer[0] = '\0'; ! } ! (void) fprintf(fp, " (%s)\n ", buffer); ! if (event->request_code >= 128) { ! XGetErrorDatabaseText(dpy, mtype, "MinorCode", "Request Minor code %d", mesg, BUFSIZ); ! (void) fprintf(fp, mesg, event->minor_code); ! if (ext) { ! sprintf(mesg, "%s.%d", ext->name, event->minor_code); ! XGetErrorDatabaseText(dpy, "XRequest", mesg, "", buffer, BUFSIZ); ! (void) fprintf(fp, " (%s)", buffer); ! } ! fputs("\n ", fp); ! } ! if (event->error_code >= 128) { ! /* kludge, try to find the extension that caused it */ ! buffer[0] = '\0'; ! for (ext = dpy->ext_procs; ext; ext = ext->next) { ! if (ext->error_string) ! (*ext->error_string)(dpy, event->error_code, &ext->codes, ! buffer, BUFSIZ); ! if (buffer[0]) ! break; ! } ! if (buffer[0]) ! sprintf(buffer, "%s.%d", ext->name, ! event->error_code - ext->codes.first_error); ! else ! strcpy(buffer, "Value"); ! XGetErrorDatabaseText(dpy, mtype, buffer, "Value 0x%x", mesg, BUFSIZ); ! if (*mesg) { ! (void) fprintf(fp, mesg, event->resourceid); ! fputs("\n ", fp); ! } ! } else if ((event->error_code == BadWindow) || ! (event->error_code == BadPixmap) || ! (event->error_code == BadCursor) || ! (event->error_code == BadFont) || ! (event->error_code == BadDrawable) || ! (event->error_code == BadColor) || ! (event->error_code == BadGC) || ! (event->error_code == BadIDChoice) || ! (event->error_code == BadValue) || ! (event->error_code == BadAtom)) { ! if (event->error_code == BadValue) ! XGetErrorDatabaseText(dpy, mtype, "Value", "Value 0x%x", ! mesg, BUFSIZ); ! else if (event->error_code == BadAtom) ! XGetErrorDatabaseText(dpy, mtype, "AtomID", "AtomID 0x%x", ! mesg, BUFSIZ); ! else ! XGetErrorDatabaseText(dpy, mtype, "ResourceID", "ResourceID 0x%x", ! mesg, BUFSIZ); ! (void) fprintf(fp, mesg, event->resourceid); ! fputs("\n ", fp); ! } ! XGetErrorDatabaseText(dpy, mtype, "ErrorSerial", "Error Serial #%d", ! mesg, BUFSIZ); ! (void) fprintf(fp, mesg, event->serial); ! fputs("\n ", fp); ! XGetErrorDatabaseText(dpy, mtype, "CurrentSerial", "Current Serial #%d", ! mesg, BUFSIZ); ! (void) fprintf(fp, mesg, dpy->request); ! fputs("\n", fp); ! if (event->error_code == BadImplementation) return 0; ! return 1; } --- 415,420 ---- bad_window_found++; return 0; } ! else ! return(Default_X_Error_Handler(dpy, event)); } [0189] daemon@ATHENA.MIT.EDU (Ken Corey, CSCI Major...) Linux_Activists 12/12/91 19:35 (35 lines) Subject: Future Domain, SCSI, partition types, etc. Date: Thu, 12 Dec 1991 18:27 CDT From: "Ken Corey, CSCI Major..." To: Linux-activists@joker.cs.hut.fi X-Vms-To: IN%"Linux-activists@joker.cs.hut.fi" Has anyone had any luck installing Linux on a drive that uses a Future Domain chipset? I've got a 386/25 4MB ram, DOS 5.0, Maxtor 7120sr SCSI Hard drive, Future Domain chipset SCSI controller. I've gotten the boot and root disks to work, but when I run the fdisk, I get 5 errors. (I've got my drive partitioned into 4 32MB partitions) I read that if FDISK cannot recognize my partitions, then I an "f**ked" (from the documentation). Basically, I'm asking if anyone has gotten such a setup to work, and if so, what's the method. If not, is anyone working on a future domain compatible version? I understand that several people across the net are working on SCSI implementations...do you think that they will work with a future domain controller? I'd dearly love to use Linux, (as it's a 32-bit OS from the start, rather than a 16-bit emulating a 32-bit). If anyone has run into this problem, either reply to the net, or to my 'home' address. Many thanks. Talk to y'all later. , o <--- The too-many-hours-on-a-monitor blank stare _ | Ken Corey aka kenc@vaxb.acs.unt.edu aka kenc@sol.acs.unt.edu --[0189]-- [0190] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 12/13/91 01:08 (17 lines) Subject: uniq binary & source; perl? Date: Thu, 12 Dec 91 22:01:08 PST To: linux-activists@joker.cs.hut.fi From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu I've had uniq.Z and uniq.src.tar.Z (from the bsd-net-2 release) put onto tsx-11.mit.edu:pub/linux/{binaries,sources} for your enjoyment. Has anybody had luck in getting perl 4 working? I've tried various things, most of which cause test/base/lex.t to fail. -m80387 present/absent -O/-g -Dfloat=double no combination of the above makes a working perl. ?? John --[0190]-- [0191] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/13/91 04:40 (125 lines) Subject: New posting of INFO SHEET Date: Fri, 13 Dec 91 10:28:00 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! This is the corrected (Thanks for proofreading, tytso!) Linux information sheet. If there are no further remarks to it, I will post it to the following groups: comp.binaries.ibm.pc.d comp.os.coherent comp.os.mach comp.os.minix comp.os.misc comp.os.sysv.i386 comp.unix.programmers Thanks, and see you! Robert Blum LINUX INFORMATION SHEET 1. WHAT IS LINUX 0.11 LINUX 0.11 is a freely distributable UNIX clone. It is almost fully System V and POSIX compatible. LINUX has been written from scratch, and therefore does not contain any AT&T or MINIX code - not in the kernel, the compiler, the utilities, or the libraries. For this reason it can be made available with the complete source code via anonymous FTP. Sorrily it runs only on 386/486 AT-bus-machines.EISA will probably do too, but you need an AT-Bus controller for your harddisk. Version 0.11 is still a beta release, but it provides almost full functionality. Various users have been able to compile bigger projects like bison/flex by only changing the makefile to their needs, and these tools are fully functional. 2. LINUX features - System call compatible with System V and POSIX (well, almost..) - Full multiprogramming (multiple programs can run at once) - Memory paging with copy-on-write - Demand loading of executables - Page sharing of executables - ANSI compliant C compiler (gcc) - A complete set of compiler writing tools (bison as yacc-replacement, flex as lex replacement) - The gnu-born again shell (bash) - Micro emacs - most utilities you need for development (cat, cp, kermit, ls, make, etc.) - Over 200 library procedures (atoi, fork, malloc, read, stdio, etc.) - Currently 4 national keyboards: finnish/us/german/french - Full source code (in C) for the OS is freely distributable - Full source code of the tools can be gotten from many anonymous ftp sites (It's almost completely the GNU project) - Runs in protected mode on 386 and above - Support for extended memory up to 16M on 386 and above - RS-232 serial line support with terminal emulation, kermit, zmodem, etc. - Supports the real time clock 3. HARDWARE REQUIRED - A 386 or 486 machine that is an AT-bus-machine. EISA will probably do too. - An IDE hard disk is required to use this system. - Both 5.25" and 3.5" diskettes are supported - At least 2 megabytes of RAM is required for LINUX to be operational, but gcc will only work from 4 MB on. - Any video card will do - Up to two serial lines are supported - The real time clock is supported 4. PARTIAL LIST OF UTILITIES INCLUDED IN OR AVAILABLE FOR LINUX 0.10 - The MTOOLS package (reading/writing to DOS) - The complete GNU filetools (ls,cat,cp,mv,...) - The GNU C compiler with GNU assembler,linker,ar,... - bison - flex - rcs - pmake (BSD 4.3 Reno/BSD 4.4 make) - kermit - Micro emacs - less - mkfs - fsck - mount/umount 5. LINUX BINARIES The LINUX binaries (including all the tools) are available at three anonymous FTP sites. These are: nic.funet.fi:/pub/OS/Linux tsx-11.mit.edu:/pub/linux tupac-amaru.informatik.rwth-aachen.de:/pub/msdos/replace 6. LEGAL STATUS OF LINUX Although LINUX is supplied with the complete source code, it is copyrighted software. But it is, opposite to MINIX available for free, provided you obey to the rules specified in the LINUX copyright. 7. NEWS ABOUT LINUX Since LINUX's introduction to the public there has been a rapidly growing mailing list, "linux-activists@joker.cs.hut.fi". To subscribe to this list, mail to "linux-activists-requests@joker.cs.hut.fi". If the traffic in this lists increases further, there are plans to swap (at least partially) over to comp.os.misc, so watch out for any LINUX articles in this group. If you simply want to know whats the current state of the art, do a "finger torvalds@kruuna.helsinki.fi", and you'll get some information. 8. FUTURE PLANS The major current project is bringing LINUX to a version number greater than 1.0. It has also to undergo some (minor) revisions to be compatible to the IEEE POSIX P1003.1 and P1003.2 standards. Various people are currently working on - math support/fp emulation in the kernel - Page swapping (since paging is alreay implemented) - A virtual filesystem layer - STREAMS - POSIX job control (this is already alpha and will probably be out with Version 0.12) If you want to join the developers, join the mailing list --[0191]-- [0192] daemon@ATHENA.MIT.EDU (Drew Eckhardt) Linux_Activists 12/14/91 15:07 (533 lines) Subject: Dain bramaged boot sector and compatable clones Date: Sat, 14 Dec 1991 12:57:14 -0700 From: Drew Eckhardt To: linux-activists@joker.cs.hut.fi, torvalds@cc.helsinki.fi Cc: drew@hazelrah.cs.Colorado.EDU A few days ago, I mailed Linus about the bootsector not working on some machines. Specifically, some 386/486 boxes with AMI BIOS, not exactly rice paddy specials. The MS-DOS boot sector handles reads in a similar way, and it worked fine. The problem is some clones use the same messed up floppy disk parameter tables that the original PC used. You have to change the byte that reflects maximum sector number to something reasonable (18 works good - #sectors on a 1.44, doesn't matter if its too high) to keep from getting a sector not found error. MS-DOS does this, Linus's boot sector didn't, and was dying. I have changed the bootsector code to update this byte in the diskette parameter table. Also, I've made the following other changes : - Added error dump code. The error code in ax is printed (in hex) after any failed disk read. This contains an error code in the high byte, sectors successfully read in the low byte. In the code that reads the kernel, an error also dumps the registers that were used in the int 13h call - ie an error code of 0407 - sector not found, read 7 sectors might read 0407 AX:020F BX:1400 CX:0001 DX:0100 - Added a Loading... where one dot is printed per track read. Lets you know something is happening, and fills up some of that vast empty space in the bootsector... - Added conditional define to hard code #of sectors, and allow booting from a 360K disk in a 1.2M drive, etc. The BIOS routines return MAXIMUM number of sectors, not the actual count of the media in the drive. - Optimized. There are now two bytes free in the boot sector. Without any optimization, there were negative bytes free. The source code is currently only available in MASM format. This made debugging under a monitor program loaded in high memory under DOS quite simple.... some one (Eventually, I will. Before this is finalized though, I'd like to look at booting of any drive) can translate it back if they want it sooner... The binary included below is set up with root=boot drive, autodetect floppy. I had been testing it with HARD defined as 9, and root set as a 1.44 in drive 1, a fairly normal configuraiton, so this explains any failures.. And, if you do get an error code, PLEASE report it. -- bootsect.uue -- : section 1 of uuencode 2.8 of file bootsect.bin by R.E.M. begin 644 bootsect.bin MN,`'CMBX`)".P+D``2OV*__\\Z7J&0``D/J,R([0O/3^,\".P`:[>``FQ3>,W MR([`O_3^5[D&`/.E7R;&1002!R:)/XS()HE'`H[8CL#[,N0RTLT3,]*Y`@"[F M``*X!`+-$W,24.A)`8OLZ%P!6#+2,\#-$^O?,M*X``C-$S+M+HD.[P&X`)"." MP+0#,O_-$+D)`+L'`+WQ`;@!$\T0N``0CL#H/@#H/P&X#0Z[!P#-$+@*#LT0& M+J'\`0O`=1@)Q MZ#D`B\@N`P;<`"X[!N\!=16X`0`N*P;>`'4%+O\&X``NH]X`,\`NH]P`P>$)' M`]ESK(S`!0`0CL`SV^NA8%!3N"X.NP<`S1!;6"Z+%N``+HL.W`!!BNHNBQ;>* M`(KR,M*!X@`!M`)245-0S1-R!8/$"&'#4.@,`#+D,M+-$X/$"F'KNKD%`(OLP MZ!@`@/D%T#LT0XNG#4KKR`S+`[EK#Q 1```-"DQO861I;F<``!T"5:H"H `` end size 512 -- end -- You could write it with DEBUG like DEBUG bootsect.bin a 0300 mov ax, 0201 mov bx, 0100 mov cx, 0001 mov dx, 0000 int 13h int 20h ^C g=0300 q And the source -- bootsect.asm -- ; Created by 2masm perl script by Drew Eckhardt ; bootsect.asm modified by Drew Eckhardt - ; support added for TRUELY compatable ; BIOS's as well as error dump code. .286 ; ; SYS_SIZE is the number of clicks (16 bytes) to be loaded. ; 3000h is 30000h bytes equ 196kB, more than enough for current ; versions of linux ; SYSSIZE equ 3000h ; ; bootsect.s (C) 1991 Linus Torvalds ; ; bootsect.s is loaded at 7c00h by the bios-startup routines, and moves ; iself out of the way to address 90000h, and jumps there. ; ; It then loads 'setup' directly after itself (90200h), and the system ; at 10000h, using BIOS interrupts. ; ; NOTE; currently system is at most 8*65536 bytes long. This should be no ; problem, even in the future. I want to keep it simple. This 512 kB ; kernel size should be enough, especially as this doesn't contain the ; buffer cache as in minix ; ; The loader has been made as simple as possible, and continuos ; read errors will result in a unbreakable loop. Reboot by hand. It ; loads pretty fast by getting whole sectors at a time whenever possible. _TEXT segment para public 'CODE' assume cs:_TEXT SETUPLEN equ 4 ; nr of setup-sectors BOOTSEG equ 07c0h ; original address of boot-sector INITSEG equ 9000h ; we move boot here - out of the way SETUPSEG equ 9020h ; setup starts here SYSSEG equ 1000h ; system loaded at 10000h (65536). ENDSEG equ SYSSEG + SYSSIZE ; where to stop loading ; ROOT_DEV: 000h - same type of floppy as boot. ; 301h - first partition on first drive etc ROOTDEV equ 21dh start: mov ax,offset BOOTSEG mov ds,ax mov ax,offset INITSEG mov es,ax mov cx,256 sub si,si sub di,di cld rep movsw db 0eah ; jmp INITSEG:go dw offset go dw INITSEG go: cli mov ax, cs mov ss, ax mov sp, 0ff00h - 12 ; arbitrary num - 512 - disk param size xor ax, ax ; get diskette parameters from int 1eh mov es, ax ; vector (or 78h) push es ; save int table segment mov bx, 78h lds si, es:[bx] ; ds:si points to them mov ax,cs ; mov es,ax ; copy disk parameters mov di, 0ff00h - 12 ; es:di points to dsk_tab push di ; save dsk_tab offset mov cx, 6h ; 12 bytes rep movsw pop di ; restore dsk_tab mov byte ptr es:[di + 4], 18; set sectors pop es ; reset 1eh vector mov word ptr es:[bx], di ; offset mov ax, cs mov word ptr es:[bx+2], ax ; seg mov ds,ax ; load seg regs mov es,ax sti xor ah, ah ; reset FDC with no parameters. xor dl, dl int 13h ; load the setup-sectors directly after the bootblock. ; Note that 'es' is already set up. load_setup: xor dx,dx ; drive 0, head 0 mov cx,0002h ; sector 2, track 0 mov bx,0200h ; address equ 512, in INITSEG mov ax,0200h+SETUPLEN ; service 2, nr of sectors int 13h ; read it jnc ok_load_setup ; ok - continue push ax ; dump error code call print_nl mov bp, sp call print_hex pop ax xor dl, dl xor ax, ax ; reset the diskette int 13h jmp load_setup ok_load_setup: ; Get disk drive parameters, specifically nr of sectors/track IFDEF HARD mov cx, HARD ELSE xor dl,dl mov ax,0800h ; AH equ 8 is get drive parameters int 13h xor ch,ch ENDIF mov cs:sectors,cx mov ax,offset INITSEG mov es,ax ; Print some inane message mov ah,03h ; read cursor pos xor bh,bh int 10h mov cx,9 mov bx,0007h ; page 0, attribute 7 (normal) mov bp,offset msg1 mov ax,1301h ; write string, move cursor int 10h ; ok, we've written the message, now ; we want to load the system (at 10000h) mov ax,offset SYSSEG mov es,ax ; segment of 010000h call read_it call kill_motor mov ax, 0e0dh mov bx, 7 int 10h mov ax, 0e0ah int 10h ; After that we check which root-device to use. If the device is ; defined (; equ 0), nothing is done and the given device is used. ; Otherwise, either /dev/PS0 (2,28) or /dev/at0 (2,8), depending ; on the number of sectors that the BIOS reports currently. mov ax,cs:root_dev or ax, ax ; cmp ax, 0 jne root_defined mov bx,cs:sectors mov ax,0208h ; /dev/ps0 - 1.2Mb cmp bx,15 je root_defined mov ax,021ch ; /dev/PS0 - 1.44Mb cmp bx,18 je root_defined undef_root: jmp undef_root root_defined: mov cs:root_dev,ax ; after that (everyting loaded), we jump to ; the setup-routine loaded directly after ; the bootblock: db 0eah ; jmp SETUPSEG:0 dw 0 dw SETUPSEG ; This routine loads the system at address 10000h, making sure ; no 64kB boundaries are crossed. We try to load it as fast as ; possible, loading whole tracks whenever we can. ; ; in: es - starting address segment (normally 1000h) ; sread dw 1+SETUPLEN ; sectors read of current track head dw 0 ; current head track dw 0 ; current track read_it: mov ax,es test ax,0fffh die: jne die ; es must be at 64kB boundary xor bx,bx ; bx is starting address within segment rp_read: mov ax,es cmp ax,ENDSEG ; have we loaded all yet? jb ok1_read ret ok1_read: mov ax,cs:sectors ; this is the number of sectors we will sub ax,sread ; attempt to read ; mov ax, 1 mov cx,ax ; shl cx,9 ; * 512 bytes add cx,bx ; if overflow, then next segment jnc ok2_read je ok2_read xor ax,ax sub ax,bx shr ax,9 ok2_read: call read_track ; is called with num sectors wanted in al mov cx,ax add ax,sread ; add actual number read to ax cmp ax,cs:sectors jne ok3_read mov ax,1 sub ax,head jne ok4_read inc track ok4_read: mov head,ax xor ax,ax ok3_read: mov sread,ax shl cx,9 add bx,cx jnc rp_read mov ax,es add ax,1000h mov es,ax xor bx,bx jmp rp_read read_track: pusha push ax ; print loading... push bx mov ax, (0e00h + '.') mov bx, 7 int 10h pop bx pop ax mov dx,track mov cx,sread inc cx mov ch,dl mov dx,head mov dh,dl xor dl,dl and dx,0100h mov ah,2 push dx ; save for possible register dump push cx push bx push ax int 13h jc bad_rt add sp, 8 popa ret bad_rt: push ax ; save AX return - ; AH = errore code ; AL = successfully read. call print_all xor ah, ah ; reset FDC xor dl, dl int 13h add sp, 10 popa jmp read_track ; ; print_all is for debugging purposes. ; It will print out all of the registers. The assumtion is that this ; is called from the track read routine, with a stack frame like ; dx ; cx ; bx ; ax ; error ; ret <- sp print_all: mov cx, 5 ; error code + mov bp, sp print_loop: call print_nl cmp cl, 5 jae no_reg mov al, cl mov ax, 0e05h + 'A' - 1 sub al, cl int 10h mov ax, 0e00h + 'X' int 10h mov ax, 0e00h + ':' int 10h print_nl: mov ax, 0e0dh mov bx, 7 int 10h mov ax, 0e0ah int 10h ret no_reg: add bp, 2 call print_hex pop cx loop print_loop ret ; ; print_hex is for debugging purposes. It will print out the hex ; number pointed to by ss:[bp]. ; print_hex: mov cx, 4 ; 4 hex digits mov dx, word ptr [bp] ; load word into dx print_digit: rol dx, 4 ; will rotate, 4 bits will be highest mov ah, 0eh ; nibble, lowest nibble, etc. mov al, dl and al, 0fh add al, '0' cmp al, '9' jbe good_digit add al, 'A' - '0' - 0ah good_digit: mov ah, 0eh int 10h loop print_digit ret ; * This procedure turns off the floppy drive motor, so ; * that we enter the kernel in a known state, and ; * don't have to worry about it later. ; kill_motor: push dx mov dx,3f2h xor al,al out dx, al pop dx ret sectors dw 0 msg1 db 13,10 db "Loading" org 508 root_dev dw ROOTDEV boot_flag: dw 0AA55h _TEXT ends end -- ends -- Build with MASM, link, then exe2bin HARD may be defined with MASM bootsect.asm /DHARD=9; To get it to use the hardcoded sector count. TASM should also work, a86 will work if you change to its conditional define syntax. There are a few glitches there from my 2masm perl script - but it will assemble without warnings. Also note that the code will require more squeezing if more changes are made : there are 2 bytes free. --[0192]-- [0193] daemon@ATHENA.MIT.EDU (Drew Eckhardt) Linux_Activists 12/14/91 15:20 (15 lines) Subject: DEBUG stuff from my post Date: Sat, 14 Dec 1991 13:13:39 -0700 From: Drew Eckhardt To: linux-activists@joker.cs.hut.fi In hind sight, the mov ax, 0201 should be a mov ax, 0301 .... Write, not read. 7:30 am finals sort of have a way of doing things to a guy's mind.... --[0193]-- [0194] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/15/91 13:56 (7 lines) Subject: Is anyone working on pseudo ttys Date: Sun, 15 Dec 91 10:49:00 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Please let me know if someone is working on ptys. pmacdona@sol.uvic.ca Peter.MacDonald@bcsystems.gov.bc.ca --[0194]-- [0195] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/16/91 12:25 (56 lines) Subject: Complete library source available Date: Mon, 16 Dec 1991 19:07:47 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi Well, I just put out the full source to my library for ftp. Parts of it have been available before, but the package "library.tar.Z" should include everything. The library is meant to be installed in /usr/src/lib, but use your own directory structure if you find this impractical. It is further subdivided into more or less (mostly less) logical subdirectories: partly similar to minix, partly depending on where I got the source, and partly just on how it happened to be written :-) There are 4 major sources of library functions and they all have slightly different copyrights, but all should be freely distributable within the linux copyright rules: - Earl Chews estdio (estdio) - The GNU library (malloc, pwd, grp and misc) - me (dirent, unistd, misc) - some PD minix libs (at least termcap) I haven't really ported as much of the GNU libc.a as I would want, as it's not very interesting. Things that should still be done: - time functions. I haven't got the slightest idea about how they work, so the result is accordingly. GNU seems the best bet to find correct functions. - unistd will be slightly changed with the advent of job control. I am assuming that tytso will send diffs, and that some programs will have to be recompiled to correctly work with the new signals (among them gcc). - locale etc. Again gnu seems the best bet. Happily nobody uses locale anyway, so this isn't that much of a problem :-) Additionally I have also sent out a new include.tar.Z - it's mostly bug-corrections and a few new files that the GNU library functions want. Recompiling the library is easy: go to /usr/src/lib, and then do a make in all the subdirectories. The result should be a Libc.a file in /usr/src/lib. Run ranlib on it (ie "ranlib Libc.a"), and you have a new library. Just move it to the library directory (usually /usr/local/lib, but it depends on how you have installed gcc). It might be a good idea to save the old libc.a, in case something has gone wrong. Note that you probably won't really need to compile your own library: this one is a bit better than the original, but the changes shouldn't show up in normal circumstances. Recompilation of the library is usually only needed if you change the kernel heavily (new system calls etc) or if you find better routines for something. This release is more for the "completeness" of source availability for linux. Linus --[0195]-- [0196] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/16/91 23:02 (14 lines) Subject: man pages and ptys Date: Mon, 16 Dec 91 19:19:01 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi I have put together some man pages for some the GNU utilities together with a PD version of man. Ted was kind enough to put it on tsx-11.mit.edu for any interested party. Also, Matthias Lautner has provided me with the source to his minix ptys and select patch to Minix. It still has a bug with losing messages from tty to FS. But I am looking at how hard it is to port his design to Linux. --[0196]-- [0197] daemon@ATHENA.MIT.EDU (Pietro Caselli) Linux_Activists 12/17/91 00:12 (19 lines) Subject: Linux 0.11 is hard to die ! To: linux-activists@joker.cs.hut.fi Date: 17 Dec 91 00:14:28 MET (Tue) From: zaphod@petruz.sublink.org (Pietro Caselli) Yeaaaah ... just like a ninja Linux 0.11 refuses to die. When I logout from bash I login into bash again, and again, and ... quosque tandem Linuxe ! I like tenacity, but ... there is a limit !!! :-) Hmmm ... I passed from gremlins to ninja, with Linux 0.12 I hope not to deal with Godzilla :-) Happy hacking to everyone ... and Merry Christmas. Pietro Caselli | internet: zaphod@petruz.sublink.org | IF YOU MEET THE BUDDHA : pietro@deis33.cineca.it | ON THE ROAD,KILL HIM. Mail : V. Pietro Mattiolo, 4 | 40139 Bologna ITALY | --[0197]-- [0198] daemon@ATHENA.MIT.EDU ("Mark W. Eichin") Linux_Activists 12/17/91 05:23 (26 lines) Subject: getting started... Date: Tue, 17 Dec 91 05:15:12 -0500 From: eichin@ATHENA.MIT.EDU ("Mark W. Eichin") To: linux-activists@joker.cs.hut.fi I'm going to buy myself a 386 system some time after 1992 Jan 1 mostly for Linux hacking (if I can avoid DOS I will -- but I need a machine big enough to do GCC hacking on :-) I'll probably work on getting a socket library working, and probably stuff NOS or some of the other Amateur TCP/IP code behind it. I'm looking to spend between US$2500 and US$3000 on a system. Since this is a good deal of money, I'd like to hear any stories you've got (both good and bad) about buying such systems, and about getting Linux up on them. (Note that I'm soliciting *information* here, not actual systems, though of course you're free to send me email about anything you'd like, within Acceptable Use constraints of the networks you traverse...) Since I'm in the US, stories from over here are probably more useful -- but if you're outside the US and bought something from one of the big mail-order places, I'd appreciate any comments. Please be careful to email directly to me rather than to the list at large; I'll summarize what info I get (so if you've got a story you'd rather not have repeated, please note it in the message.) _Mark_ MIT Student Information Processing Board Cygnus Support --[0198]-- [0199] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 12/17/91 10:02 (27 lines) Subject: Linux 0.11 is hard to die ! Date: Tue, 17 Dec 1991 16:46:33 +0200 From: Ari Lemmke To: linux-activists@joker.cs.hut.fi In-Reply-To: Pietro Caselli's message of 17 Dec 91 00:14:28 MET (Tue) <9112170014.AA00046@petruz.sublink.ORG> >Yeaaaah ... just like a ninja Linux 0.11 refuses to die. When I logout >from bash I login into bash again, and again, and ... quosque tandem Linuxe ! That's because kernel init has while loop like (hey, that's pseudo-code, not the real one!): while (1) { exec("/bin/sh"); sync(); } So actually that was, what I did for 0.10 '/etc/init', because atleast my shell is (maybe with 0.11 was) constantly crashing. So it is safe to power off after first logout. arl --[0199]-- [0200] daemon@ATHENA.MIT.EDU (Michael K. Johnson) Linux_Activists 12/17/91 14:34 (20 lines) Subject: compress/out of memory Date: Tue, 17 Dec 91 13:13:35 CST From: johnsonm@stolaf.edu (Michael K. Johnson) To: Linux-activists@joker.cs.hut.fi This may have already been discussed, but I can't find it: uncompress gives me "out of memory" "segmentation violation" errors on some files, for instance uniq.Z as found on tsx-11. I am running .11 on a 386sx-16. Anyone have any ideas? I had no problems with compress under .10... Also, just a note to whoever wants to know -- I made a new filesystem with the mkfs distributed with .11, and used the -c flag, which was supposeed to eliminate all my hd i/o errors when I was through. Now, it may well be my hard drive, but I don't know. If anyone working on filesystem stuff wants any details, I will be glad to provide them. michaelkjohnson johnsonm@stolaf.edu I don't do .sig's --[0200]-- [0201] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 12/17/91 14:47 (21 lines) Subject: Re: compress/out of memory Date: Tue, 17 Dec 91 14:30:10 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: johnsonm@stolaf.edu Cc: Linux-activists@joker.cs.hut.fi In-Reply-To: Michael K. Johnson's message of Tue, 17 Dec 91 13:13:35 CST, Reply-To: tytso@athena.mit.edu Date: Tue, 17 Dec 91 13:13:35 CST From: johnsonm@stolaf.edu (Michael K. Johnson) This may have already been discussed, but I can't find it: uncompress gives me "out of memory" "segmentation violation" errors on some files, for instance uniq.Z as found on tsx-11. One of the things that will cause that is a corrupted .Z file. Are you sure you FTP'ed uniq.Z with the binary mode set? It is possible that uniq.Z on tsx-11 is corrupted, but I would rather doubt it, since I've been able to uncompress it using a unix zcat. - Ted --[0201]-- [0202] daemon@ATHENA.MIT.EDU (Michael K. Johnson) Linux_Activists 12/17/91 16:22 (20 lines) Subject: kermit Date: Tue, 17 Dec 91 15:13:15 CST From: johnsonm@stolaf.edu (Michael K. Johnson) To: Linux-activists@joker.cs.hut.fi Regarding my mailing a few hours ago, apparently my "uniq.Z" was corrupted. However, this is worth noting, because it is not corrupted on tsx-11, where I got it, and it is not corrupted on the unix system I ftp'd to either. I transfered it to my system using kermit, and it was apparently then that it was corrupted. I used kermit -i -s uniq.Z to send the file, and thought that image or ascii is determined by the sender. I *was* using the new kermit. Is this a misunderstanding, a bug, or a feature? thanks much! michaelkjohnson johnsonm@stolaf.edu I don't do .sig's --[0202]-- [0203] daemon@ATHENA.MIT.EDU (Ken Raeburn) Linux_Activists 12/17/91 17:04 (26 lines) Subject: C++? Date: Tue, 17 Dec 91 16:50:49 -0500 From: raeburn@ATHENA.MIT.EDU (Ken Raeburn) To: linux-activists@joker.cs.hut.fi Has anyone tried bringing up g++ on linux? On a related note, are any other gcc2 developers or testers reading this list, or should I start hacking on it when I get a machine (probably in January or February)? Ken P.S. If I understand correctly, c386 works on the small-memory machines but doesn't handle ANSI C. Has anyone tried using Ron Guilmette's "unprotoize" program? It includes a set of patches to gcc 1.something (which have also been incorporated in gcc2) and a program that can rewrite source files to add or remove prototypes and change function definition forms. A converted version of 0.11 might let the c386 users get enough work done to get the VM system up to handling gcc. It'd just require someone who can use gcc on their machine to do the conversion. (I *don't* advocate making converted versions of every release, or even necessarily more than one. If being able to use c386 is the goal, rather than getting linux up so the VM system can be worked on, then c386 should just be fixed.) I'd volunteer to do it myself, if I had a machine to work on, and if I knew someone would do the VM work...unfortunately, neither is the case right now. --[0203]-- [0204] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/17/91 18:00 (81 lines) Subject: one bug, possible other problems Date: Wed, 18 Dec 1991 00:48:24 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi > This may have already been discussed, but I can't find it: > uncompress gives me "out of memory" "segmentation violation" > errors on some files, for instance uniq.Z as found on tsx-11. > I am running .11 on a 386sx-16. Anyone have any ideas? I had > no problems with compress under .10... As already has been noted, this can be (and in this case seems to have been) due to corrupted Z-files. However, if anybody else sees the "out of memory" error, even though there should be enough memory there is always another possibility: if your "/etc/passwd" (or possibly "/etc/group") files are not in the right format, it triggers a bug in the old library which will use up all your memory. Great fun. Check that all entries in your "/etc/passwd" have the right nr of colons (even if there is no shell name, the last colon is supposed to exist). This same bug shows up in all programs that use the "getpwent()" library call with the old lib: ls -l, chown et.al. Easy to correct the /etc/passwd file, and then this should go away. Then on to a /real/ bug, which needs kernel recompilation, but isn't very noticeable: the execve system call incorrectly clears all signal handler addresses. It should leave the "SIG_IGN" addresses as is: nohup etc programs depend on that. The fix is easy: linux/fs/exec.c: do_execve(), right after the comment "point of no return" there is the for-loop that clears the sa.sa_handler entries. Change it from (something like) for (i=0 ; i<32 ; i++) current->sa[i].sa_handler = NULL; to for (i=0 ; i<32 ; i++) if (current->sa[i].sa_handler != SIG_IGN) current->sa[i].sa_handler = NULL; Additionally you need to include signal.h at the top of the file. (Note that this "patch" may not be exact - this is from memory). > [ kermit send/receive binary ] I use kermit to receive files, and even for terminal emulation, now that linux correctly handles the ISIG flag. I always "set filetype binary" in both ends, but don't know if it's really necessary (but it's easy to make a ".kermrc" file in your home-directory to do these kinds of setups automatically). I'd suggest you do likewise: then I know it works. > Has anyone tried bringing up g++ on linux? [ gcc2 and c386 ] I've been thinking about this (hi tytso :), and I will port gcc-2.0 (or 1.99) as soon as it is available. That should contain g++. Probably in january-february says tytso. During the holiday, I will implement VM (real paging to disk): I've been going over the algorithms in my head, and I think it can be done relatively easily, so hopefully we can scrap the c386 compiler (sorry, blum). The paging algorithm will at least in the beginning be extremely simple: no LRU or similar, just a simple "get next page in the VM-space". Note that VM isn't (even with a good algorithm) a "holy grail" - I don't want to be on the same machine when someone uses gcc in 2M real mem. Slooooowww. 4M will definitely be recommended even with VM, and 1M machines won't work with linux even with the VM (you /do/ need some real memory too :-). I have this small question when it comes to the swap-space setup - two different possibilities: 1 - a swap-device of it's own (ie own partition) 2 - file-system swap-area. There are a number of pros and cons: (1) is faster, easier to implement, and will need no changes when the filesystem eventually is changed to accept >64M etc. (2) has the good side that it means that it would be easy to change the size of the swap-area, but if something bad happens, it could probably trash the filesystem easily. I'll probably implement only (1) for now, but I'd like to hear what you say (and ignore it :-). Linus --[0204]-- (nref = [0207]) [0205] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/17/91 18:16 (18 lines) Subject: compress and VM Date: Tue, 17 Dec 91 15:08:24 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi I have seen a small problem with compress. uncompress *.Z fails to uncompress some of the files specified. Failure prints some message like EINVAL or something (-; sorry, its been weeks) But using uncompress afterwards on the individual file works. I wouldn't mention it, but for the compress problems posted. Certainly the easiest swap to disk to implement is the best, but using fdisk can be traumatic. Perhaps the way MS Windows (shudder) does it would be acceptable. ie. use the file system but set the swap size at the boot up time (a number in the kernel ala root device?) and allocate a single large file. Thus changing the swap size requires only a reboot - after modifying the kernel. --[0205]-- [0206] daemon@ATHENA.MIT.EDU (Jim Winstead Jr.) Linux_Activists 12/17/91 18:52 (31 lines) Subject: Re: compress, and other stuff Date: Tue, 17 Dec 91 15:40:55 PST From: "Jim Winstead Jr." To: linux-activists@joker.cs.hut.fi Peter MacDonald says: > I have seen a small problem with compress. uncompress *.Z fails to > uncompress some of the files specified. Failure prints some > message like EINVAL or something (-; sorry, its been weeks) I've seen this problem, too, but it's a little more consistent than one might normally think: compress fails (EINVAL) on every other if passed a wildcarded argument. That is "uncompress *Z" will give a EINVAL error on every other file it tries. > But using uncompress afterwards on the individual file works. It also works to repeat the command, answering yes to the questions it asks, as it will on try and decompress the files that have been decompressed. It still misses every other file of the repeated command, though. Perhaps it's a bug in the port of compress? Also, I've ported unzip, zoo, (un)yabba and a few other things to Linux. Any interest in putting these on tsx-11? They were all pretty painless, but it might save some people the trouble of compiling them. --- Jim Winstead Jr. (CSci '95) 3 "We are only immortal Harvey Mudd College 3 for a limited time.. jwinstea@jarthur.Claremont.EDU 3 when we are young." Disclaimer: Mine, not theirs! 3 -Rush, Dreamline --[0206]-- [0207] daemon@ATHENA.MIT.EDU ("Mark W. Eichin") Linux_Activists 12/17/91 19:02 (29 lines) Subject: Re: one bug, possible other problems (Swapping) Date: Tue, 17 Dec 91 18:52:53 -0500 From: eichin@ATHENA.MIT.EDU ("Mark W. Eichin") To: Linus Benedict Torvalds Cc: Linux-activists@joker.cs.hut.fi In-Reply-To: [204] >> I have this small question when it comes to the swap-space setup - two >> different possibilities: >> 1 - a swap-device of it's own (ie own partition) >> 2 - file-system swap-area. I'd argue for both, but do swap partition first because it'll be done sooner that way. Under SunOS, you get your swap partition which is big enough for normal work (and I think is faster but I could be wrong) and then when you need more space for a special project, you just create a big file and swap from that until next reboot. One of the biggest losses with the NeXT machine (at least up to OS 2.1) is that it uses in-file-system swapping. When disk space is tight, the OS heads for Mars... this is exacerbated by the fact that NeXT OS can grab more space dynamically, but never gives it back, and *can't control how much it will try to grab*. A good example of how a well intentioned design can turn around and bite you. _Mark_ MIT Student Information Processing Board (Another interesting feature of SunOS is the "tmpfs" temporary file system... it's like a ram disk, but it's in VM so it can get swapped out. It makes a rather fast /tmp since it doesn't have any of the guaranteed write-to-disk semantics of UFS, and in fact any actual disk writes get done "later". The problem is when you've got something both memory *and* disk intensive using it.) --[0207]-- (pref = [0204]) [0208] daemon@ATHENA.MIT.EDU (Tony Travis) Linux_Activists 12/18/91 06:23 (34 lines) Subject: Re: kermit Date: Wed, 18 Dec 1991 10:35:00 +0000 From: Tony Travis To: Linux-activists@joker.cs.hut.fi Michael, In my experience, both ends need to be set to 'i'mage (binary) mode with the single exception of MSDOS kermit which treats all files the same. Tony ------------------------------------------------------------------------------- Dr. A.J.Travis | Rowett Research Institute, | Greenburn Road, Bucksburn, Aberdeen, | AB2 9SB. UK. tel 0224-712751 > > Regarding my mailing a few hours ago, apparently my "uniq.Z" was corrupted. > However, this is worth noting, because it is not corrupted on tsx-11, where > I got it, and it is not corrupted on the unix system I ftp'd to either. I > transfered it to my system using kermit, and it was apparently then that it > was corrupted. I used > kermit -i -s uniq.Z > to send the file, and thought that image or ascii is determined by the > sender. I *was* using the new kermit. Is this a misunderstanding, a bug, > or a feature? > > thanks much! > > michaelkjohnson > johnsonm@stolaf.edu > I don't do .sig's > --[0208]-- [0209] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 12/18/91 18:43 (13 lines) Subject: GNU find 2.1 on tsx-11 Date: Wed, 18 Dec 91 15:25:23 PST To: linux-activists@joker.cs.hut.fi From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu You'll find GNU find 2.1 and associated tools, a README file, and diffs from the GNU distribution in tsx-11.mit.edu:/pub/linux/binaries/find-2.1/ [yes, I know that gnu find 1.2 is also there, but I figured why not use the latest & greatest] John --[0209]-- [0210] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/19/91 01:39 (253 lines) Subject: A FAQ is coming... Date: Thu, 19 Dec 91 07:29:21 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! Following is a FAQ-compilation (most credits to Linus) for Linux. Mail me, if you like it, and mail me, if you dislike it or have any ideas on changing this. Thanks in advance, Robert Blum QUESTION: What is linux? ANSWER: Linux is a small unix for 386-AT computers, that has the added advantage of being free. It is still in beta-testing, but is slowly getting useful even for somewhat real developement. QUESTION: Does it run on my computer? ANSWER: Linux has been written on a clone-386, with IDE drives and a VGA screen. It should work on most similar setups. The harddisk should be AT-standard (ie not SCSI, ESDI), and the system must be ISA. Otherwise the requirements seem relatively small: a 386 (SX, DX or any 486). The current version (0.10) needs a colour screen adapter, but this is not the case with the next version. It needs at least 2M to run, and 4M is definitely a plus. It can happily use up to 16M (and more if you change some things). QUESTION: Will linux run on a PC or 286-AT? If not, why? ANSWER: Linux uses the 386 chip protected mode functions extensively, and is a true 32-bit operating system. Thus x86 chips, x<3, will simply not run it. QUESTION: Does linux do paging? Can I have virtual memory on my small machine? ANSWER: Linux does use the 386 paging unit, but currently only for memory management. No use of disks as expansion RAM. This is one of the things that will be implemented sometime in the (far?) future. Linux also uses the paging unit to share pages between several processes after a fork: thus it needs less memory. However, almost all the user programs available for linux are GNU software, which want gobs and gobs of memory. This is the reason at least 4M is recommended: GNU cc (gcc) simply won't run in less. QUESTION: Can I have tasks spanning the full 4GB of addressable 386 memory? No more 64kB limits like in coherent or standard minix? ANSWER: Linux does limit the task-size, but at a much more reasonable 64MB (MEGA-byte, not kilos), so bigger programs are no problem. QUESTION: Does the bigger program sizes mean I can run X? ANSWER: X is not ported to linux, and though I hope it will be some day, I cannot guarantee it. It's big, and wants a lot from the system. QUESTION: Where can I get linux? Is there a mailserver? ANSWER: Linux can be gotten by anonymous ftp from nic.funet.fi (128.214.6.100): directory /pub/OS/Linux Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31): directory /pub/msdos/replace tsx-11.mit.edu (18.172.1.2): directory /pub/linux ftp.eecs.umich.edu (141.212.99.7): directory linux You might want to check out which of these is the most up-to-date. If you don't have ftp-capability, you are in trouble. You might try mailing "mailserver@nic.funet.fi" with "help" in the body of the mail. QUESTION: Is there a newsgroup or mailing-list about linux? Where can I get my questions answered? How about bug-reports? ANSWER: There is a mailing list set up at the address 'Linux-activists@niksula.hut.fi'. To join, mail a request to 'Linux-activists-request@niksula.hut.fi'. DO NOT mail "I want to [un]subscribe" to the mailing-list, use the request-address. Questions and bug-reports can be sent either to the mailing-list or to "torvalds@kruuna.helsinki.fi", depending on which you find more appropriate. QUESTION: I got the minix-demo, but it won't boot. Linux boots from floppy. What's wrong? ANSWER: You probably wrote the minix demo to a 1.44M disk, which (for some unfathomable reason) doesn't work. The minix demo wants a 720kB or 1.2M disk. QUESTION: The minix-demo boots all right, but doesn't seem to recognize my second harddisk. What's up? ANSWER: The minix-demo does support a second harddisk, but there are no special files made for it, and the minix demo doesn't include the "mknod" command. Mount the linux root-floppy, and use the devices on that. QUESTION: How can I be sure I won't be writing over anything important? I have to use DOS in on my machine, and I don't want to lose any files. ANSWER: Back up everything. Just in case. Then, write some easily recognizable pattern to the partition you have reserved for linux, using some DOS tool. You can then use "cat /dev/hdX" under minix to examine which of the partitions you used. QUESTION: Minix mkfs doesn't accept the size I give the device, although I double-checked with fdisk, and it's correct. ANSWER: Be sure you give the size in BLOCKS, ie 1024 bytes, not sectors. Also, make doubly certain that you have the correct partition. QUESTION: I used the minix mkfs to make a filesystem on /dev/hd3 after having checked that this was indeed the partition I had reserved. Minix mounts the new partition ok, but linux doesn't. What gives? ANSWER: In some cases partitions are numbered differently under minix and linux. This seems to correlate to the FDISK version you have used. /dev/hd3 under minix may be /dev/hd2 under linux etc. There are a few rules about this: /dev/hd0 and /dev/hd5 are always the same under linux and minix. DO NOT USE THEM, they are the whole raw disk, not partitions. Also if a partition is on drive 1 under minix (ie /dev/hd1-4), it is drive 1 under linux as well. QUESTION: I mounted the linux filesystem, and copied the files from the root-disk to the harddisk. Now I cannot find them any more, and somethimes linux dies with a "panic: trying to free unused inode". ANSWER: You have probably forgot to sync before rebooting. Linux, like all unices, use a "buffer cache" to speed up reads and writes to disk. On a machine that has enough memory, this buffer-cache is 1.5MB, and if you forget to sync before exiting, it may not be fully written out to disk. Re-mkfs and re-install (or try to use the preliminary fsck, but remeber that although fsck tries to correct the faults it finds, it may fail.) QUESTION: the mtools package on the root-disk won't work. I get an ENOENT error message for all devices. ANSWER: mtools needs to be told which device to look for. Use 'ln' or 'mknod' to create a sepcial file called "/dev/dosX", where X is A, B or C. This file should point to the device you want to read. QUESTION: Turbo (Microsoft) Assembler won't compile the Linux boot code. In fact, some of the opcodes in these files look completely unfamiliar. Why? ANSWER: The Linux boot codes are written in Bruce Evans' minix assembler, which has the same opcodes as the original minix assembler. There are a few differences between these and normal DOS assemblers: - No segments - everything is in the same segment (at least in the bootsectors and setup, as they don't use the .data segments) - mov[b|w|l] are shorter versions of mov ax,[byte|word|long] ptr [XXX]. This is how unix assemblers normally give the size (byte, word or long). Gas has similar constructs. - There is no "jmp short", the opcodes are "j" for a short jump and "jmp" for a long one. - "jmpi" is a jump with a segment:offset pair. I don't know how this is written in DOS assembly. QUESTION: While running du I get "Kernel panic: free_inode: bit already cleared". Also, du produces a ENOENT error for all the files in certain of my directories. What's going on? ANSWER: These are both consistent with a bad file-system. That's relatively easy to produce by not syncing before rebooting, as linux usually has 1.5MB of buffer space held in memory (unless you have <=4M RAM, in which case the buffers are only about 0.5MB). Also linux doesn't do anything special about the bit-map blocks, and as they are used often, those are the thing most likely to be in memory. If you reboot, and they haven't been written to disk ... I'm afraid that as long as there is no fsck for linux there is no way to correct the matter (unless you have minix and can run minix fsck), and the only thing to do is to reinstall the filesystem from scratch (ie do a mkfs from the minix demodisk and reboot from the original linux-floppy). A sync is done only every 30 seconds normally (standard unix practice), so do one by hand (some people think you should do 3 syncs after each other, but that's superstition), or by logging out from the startup-shell, which automatically syncs the system. Unmounting a filesystem also syncs it (but of course you can never unmount root). Another (sad) possibility is that you have bad blocks on your disk. Not very probable, as they would have to be in the inode-tables, just a couple of blocks in size. Again there aren't programs available to read a disk for bad sectors and put them in some kind of "bad-sector-file". On IDE drives this is no problem (bad sectors are automatically mapped away). QUESTION: What is the "em" binary? ANSWER: Em is micro-EMacs (probably version 3.10). QUESTION: I seem to be unable to compile anythong with gcc. Why? ANSWER: If you have only 2 MB RAM, gcc will die silently without compiling anything. You must have at least 4 MB to do compilations QUESTION: I'm using a program that uses signal handlers which are installed using sigaction() with the SA_NOMASK, and they get a general protection error right after the signal handler tries to return. What's going wrong? ANSWER: You are using a libc.a that has an out-of-date signal.o and sig_restore.o file, and they don't know how to deal with SA_NOMASK. (The one in gccbin.tar.Z is out-of-date.) You can obtain the newer signal.c from the unistd.tar.Z file, but don't use the associated sig_restore.c from there; the FTP sites should have a separate sig_restore.c which is up to date. While you're at it, you should also get an updated crt0.c file as well, and install your new crt0.o and libc.a in /usr/lib. (This answer will likely change in the near future, since there are plans to change the format of the signal trampoline code yet again.... but for now, this should be an accurate description of how things stand now.) QUESTION: gcc complains about not finding crt0.o and the system include files What am i doing wrong ? ANSWER: The include files normal place is in /usr/include. libc.a and *.a should be in /usr/lib --[0210]-- [0211] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/19/91 01:42 (143 lines) Subject: And another version of the INFO sheet Date: Thu, 19 Dec 91 07:34:10 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! Here is the re-edited version of the Linux info sheet. Thank you for all your replies, especially to the guy who sent me the diff. (Sorry, forgot your name) The list of groups it will be posted to has changed to: comp.binaries.ibm.pc.d comp.os.coherent comp.os.mach comp.os.minix comp.os.misc comp.unix.sysv386 comp.unix.programmers gnu.misc.discuss If you haven't any further additions or corrections, I'll send out the INFO sheet thursday, the 26th of december. Have a merry Xmas! Robert Blum LINUX INFORMATION SHEET (last updated 19 Dec 1991) 1. WHAT IS LINUX 0.11 LINUX 0.11 is a freely distributable UNIX clone. It implements a subset of System V and POSIX functionality. LINUX has been written from scratch, and therefore does not contain any AT&T or MINIX code--not in the kernel, the compiler, the utilities, or the libraries. For this reason it can be made available with the complete source code via anonymous FTP. LINUX runs only on 386/486 AT-bus machines; porting to non-Intel architectures is likely to be difficult, as the kernel makes extensive use of 386 memory management and task primitives. Version 0.11 is still a beta release, but it already provides much of the functionality of a System V.3 kernel. For example, various users have been able to port programs such as bison/flex without having to modify code at all. Another indication of its maturity is that it is now possible to do LINUX kernel development using LINUX itself and freely-available programming tools. 2. LINUX features - System call compatible with a subset of System V and POSIX - Full multiprogramming (multiple programs can run at once) - Memory paging with copy-on-write - Demand loading of executables - Page sharing of executables - ANSI compliant C compiler (gcc) - A complete set of compiler writing tools (bison as yacc-replacement, flex as lex replacement) - The GNU 'Bourne again' shell (bash) - Micro emacs - most utilities you need for development (cat, cp, kermit, ls, make, etc.) - Over 200 library procedures (atoi, fork, malloc, read, stdio, etc.) - Currently 4 national keyboards: Finnish/US/German/French - Full source code (in C) for the OS is freely distributable - Full source code of the tools can be gotten from many anonymous ftp sites (Almost the entire suite of GNU programs has been ported to Linux.) - Runs in protected mode on 386 and above - Support for extended memory up to 16M on 386 and above - RS-232 serial line support with terminal emulation, kermit, zmodem, etc. - Supports the real time clock 3. HARDWARE REQUIRED - A 386 or 486 machine with an AT-bus. (EISA will probably work, also, but you will need an AT-bus hard disk controller.) Both DX and SX processors will work. - A hard disk implementing the standard AT hard disk interface-- for example, an IDE drive. SCSI drives are not supported yet. - A high-density disk drive--either 5.25" (1.2MB) or 3.5" (1.44MB). - At least 2 megabytes of RAM. (LINUX will boot in 2 Mb. To use gcc at least 4 MB are required.) - Any video card of the following: Hercules,CGA,EGA,VGA In addition, LINUX supports - Up to two serial lines - A real time clock 4. PARTIAL LIST OF UTILITIES INCLUDED IN OR AVAILABLE FOR LINUX 0.11 - The MTOOLS package (reading/writing to DOS filesystems) - The complete GNU filetools (ls, cat, cp, mv, ...) - The GNU C compiler with GNU assembler, linker, ar, ... - bison - flex - rcs - pmake (BSD 4.3 Reno/BSD 4.4 make) - kermit - Micro emacs - less - mkfs - fsck - mount/umount 5. LINUX BINARIES The LINUX binaries and sources are available at three anonymous FTP sites. These are: nic.funet.fi:/pub/OS/Linux tsx-11.mit.edu:/pub/linux tupac-amaru.informatik.rwth-aachen.de:/pub/msdos/replace 6. LEGAL STATUS OF LINUX Although LINUX is supplied with the complete source code, it is copyrighted software. Unlike MINIX, however, it is available for free, provided you obey to the rules specified in the LINUX copyright. 7. NEWS ABOUT LINUX Since LINUX's introduction to the public there has been a rapidly growing mailing list, "linux-activists@niksula.hut.fi". To subscribe to this list, mail to "linux-activists-requests@niksula.hut.fi". If the traffic in this lists increases further, there are plans to swap ( at least partially ) over to comp.os.misc, so watch out for any LINUX articles in this group. For the current status of LINUX, do "finger torvalds@kruuna.helsinki.fi". 8. FUTURE PLANS Work is underway on LINUX version 1.0, which will close some of the gaps in the present implementation. Various people are currently working on: - Math support/fp emulation in the kernel - Page swapping (since paging is already implemented) - A virtual filesystem layer - STREAMS - POSIX job control (This is already alpha and will probably be out with Version 0.12.) - init/getty/login - symbolic links - Interprocess communication - IEEE POSIX P1003.1 / P1003.2 compatibility - SCSI support If you want to help, join the mailing list. --[0211]-- [0212] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/19/91 13:25 (41 lines) Subject: VM, version 0.12 Date: Thu, 19 Dec 1991 19:51:45 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi /\ / \ / \ / \ Seasons Greetings / \ || Ho, ho ho, and a happy X-mas/chanukah/whatever to you all. I'm probably mailing to a lot of non-listening mail-boxes, but who cares. This is a warning for all you out there making changes to the linux kernel: if you want your changes to be in 0.12, I want them by early January (5th-10th ta the latest). As it looks now, 0.12 will be out about 15th of January, and will contain at least these new things: - POSIX job control (by tytso, alpha-release available already) - VM (by me - I'll probably make alphas available after X-mas) - Various small corrections (by me, tytso, jtkohl, drew etc) - Anything else people send me. I got VM working today (not bad in two days if I may say so :-), but haven't really tested extensively. I tried some compilations (I remade uemacs) on a 2M machine (or rather a 8M machine, of which Linux sees only 2M), and it worked (gcc, make, bash etc in memory ar the same time), albeit slowly. There are probably still problems, but it seems VM will definitely be in 0.12. Note that the earlier I get your fixes, the easier it will be to implement them all: if I get many fixes 0.12 may be a little late, so the January 15th date isn't really fixed. Also, after releasing 0.12 I'll probably have to study a bit harder than I did this autumn (which isn't hard per se :-), which may mean that the new releases won't be coming once per month or so any more. Hopefully 0.12 will be good enough to use. Linus "Ugly X-mas trees are my speciality" Torvalds --[0212]-- [0213] daemon@ATHENA.MIT.EDU (Pietro Caselli) Linux_Activists 12/20/91 00:07 (23 lines) Subject: Re: Re: compress, and other stuff To: linux-activists@joker.cs.hut.fi Date: 18 Dec 91 19:22:50 MET (Wed) From: zaphod@petruz.sublink.org (Pietro Caselli) > From: "Jim Winstead Jr." > > Also, I've ported unzip, zoo, (un)yabba and a few other things to > Linux. Any interest in putting these on tsx-11? They were all pretty > painless, but it might save some people the trouble of compiling them. > --- I ported zip 1.0 if there is interest I'll post it on funet. ( Zip1.0 works great, I had just to discard encryption/decription from it. ) Ciao. Pietro Caselli | internet: zaphod@petruz.sublink.org | IF YOU MEET THE BUDDHA : pietro@deis33.cineca.it | ON THE ROAD,KILL HIM. Mail : V. Pietro Mattiolo, 4 | 40139 Bologna ITALY | --[0213]-- [0214] daemon@ATHENA.MIT.EDU (Pietro Caselli) Linux_Activists 12/20/91 00:09 (49 lines) Subject: Re: one bug, possible other problems To: linux-activists@joker.cs.hut.fi Date: 18 Dec 91 19:18:14 MET (Wed) From: zaphod@petruz.sublink.org (Pietro Caselli) > > Has anyone tried bringing up g++ on linux? [ gcc2 and c386 ] Hmmmm, I'd like to test myself on gcc2 but ... where can I find it ? ( I asked archie but got no response :-( ) > I have this small question when it comes to the swap-space setup - two > different possibilities: > > 1 - a swap-device of it's own (ie own partition) > > 2 - file-system swap-area. > > There are a number of pros and cons: (1) is faster, easier to implement, > and will need no changes when the filesystem eventually is changed to > accept >64M etc. (2) has the good side that it means that it would be > easy to change the size of the swap-area, but if something bad happens, > it could probably trash the filesystem easily. I'll probably implement > only (1) for now, but I'd like to hear what you say (and ignore it :-). Ok, start discarding my hints :-). Solution 1) is the best, is faster, cleaner and easyer to mantain. But with the fu###ing limitation of four partition for HD it gives to me a lot of trouble. ( And think to many other ) Now I've a Dos partition, 2 Minix partitions ( root and /usr ) and a Linux partition. I can't add any more :-( When Linux gets older, i.e when it'll have virtual consoles, pttys etc I'll be pleased to kill minix but ... I know It needs time. So, why not add both 1) and 2) ? ( Christmass holidays are long, I'll go skiing but I think you'll have plainty of time to make both :-) ) > Linus Ciao. Pietro Pietro Caselli | internet: zaphod@petruz.sublink.org | IF YOU MEET THE BUDDHA : pietro@deis33.cineca.it | ON THE ROAD,KILL HIM. Mail : V. Pietro Mattiolo, 4 | 40139 Bologna ITALY | --[0214]-- [0215] daemon@ATHENA.MIT.EDU (Hakkarainen Kimmo) Linux_Activists 12/20/91 06:12 (20 lines) Subject: less version 177 From: Hakkarainen Kimmo To: linux-activists@joker.cs.hut.fi (Linux activists) Date: Fri, 20 Dec 91 12:59:21 EET Hello, I found sources for less 177 in garbo.uwasa.fi. I compiled it and noticed it being better than the version we already have (0.97). I will put both sources and binaries in nic.funet.fi. I hope those will show up in couple of days. BTW less 177 supports editor-escape (or what should it be called) and I changed the default editor to be emacs not "vi". If you have any questions, please feel fre to ask me. PS. Merry christmas to everyone. -- Kimmo Hakkarainen (h108373@cc.tut.fi) Fire, walk with me. --[0215]-- [0216] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 12/20/91 10:39 (22 lines) Subject: less version 177 Date: Fri, 20 Dec 1991 17:29:19 +0200 From: Ari Lemmke To: linux-activists@joker.cs.hut.fi In-Reply-To: Hakkarainen Kimmo's message of Fri, 20 Dec 91 12:59:21 EET <9112201059.AA09690@cc.tut.fi> Kimmo Hakkarainen writes: >I found sources for less 177 in garbo.uwasa.fi. I compiled it and >noticed it being better than the version we already have (0.97). >I will put both sources and binaries in nic.funet.fi. I hope >those will show up in couple of days. Available in nic.funet.fi:/pub/OS/Linux/bin less-177.bin.tar.Z less-177.src.tar.Z I really like version numbers within names ... arl PS. merry Xmas ... --[0216]-- [0217] daemon@ATHENA.MIT.EDU (Theodore Ts'o) Linux_Activists 12/20/91 11:14 (26 lines) Subject: Re: one bug, possible other problems Date: Fri, 20 Dec 91 11:03:59 -0500 From: tytso@ATHENA.MIT.EDU (Theodore Ts'o) To: linux-activists@joker.cs.hut.fi In-Reply-To: Pietro Caselli's message of 18 Dec 91 19:18:14 MET (Wed), Reply-To: tytso@athena.mit.edu X-Mailer: W-MAIL 3.64/MINIX (11/13/90) Date: 18 Dec 91 19:18:14 MET (Wed) From: zaphod@petruz.sublink.org (Pietro Caselli) Solution 1) is the best, is faster, cleaner and easyer to mantain. But with the fu###ing limitation of four partition for HD it gives to me a lot of trouble. ( And think to many other ) Now I've a Dos partition, 2 Minix partitions ( root and /usr ) and a Linux partition. I can't add any more :-( When Linux gets older, i.e when it'll have virtual consoles, pttys etc I'll be pleased to kill minix but ... I know It needs time. One solution to this which I've been kicking about, but haven't had time to implement, is run-time configurable partitions. So you could set up a 96 meg partition for Linux (at least as far as the MS-LOSS partitioning scheme is concerned) and have /dev/hd3 refer to it. Then in /etc/rc, you call a program which configures /dev/hd16 to be the last 32 megs of /dev/hd3, using ioctl's. Turn on swapping on /dev/hd16, and you're all set. - Ted --[0217]-- [0218] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/20/91 14:05 (17 lines) Subject: gcc barfs at string.h Date: Fri, 20 Dec 91 19:56:31 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! While I was alpha-testing VM, the following occured: I compiled the kernel, and the first file to include string.h wouldn't compile at the line extern int __res __asm("ax"); (just quoted from mind, may not be exact, can be found first with strcmp) this gives a "parse error before )", and later on, an undefined __res Any clues what this could be? Is it me or is it a broken gcc or is it VM? Thanks for your help, and have a merry christmas Robert "blow it all" Blum --[0218]-- [0219] daemon@ATHENA.MIT.EDU (Bruce Evans) Linux_Activists 12/20/91 22:17 (17 lines) Subject: Re: less version 177 Date: Sat, 21 Dec 91 03:24:10 +1100 From: Bruce Evans To: linux-activists@joker.cs.hut.fi >I found sources for less 177 in garbo.uwasa.fi. I compiled it and >noticed it being better than the version we already have (0.97). I think version 0.97 is much better than 177 :-), mainly because my version of it has hacks to read compressed files. I seem to remember that the author of less strongly objected to such impurities, but when your disk has a lot of compressed files it's nice to be able to say "less *" and not get garbage or useless warnings about binary files. I looked at putting decompression in version 177 but the changes in buffering stdin made things too difficult considering that 0.97 already works. Bruce --[0219]-- [0220] daemon@ATHENA.MIT.EDU (Jim Winstead Jr.) Linux_Activists 12/20/91 23:01 (31 lines) Subject: Re: less v1.77 Date: Fri, 20 Dec 91 19:50:59 PST From: "Jim Winstead Jr." To: linux-activists@joker.cs.hut.fi You can set up a small shell script to view compressed files via less, as well. I have one called zless that is simply 'zcat $* | less', and it works wonders. Does the less v1.77 available include regular-expression searching? When I tried compiling less v1.77, I found that I had to replace the included regex.[ch] with ones from another GNU utility. Speaking of GNU utilities, someone mentioned making find 2.1 available, because it was the "latest and greatest". I looked on prep.ai.mit.edu, the official distribution point of GNU stuff, and it has find-3.2.tar.Z. Is there any interest in getting this ported to Linux? Has anyone had any luck porting gawk more successfully? The current port fails to pass the test programs included with the current GNU distribution, and when I've tried to build that version (3.?), it fails on eval.c due to error 32 or something nice and cryptic like that. I would assume it's trying to compile floating-point stuff, and since I lack a math coprocessor.... My main interest in getting a (better-)working gawk is to use awf as a replacement for nroff, at least until some maniac ports gtroff (which requires porting g++ first :) --- Jim Winstead Jr. (CSci '95) 3 "We are only immortal Harvey Mudd College 3 for a limited time.. jwinstea@jarthur.Claremont.EDU 3 when we are young." Disclaimer: Mine, not theirs! 3 -Rush, Dreamline --[0220]-- [0221] daemon@ATHENA.MIT.EDU (John T Kohl) Linux_Activists 12/21/91 00:03 (61 lines) Subject: Re: Serial Communications... Date: Fri, 20 Dec 91 20:56:14 PST To: mpeters@polyslo.csc.calpoly.edu (Marc Peters) Cc: linux-activists@joker.cs.hut.fi In-Reply-To: [180] From: John T Kohl Reply-To: jtkohl@cs.berkeley.edu re: weirdness with 2-char things for serial lines. I just saw the same thing for the first time. It appears to be a problem with the both sending and receiving data, as I saw weirdness with output from the far end of the call as well as weirdness with stuff I typed. To get the serial line in this pickle, I started up a tcsh shell on that line while I had a terminal connected, and then I turned up the baudrate to 9600. I then put my modem back on, ran kermit (which reset the baud rate to 2400), and saw the problem. I then rebooted, and it cleared. This is reproducible. Linus (or anybody who knows details on the serial lines), is this enough info to debug the problem? John P.S. If you have a terminal and want to spawn a shell on it, here's a program to do that. Just running the shell with redirected input/output doesn't work right, as the controlling terminal doesn't get set right. #include #include #include extern char *sys_errlist[]; main(int argc, char *argv[]) { if (argc != 3) { fprintf(stderr, "usage: doshell &\n"); exit(1); } /* close down fd's */ close(0); close(1); close(2); /* detach from parent process's group */ setsid(); /* open new tty */ if (open(argv[1], O_RDWR, 0) == -1) exit(2); dup(0); dup(0); execlp(argv[2], "-", 0); /* should appear on new tty...: */ fprintf(stderr, "can't exec shell: %s\n", sys_errlist[errno]); exit(3); } --[0221]-- (pref = [0180]) [0222] daemon@ATHENA.MIT.EDU (Bruce Evans) Linux_Activists 12/21/91 10:14 (32 lines) Subject: Re: less v1.77 Date: Sat, 21 Dec 91 15:25:34 +1100 From: Bruce Evans To: linux-activists@joker.cs.hut.fi Jim Winstead Jr. writes: >You can set up a small shell script to view compressed files via less, as >well. I have one called zless that is simply 'zcat $* | less', and it works This doesn't work so well for browsing through a lot of files. Working through the files in linear order is not so good either, but my system is fast enough to skip through files (even compressed) with the N and P keys - in less 0.97. Another thing I didn't like about 177 was the change on these keys to be like more (:n and something or other). >Speaking of GNU utilities, someone mentioned making find 2.1 available, >because it was the "latest and greatest". I looked on prep.ai.mit.edu, >the official distribution point of GNU stuff, and it has find-3.2.tar.Z. Perhaps someone got the version numbers confused. 3.2 has been out for a couple of months, and 3.1 was around for a long time before that. I have 3.2 on Minix. BTW, bash-1.10 broke updatedb in find, because x=y export x fails to set x. updatedb has a statement like this to set the PATH. Isn't this supposed to work? It worked for bash-1.08 and works for ksh on ISC Unix. It doesn't work for bash-1.10 on Minix or ISC Unix. Bruce --[0222]-- [0223] daemon@ATHENA.MIT.EDU (Drew Eckhardt) Linux_Activists 12/21/91 14:13 (472 lines) Subject: Boot sector Date: Sat, 21 Dec 1991 12:05:12 -0700 From: Drew Eckhardt To: drew@ophelia.cs.Colorado.EDU, linux-activists@joker.cs.hut.fi, Well, I was sitting around, running end-of-semester level 0 dumps on several gigs of disk space, and started looking at converting my MASM bootsector code back to the Unix assembler format.... To refresh everyone's memory : The original Linux boot sector had problems on some clones. Basically, what happens is the default floppy diskette parameter table specifies a low number of sectors. A multi-sector read involving a higher sector results in a sector not found error, and the boot sector goes into an infinite loop... I sent out a boot sector that corrected this problem. For me, it worked. I never got any complaints, so either it worked for other people, no one tried it, or it got lost. However, some how after I got the code working 100%, I dammaged the error dump routine. No more errors, error dump nolonger called.... never saw the problem. The following source code fixes the bunged error dump. With an added push, it should be within 1 byte of overflowing..... almost time for more pruning. Unfortunately, my SCSI host / floppy controller fried itself. Although Linux is on its own MFM drive - I can't boot the floppy , and can't run the DOS stuff (including assembler) - meaning this is totally untested. If some one wants to do the honors.... --bootsect.asm-- ; Created by 2masm perl script by Drew Eckhardt ; bootsect.asm modified by Drew Eckhardt - ; support added for TRUELY compatable ; BIOS's as well as error dump code. .286 ; ; SYS_SIZE is the number of clicks (16 bytes) to be loaded. ; 3000h is 30000h bytes equ 196kB, more than enough for current ; versions of linux ; SYSSIZE equ 3000h ; ; bootsect.s (C) 1991 Linus Torvalds ; ; bootsect.s is loaded at 7c00h by the bios-startup routines, and moves ; iself out of the way to address 90000h, and jumps there. ; ; It then loads 'setup' directly after itself (90200h), and the system ; at 10000h, using BIOS interrupts. ; ; NOTE; currently system is at most 8*65536 bytes long. This should be no ; problem, even in the future. I want to keep it simple. This 512 kB ; kernel size should be enough, especially as this doesn't contain the ; buffer cache as in minix ; ; The loader has been made as simple as possible, and continuos ; read errors will result in a unbreakable loop. Reboot by hand. It ; loads pretty fast by getting whole sectors at a time whenever possible. _TEXT segment para public 'CODE' assume cs:_TEXT SETUPLEN equ 4 ; nr of setup-sectors BOOTSEG equ 07c0h ; original address of boot-sector INITSEG equ 9000h ; we move boot here - out of the way SETUPSEG equ 9020h ; setup starts here SYSSEG equ 1000h ; system loaded at 10000h (65536). ENDSEG equ SYSSEG + SYSSIZE ; where to stop loading ; ROOT_DEV: 000h - same type of floppy as boot. ; 301h - first partition on first drive etc ROOTDEV equ 21dh start: mov ax,offset BOOTSEG mov ds,ax mov ax,offset INITSEG mov es,ax mov cx,256 sub si,si sub di,di cld rep movsw db 0eah ; jmp INITSEG:go dw offset go dw INITSEG go: cli ; don't want interrupts when stack moves mov ax, cs mov ss, ax mov sp, 0ff00h - 12 ; arbitrary num - 512 - disk param size ; ; Many BIOS's default disk parameter tables will not recognize multi- ; sector reads beyond the maximum sector specified in the default ; diskette parameter talbes - this means 7 sectors :( ; ; Since single sector reads are ... slow, we must patch this. We ; simply set the max sector count to the most we will expect - 18. ; High doesn't hurt. Low does. ; xor ax, ax ; get diskette parameters from int 1eh mov es, ax ; vector (or 78h) push es ; save int table segment mov bx, 78h lds si, es:[bx] ; ds:si points to actual parameter table mov ax,cs ; mov es,ax ; copy disk parameters to RAM mov di, 0ff00h - 12 ; es:di points to dsk_tab push di ; save dsk_tab offset mov cx, 6h ; 12 bytes rep movsw pop di ; restore dsk_tab offset mov byte ptr es:[di + 4], 18; set sectors pop es ; set 1eh vector to disk_tab mov word ptr es:[bx], di ; offset mov ax, cs mov word ptr es:[bx+2], ax ; seg mov ds,ax ; load seg regs mov es,ax sti ; stack & disk parms are good. xor ah, ah ; reset FDC with new parameters. xor dl, dl int 13h ; load the setup-sectors directly after the bootblock. ; Note that 'es' is already set up. load_setup: xor dx,dx ; drive 0, head 0 mov cx,0002h ; sector 2, track 0 mov bx,0200h ; address equ 512, in INITSEG mov ax,0200h+SETUPLEN ; service 2, nr of sectors int 13h ; read it jnc ok_load_setup ; ok - continue push ax ; dump error code call print_nl mov bp, sp call print_hex pop ax xor dl, dl xor ax, ax ; reset the diskette int 13h jmp load_setup ok_load_setup: ; Get disk drive parameters, specifically nr of sectors/track IFDEF HARD mov cx, HARD ELSE xor dl,dl mov ax,0800h ; AH equ 8 is get drive parameters int 13h xor ch,ch ENDIF mov cs:sectors,cx mov ax,offset INITSEG mov es,ax ; Print some inane message mov ah,03h ; read cursor pos xor bh,bh int 10h mov cx,9 mov bx,0007h ; page 0, attribute 7 (normal) mov bp,offset msg1 mov ax,1301h ; write string, move cursor int 10h ; ok, we've written the message, now ; we want to load the system (at 10000h) mov ax,offset SYSSEG mov es,ax ; segment of 010000h call read_it call kill_motor mov ax, 0e0dh mov bx, 7 int 10h mov ax, 0e0ah int 10h ; After that we check which root-device to use. If the device is ; defined (; equ 0), nothing is done and the given device is used. ; Otherwise, either /dev/PS0 (2,28) or /dev/at0 (2,8), depending ; on the number of sectors that the BIOS reports currently. mov ax,cs:root_dev or ax, ax ; cmp ax, 0 jne root_defined mov bx,cs:sectors mov ax,0208h ; /dev/ps0 - 1.2Mb cmp bx,15 je root_defined mov ax,021ch ; /dev/PS0 - 1.44Mb cmp bx,18 je root_defined undef_root: jmp undef_root root_defined: mov cs:root_dev,ax ; after that (everyting loaded), we jump to ; the setup-routine loaded directly after ; the bootblock: db 0eah ; jmp SETUPSEG:0 dw 0 dw SETUPSEG ; This routine loads the system at address 10000h, making sure ; no 64kB boundaries are crossed. We try to load it as fast as ; possible, loading whole tracks whenever we can. ; ; in: es - starting address segment (normally 1000h) ; sread dw 1+SETUPLEN ; sectors read of current track head dw 0 ; current head track dw 0 ; current track read_it: mov ax,es test ax,0fffh die: jne die ; es must be at 64kB boundary xor bx,bx ; bx is starting address within segment rp_read: mov ax,es cmp ax,ENDSEG ; have we loaded all yet? jb ok1_read ret ok1_read: mov ax,cs:sectors ; this is the number of sectors we will sub ax,sread ; attempt to read ; mov ax, 1 ; single sector read - testing only mov cx,ax ; shl cx,9 ; * 512 bytes add cx,bx ; if overflow, then next segment jnc ok2_read je ok2_read xor ax,ax sub ax,bx shr ax,9 ok2_read: call read_track ; is called with num sectors wanted in al mov cx,ax add ax,sread ; add actual number read to ax cmp ax,cs:sectors jne ok3_read mov ax,1 sub ax,head jne ok4_read inc track ok4_read: mov head,ax xor ax,ax ok3_read: mov sread,ax shl cx,9 add bx,cx jnc rp_read mov ax,es add ax,1000h mov es,ax xor bx,bx jmp rp_read read_track: pusha push ax ; print loading... push bx mov ax, (0e00h + '.') mov bx, 7 int 10h pop bx pop ax mov dx,track mov cx,sread inc cx mov ch,dl mov dx,head mov dh,dl xor dl,dl and dx,0100h mov ah,2 push dx ; save for possible register dump push cx push bx push ax int 13h jc bad_rt add sp, 8 popa ret bad_rt: push ax ; save AX return - ; AH = errore code ; AL = successfully read. call print_all xor ah, ah ; reset FDC xor dl, dl int 13h add sp, 10 popa jmp read_track ; ; print_all is for debugging purposes. ; It will print out all of the registers. The assumtion is that this ; is called from the track read routine, with a stack frame like ; dx ; cx ; bx ; ax ; error ; ret <- sp print_all: mov cx, 5 ; error code + 4 registers mov bp, sp ; first one starts sp + 1 word print_loop: push cx ; preserve count left call print_nl ; new line for readability cmp cl, 5 ; first one printed is error code - no reg jae no_reg mov al, cl ; convert number to first register letter. mov ax, 0e05h + 'A' - 1 sub al, cl int 10h mov ax, 0e00h + 'X' int 10h mov ax, 0e00h + ':' int 10h no_reg: ; print the next register value add bp, 2 call print_hex pop cx loop print_loop ret print_nl: mov ax, 0e0dh ; CR mov bx, 7 int 10h mov ax, 0e0ah ; LF int 10h ret ; ; print_hex is for debugging purposes. It will print out the hex ; number pointed to by ss:[bp]. ; print_hex: mov cx, 4 ; 4 hex digits mov dx, word ptr [bp] ; load word into dx print_digit: rol dx, 4 ; will rotate, 4 bits will be highest mov ah, 0eh ; nibble, lowest nibble, etc. mov al, dl ; convert to digit representation and al, 0fh ; mask low nibble add al, '0' ; convert to 0 based digit cmp al, '9' ; if overflow, then go to letter jbe good_digit add al, 'A' - '0' - 0ah good_digit: mov ah, 0eh ; print it int 10h loop print_digit ret ; * This procedure turns off the floppy drive motor, so ; * that we enter the kernel in a known state, and ; * don't have to worry about it later. ; kill_motor: push dx mov dx,3f2h xor al,al out dx, al pop dx ret sectors dw 0 msg1 db 13,10 db "Loading" org 508 root_dev dw ROOTDEV boot_flag: dw 0AA55h _TEXT ends end -- ends -- Build with MASM, link, then exe2bin HARD may be defined with MASM bootsect.asm /DHARD=9; To get it to use the hardcoded sector count. TASM should also work, a86 will work if you change to its conditional define syntax. --[0223]-- [0224] daemon@ATHENA.MIT.EDU (0114) Linux_Activists 12/21/91 21:06 (54 lines) Subject: No subject found in mail header Date: Sun, 22 Dec 91 03:02:42 +0100 From: 0114 Apparently-To: linux-activists@joker.cs.hut.fi Hi, As a X-mas present, you get a termcap cdif to make uemacs recognize these nice keypads like page-up, home and the like. I added a new terminal type called memacs to the termcap entries. To use it, enter TERM=memacs;export TERM Wolfgang Thiel 12/21/91=linux0.11 upsyf173@comparex.hrz.uni-bielefeld.de table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 tcapdif M*BHJ("]!+V5T8R]T97)M8V%P"5-U;B!$96,@(#@@,3,Z-3@Z,3D@,3DY,0HMz M+2T@=&5R;6-A< E&7!A9"!U<'!E2CIC;R,Xd M,#IL:2,R-3IC;#U<15M(7$5;2CIS9CU<140Z7 HK( DZ;&4]7D@Z8G,Z86TZc M8VT]7$5;)6DE9#LE9$@Z;F0]7$5;0SIU<#U<15M!.EP**R ).F-E/5Q%6TLZb M8V0]7$5;2CIS;SU<15LW;3IS93U<15MM.G5S/5Q%6S1M.G5E/5Q%6VTZ7 HKa M( DZ;60]7$5;,6TZ;7(]7$5;-VTZ;6(]7$5;-6TZ;64]7$5;;3II2#I<"BL@"3IH;SU<15M(.FM0/5Q%6S5^.FM./5Q%x M6S9^.FM(/5Q%6UDZ:V@]7$5;2#IK1#U<15LS?CIK23U<15LR?CI<"BL@"3IKw M,3U<15M;03IK,CU<15M;0CIK,SU<15M;0SIK-#U<15M;1#IK-3U<15M;13IKv M-CU<15M;1CI<"BL@"3IK-SU<15M;1SIK.#U<15M;2#IK.3U<15M;23IK,#U To: linux-activists@joker.cs.hut.fi Date: Sun, 22 Dec 91 21:29:18 EST Ok, I finally got the gccbin.tar to my linux system, and untar-red it. Now, which files go where? Also what other files do I need for gcc to work? What about header files? --[0225]-- [0226] daemon@ATHENA.MIT.EDU (d88-man@nada.kth.se) Linux_Activists 12/23/91 05:47 (20 lines) Subject: console Date: Mon, 23 Dec 91 11:39:44 +0100 From: d88-man@nada.kth.se To: Linux-activists@joker.cs.hut.fi Hello Linuxers, I have played around with the setup.s(/console.c) to initialize different screenmodes with a supervga. Everything worked just fine, though 132x60 is a bit hard to read :-) If there is interest I could write some general code to detect what kind of SVGA-card installed and choose mode interactively. I know it's kind of useless but it is rather neat (at least as I see it) to have for example 80x43 mode which greatly improves the use of memacs multiwindow feature. Suggestions welcome ! The question is do one want this stuff in the kernel ? Is it usefull enough ? /Mats Andersson (d88-man@nada.kth.se) PS A merry christmas to all of you (probably not many reading their mail now when you should be on holliday :-) and a happy new 1992 --[0226]-- [0227] daemon@ATHENA.MIT.EDU (Marc CORSINI) Linux_Activists 12/23/91 13:40 (21 lines) Subject: gccbin installation question Date: Mon, 23 Dec 91 19:32:50 EST From: corsini@geocub.greco-prog.fr (Marc CORSINI) To: yanek@mthvax.cs.miami.edu In-Reply-To: Yanek Martinson's message of Sun, 22 Dec 91 21:29:18 EST <9112230229.AA18367@mthvax.cs.miami.edu> Cc: linux-activists@joker.cs.hut.fi About the headers just ftp-ize the include.tar from nic.funet.fi, tsx-11.mit.edu or tupac-amaru.informatik.rwth-aachen.de Another useful thing is to read INSTALL-0.11 0.10 and also linux.tex also avilable on the different sites. Finally (this was in an old post of Linus). Most programs starting with a "g" are gnu software. U shoold have unpack ur gccbin.tar in /usr/local/lib/gcc-xxx. U should link them as /usr/local/bin/gxxx and /usr/local/bin/xxx Hope this helps [mmc] PS1: Merry X-mas and happy new year. PS2: May be this more or less should be added in the FAQ --[0227]-- [0228] daemon@ATHENA.MIT.EDU (proven@Athena.MIT.EDU) Linux_Activists 12/23/91 16:56 (22 lines) Subject: VFS From: proven@Athena.MIT.EDU Date: Mon, 23 Dec 91 16:49:41 -0500 To: linux-activists@joker.cs.hut.fi For those interested, the VFS is currently in pre-alpha stage. I'll try to have an alpha release Sunday night if anyone is interested. It's kinda messy and half the files in the fs directory are unrecognizable from linux-0.11. I plan to get it all cleaned up and ready for linux-0.12 release. The VFS add functionallity to accomidate multiple filesystems, and I do plan to implement a few when I'm done with the VFS. It will also have functionallity for file types. It should contain all the functionallity of the old linux fs and only two system calls will have different interfaces mount and unmount. I have not put any hooks in for select, so if someone wants to do them thats fine, but I'd suggest starting with a kernel with the VFS in place or one of us is going to have a royal good time incorporating the others modifications. I'll work on additional fs functionallity when I'm done with the VFS, and the list is quite long, but the first thing to do is finish what I've started. CAP --[0228]-- [0229] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/23/91 20:06 (37 lines) Subject: virtual consoles working. Date: Mon, 23 Dec 91 17:00:15 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Hi and merry Xmas. This note is coming to you from the virtual console of Linux. Yep. I have virtual consoles working under linux. Although this is based upon Gordon Irlams minix patches, virtually no code from there was actually used. This is more a product of minix's message passing kernel being so different from Linux's unified approach than by design. But I am trying to adapt as much of his setterm program as possible, so that a user interface for setting colors and the like is available. To get around the problem of no init/login I am using the "doshell" program posted here earlier. Actually, for standalone machines I think I prefer it over getty/login. I will post the patches to 0.11 as soon as I have tested a little more, and had a chance to bundle it up. I also have done all of the design and coding, but none of the testing on a select call, adapted from Mathius Lauttiners design. But as Proven has requested, I will probably wait until after 0.12 is out before going any further with that. Getting a peek at your VFS patches early, thought might help. It's funny how things work out. I was working on select, started eyeing how they might interact with pty's, and realized that virtual consoles would probably still be desirable after ptys, as well as being easier to do. Anyways, have a good christmas all. I am heading to the ski slopes so I know I'll have fun. Hope you do to. --[0229]-- [0230] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/24/91 04:00 (632 lines) Subject: virtual consoles: part 2 Date: Tue, 24 Dec 91 00:50:21 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi concatenate these to the previous message. ----SNIP HERE------------------------------------- M"7!O#TP.PI8("!]"E@@( I8(2!S=&%T:6,@=F]If M9"!D96PH:6YT(&-U"D@>PI8(" )"7!Oe MPI8(" )a M"6-API8(" );&]N9R!C;W5N="!?7V%S;5]?*")C>"(I.PI8(" );&]N9R!Sv M=&%R="!?7V%S;5]?*")D:2(I.PI8(" *6"$@"7-W:71C:" H=G!API8u M(" )"6-API8(" );&]N9R!C;W5N="!?j M7V%S;5]?*")C>"(I.PI8(" );&]N9R!S=&%R="!?7V%S;5]?*")D:2(I.PI8i M(" *6"$@"7-W:71C:" H=G!API8(" )"6-A"(L(F1I(BD["E@@('T*e M6" @"E@A('9O:60@8W-I7VTH=F]I9"D*6" @>PI8(" ):6YT(&D["E@@( I8d M(" )9F]R("AI/3 [:3P];G!API8(2 )"0EC87-E(# Z(&%T='(]*&ES8V]L;W(_9&5F7V%Tr M='(Z,'@P-RD[8G)E86L[(" O*B!D969A=6QT("HO"E@A( D)"6-A# X.C!X,&8I.V)R96%K.R @+RH@p M8F]L9" J+PI8(2 )"0EC87-E(#0Z(&%T='(]*&ES8V]L;W(_9&5F7V%T=')\o M,'@P.#HP>#!F*3MB&9F)B@H<&]S+79I9&5O7VUE;5]S=&%R="D^/CDI+"!V:61E;U]P;W)Tp M7W9A;"D["E@J*BHJ*BHJ*BHJ*BHJ*BH*6"HJ*B S,C L,S(V("HJ*BH*6" @o M"7-T:2@I.PI8("!]"E@@( I8(2!S=&%T:6,@=F]I9"!R97-P;VYD*'-T5]S=')U8W0@*B!T='DI"E@@('L*6" @"6-H87(@*B!P(#T@4D534$].j M4T4["E@@( I8*BHJ*BHJ*BHJ*BHJ*BHJ"E@J*BH@,S,S+#,S.2 J*BHJ"E@@i M( EC;W!Y7W1O7V-O;VME9"AT='DI.PI8("!]"E@@( I8(2!S=&%T:6,@=F]Ih M9"!I;G-E5]T;U]C;V]K960H='1Y*3L*6" @?0I8e M(" *6"$@PI8(" ):6YT(&]L9'1O<"QO;&1B;W1T;VT["E@@( I8*BHJf M*BHJ*BHJ*BHJ*BHJ"E@J*BH@,S@S+#,Y-" J*BHJ"E@@( EO;&1B;W1T;VT]e M8F]T=&]M.PI8(" )=&]P/7D["E@@( EB;W1T;VT@/2!V:61E;U]N=6U?;&ENd M97,["E@A( ES8W)U<"@I.PI8(" )=&]P/6]L9'1O<#L*6" @"6)O='1O;3UOc M;&1B;W1T;VT["E@@('T*6" @"E@A('-T871I8R!V;VED(&-S:5]A="AU;G-Ib M9VYE9"!I;G0@;G(I"E@@('L*6" @"6EF("ANPI8l M(" ):68@*&YR(#X@=FED96]?;G5M7VQI;F5S*0I8(" )"6YR(#T@=FED96]?k M;G5M7VQI;F5S.PI8*BHJ*BHJ*BHJ*BHJ*BHJ"E@J*BH@-# U+#0Q-" J*BHJj M"E@@( EE;'-E(&EF("@A;G(I"E@@( D);G(@/2 Q.PI8(" )=VAI;&4@*&YRi M+2TI"E@A( D):6YS97)T7VQI;F4H*3L*6" @?0I8(" *6"$@3TPn M.PI8(2 *6"$@PI8(" )m M#UX.PI8(" )3UY.PI8("!]"E@@( I8(2!S=&%T:6,@l M=F]I9"!R97-T;W)E7V-U'DH"P@2D["E@@('T*6" @"E@@('9O:60@8V]N7W=R:71E*'-TPI8b M(2 )9V]T;WAY*&-U5]S=')U8W0@*B!T='DI"E@@('L*6" @"6EN="!N7,@=W)I=&5S('1O('1H92!C=7)Rs M96YT(&]N92X@*B\*6"L@"2 @8W5R6%T='(@/2!A='1R.PI8(" );G(@/2!#2$%24RAT='DM/G=R:71E7W$I.PI8p M(" )=VAI;&4@*&YR+2TI('L*6" @"0E'151#2"AT='DM/G=R:71E7W$L8RD[o M"E@J*BHJ*BHJ*BHJ*BHJ*BH*6"HJ*B T-38L-#8T("HJ*BH*6" @"0D)"0EIn M9B H>#X]=FED96]?;G5M7V-O;'5M;G,I('L*6" @"0D)"0D)>" M/2!V:61Em M;U]N=6U?8V]L=6UNF5?"D@>PI8(" )"0D)"0EX+2T["E@M+2T@-30P+#4U," M+2TM"E@@v M( D)"0E](&5L2DI"E@A( D)"0D)9&5L*&-U"D@>PI8(" )"0D)"0EX+2T["E@J*BHJ*BHJp M*BHJ*BHJ*BH*6"HJ*B T.#0L-#DP("HJ*BH*6" @"0D)"0EI9B H>#YV:61Eo M;U]N=6U?8V]L=6UNPI8(" )"0D)"0EX("T]('9I9&5O7VYU;5]C;VQUn M;6YS.PI8(" )"0D)"0EP;W,@+3T@=FED96]?#YV:61Ek M;U]N=6U?8V]L=6UNPI8(" )"0D)"0EX("T]('9I9&5O7VYU;5]C;VQUj M;6YS.PI8(" )"0D)"0EP;W,@+3T@=FED96]?2LQ*3L*e M6" @"0D)"65L2LQ*3L*6" @"0D)"65L2UP87);,%TI.PI8e M(" )"0D)"0EB2MP87);,%TI.PI8(" )"0D)"0EB'DH>"UP87);,%TL>2D["E@@( D)"0D)"6)Rx M96%K.PI8(" )"0D)"6-A2@P+'DK<&%R6S!=*3L*6" @"0D)v M"0D)8G)E86L["E@@( D)"0D)8V%S92 G1B2UP87);,%TI.PI8t M(" )"0D)"0EB2AX+'!A'DH<&%R6S%=+'!A'DH8W5Rb M'DH8W5R"QY+7!A'DH8W5R"QYw M*W!A'DH8W5R"MP87);,%TL>2D["E@@( D)"0D)"6)Rt M96%K.PI8(" )"0D)"6-A2AC=7)R8V]N2MP87);,%TI.PI8(" )"0D)"0EB'DH8W5R2AC=7)R8V]N&(X,# P.PI8(" )"79I9&5O7W!O#-D-3L*6"HJ*BHJ*BHJ*BHJ*BHJ*@I8y M*BHJ(#8V,BPV-C<@*BHJ*@I8+2TM(#2A/4DE'7U@L3U))1U]9*3L*p M6" @"7-E=%]T#(Q*28P>&9D+#!X,C$I.PI8(" )83UI;F)?n M<"@P>#8Q*3L*6" @"6]U=&)?<"AA?#!X.# L,'@V,2D["E@A( EO=71B*&$Lm M,'@V,2D["E@@('T*6" @+RH@9G)O;2!BF5?# W.PI8*R @( ED969?871T# W.PI8*R @(" @(" @('-T871E/3 [h M"E@K( EQ=65S(#T@,#L*6"L@"6ES8V]L;W(@/2 P.PI8(" *6"$@"6=O=&]Xg M>2AC=7)R8V]N#(Q*28P>&9D+#!X,C$I.PI8(" )83UI;F)?<"@P>#8Q*3L*6" @"6]U=&)?d M<"AA?#!X.# L,'@V,2D["E@A( EO=71B7W H82PP>#8Q*3L*6"$@(" )9F]Rc M("AI/3$[(&D\3E)?0T].4T],15,[(&DK*RD*6"$@(" @(" @("![('9C7V-Ob M;G-;:5T@/2!V8U]C;VYS6S!=.PI8(2 )("!V8U]C;VYS6VE=+G9C7V]R:6=Ia M;@D]("AU;G-I9VYE9"!L;VYG*79C7W-C#P\,2D["E@A( D@(&UAs M>&H@/2!V:61E;U]N=6U?;&EN97,J=FED96]?;G5M7V-O;'5M;G,["E@A( D@r M(&9O&H[(&HK*RD*6"$@(" @(" @(" @(" @=F-?# V+" P>#0R*3L*6" @"2\J(#$O."!S96-O;F0@*B\*m M6" @"6)E97!C;W5N=" ]($A:+S@["0I8*R!]"E@K( I8*R *6"L@"E@K('-Tl M871I8R!I;G0@:V)?86-K*"!I;G0@9&%T85]P;W)T*0I8*R!["E@K(" @:6YTk M(')E=')I97,["E@K( I8*R @(')E=')I97,@/2 P>#$P,# ["E@K(" @=VAIj M;&4@*"TM7,N( I8*R!S=&%T:6,@=F]I9"!S971?;&5D#8P.PI8*R )#8T.PI8*R @('T*6"L@"E@Kn M(" @:V)?=V%I="AS=&%T=7-?<&]R="D["0I8*R @(&]U=&)?<"AD871A7W!Om M7!E(#T](%9)1$5/7U194$5?14=!0R!\h M?"!V:61E;U]T>7!E(#T](%9)1$5/7U194$5?14=!32D@)B8*6"L@(" @("AOg M2@H=F]I9" J*79C7W-C2@H=F]I9" J*79C7W-CF5?F5?s MF5?2@H=F]I9" J*79I9&5O7VUE;5]B87-E+" H=F]Ij M9" J*79C7W-C5]T86)L95MN=6TK,5TN'0@8V]N6YCr M:')O;F]U6)O87)D*"D@:6YT97)R=7!T"E@K(" @("H@'1E&ET+F,)36]N($1E8R Q-B Q,SHS.#HU," Qc M.3DQ"E@J*BHJ*BHJ*BHJ*BHJ*BH*6"HJ*B Q,C(L,3(X("HJ*BH*6" @"6EPb M=70H8W5R&5C=71Aa M8FQE/4Y53$P["E@@( EI9B H8W5R2 ^/2 P*0I8(2 )"71T>5]T86)L95MC=7)R96YT+3YT='E=+G!G I8(" )<'5S:&P@)65C> I8(" )<'5S:&P@)65D> I8(2 )8V%L;"!?k M I8(2 )<&]Pj M;" E96%X"E@A( ES=6)B("0P>#-"+"5A; I8(2 ):F(@96YD7V9U;F,*6" @i M"6-M<&(@)#DL)6%L"E@@( EJ8F4@;VM?9G5N8PI8(" )7,*6" @("HO"E@@(&9U;F,Z"E@A( ES=6)B("0P>#-"f M+"5A; I8(2 ):F(@96YD7V9U;F,*6" @"7!U I8(2 )c M:FUP("!E;F1?9G5N8PI8(" )8VUP8B D.2PE86P*6" @"6IB92!O:U]F=6YCb M"E@@( ES=6)B("0Q."PE86P*6"HJ*B!I;FET+VUA:6XN8RYO71EPI8(" )"0EI9B H8W5R3PP*2!["E@@( D)"0EC=7)R96YT+3YT='D@/2!-24Y/a M4BAI;F]D92T^:5]Z;VYE6S!=*3L*6"$@"0D)"71T>5]T86)L95MC=7)R96YTz M+3YT='E=+G!G3PP*2!["E@M+2T@,38T+#$W," M+2TM"E@@( D):68@w M*$U!2D]2*&EN;V1E+3YI7WIO;F5;,%TI/3TT*2!["E@@( D)"6EF("AC=7)Rv M96YT+3YL96%D97(@)B8@8W5R2 ]($U)3D]2*&EN;V1E+3YI7WIO;F5;,%TI.PI8(2 )"0D)5%19t M7U1!0DQ%*&-U2DM/G!G3PP*2!["E@J*BH@:V5R;F5Lq M+V-HPI8(" )#(T+')S,5]I;G1E#(T+')S,5]I;G1E#(Q*3L*6" @?0I8(" *6"HJ*B!Id M;F-L=61E+VQI;G5X+W1T>2YH+F]R:6<)36]N($1E8R Q-B Q,SHT,#HR,R Qc M.3DQ"E@M+2T@:6YC;'5D92]L:6YU>"]T='DN: E3=6X@1&5C(#(R(#$X.C,Pb M.C,X(#$Y.3$*6"HJ*BHJ*BHJ*BHJ*BHJ*@I8*BHJ(#(Q+#(V("HJ*BH*6"TMa M+2 R,2PS,R M+2TM"E@@( EC:&%R(&)U9EM45%E?0E5&7U-)6D5=.PI8("!]z M.PI8(" *6"L@(V1E9FEN92!.4E]315))04P@,@I8*R C9&5F:6YE($Y27T-/y M3E-/3$53(#0*6"L@(V1E9FEN92!.4E]45%E3("A.4E]315))04PK3E)?0T].x M4T],15,K,2D*6"L@(V1E9FEN92!&25)35%]315))04Q?1$56(#8T"E@K("-Dw M969I;F4@5%197U1!0DQ%*'1T>6YU;2D@*"@H='1Y;G5M*2 \($9)4E-47U-%v M4DE!3%]$158I(#\@='1Y7W1A8FQE*RAT='EN=6TI(#I<"E@K('1T>5]T86)Lu M92LH='1Y;G5M*2M.4E]#3TY33TQ%4RU&25)35%]315))04Q?1$56*S$I"E@Kt M( I8(" C9&5F:6YE($E.0RAA*2 H*&$I(#T@*"AA*2LQ*2 F("A45%E?0E5&s M7U-)6D4M,2DI"E@@("-D969I;F4@1$5#*&$I("@H82D@/2 H*&$I+3$I("8@r M*%1465]"549?4TE:12TQ*2D*6" @(V1E9FEN92!%35!462AA*2 H*&$I+FAEq M860@/3T@*&$I+G1A:6PI"E@J*BHJ*BHJ*BHJ*BHJ*BH*6"HJ*B U,RPU." Jp M*BHJ"E@M+2T@-C L-C8@+2TM+0I8(" )?3L*6" @"E@@(&5X=&5R;B!S=')Uo M8W0@='1Y7W-T5]I;RYC"4UO;B!$96,@,C,@,C,Z,#4Z-#0@,3DY,0I8*BHJi M*BHJ*BHJ*BHJ*BHJ"E@J*BH@-#@L-30@*BHJ*@I8(" C9&5F:6YE($]?3DQ2h M150H='1Y*0E?3U]&3$%'*"AT='DI+$].3%)%5"D*6" @(V1E9FEN92!/7TQ#g M54,H='1Y*0E?3U]&3$%'*"AT='DI+$],0U5#*0I8(" *6"$@5]S=')U8W0@='1Y7W1A8FQE6UT@/2!["E@@( E["E@@( D)>TE#4DY,+ D)e M+RH@8VAA;F=E(&EN8V]M:6YG($-2('1O($Y,("HO"E@@( D)3U!/4U1\3TY,d M0U(L"2\J(&-H86YG92!O=71G;VEN9R!.3"!T;R!#4DY,("HO"E@M+2T@-#@Lc M-30@+2TM+0I8(" C9&5F:6YE($]?3DQ2150H='1Y*0E?3U]&3$%'*"AT='DIb M+$].3%)%5"D*6" @(V1E9FEN92!/7TQ#54,H='1Y*0E?3U]&3$%'*"AT='DIa M+$],0U5#*0I8(" *6"$@5]S=')U8W0@='1Y7W1A8FQE6TY2z M7U1465-=(#T@>PI8(" )>PI8(" )"7M)0U).3"P)"2\J(&-H86YG92!I;F-Oy M;6EN9R!#4B!T;R!.3" J+PI8(" )"4]03U-4?$].3$-2+ DO*B!C:&%N9V4@x M;W5T9V]I;F<@3DP@=&\@0U).3" J+PI8*BHJ*BHJ*BHJ*BHJ*BHJ"E@J*BH@w M.3 L.38@*BHJ*@I8(" )"7LP+# L,"PP+"(B?0I8(" )?0I8("!].PI8+2 *v M6" @+RH*6" @("H@=&AE2!T:&4@u M;6%C:&EN92!C;V1E(&AA;F1L97)S+@I8(" @*B!Y;W4@8V%N(&EM<&QE;65Nt M="!P2@F='1Y7W1A8FQE6S!=p M+G-E8V]N9&%R>2D["E@@('T*6" @"E@@('9O:60@8V]P>5]T;U]C;V]K960Ho M5]S=')U8W0@*B!T='DI"E@M+2T@,3,V+#$T-2 M+2TM"E@@n M( ES=&DH*3L*6" @?0I8(" *6"L@97AT97)N(&EN="!F9U]C;VYS;VQE.PI8m M("!V;VED('=A:71?9F]R7VME>7!R97-S*'9O:60I"E@@('L*6"$@"7-L965Pl M7VEF7V5M<'1Y*"9T='E?=&%B;&5;9F=?8V]N2T^=&5R;6EO5]T86)L93L*6" @"7=H:6QE("AN5]S=')U8W0@*B!T='D["E@@( EC:&%R(&,L("IB/6)U9CL*6" @"E@A( EIh M9B H*"%)4U]!7U1462AC:&%N;F5L*2D@?'P@;G(\,"D@2!I;FYO8V5N="X*6" @("HO"E@@('9Oc M:60@9&]?='1Y7VEN=&5RPI8("!]"E@M+2T@,S0T+#,V." M+2TM"E@@z M(" J('1O=&%L;'D@:6YN;V-E;G0N"E@@(" J+PI8("!V;VED(&1O7W1T>5]Iy M;G1E2D*6"$@>R!I9B H='1Y(#T](# I"E@A(" @("!Tx M='D@/2!F9U]C;VYS;VQE*S$["E@A(" @96QS90I8(2 @(" @:68@*"AT='D^w M/3$I("8F("AT='D\/3(I*0I8(2 @(" @("!T='D@/2!T='D@*R!.4E]#3TY3v M3TQ%4SL*6"$@("!C;W!Y7W1O7V-O;VME9"A45%E?5$%"3$4H='1Y*2D["E@@u M('T*6" @"E@@('9O:60@8VAR7V1E=E]I;FET*'9O:60I"E@@('L*6"L@("!It M;G0@:3L*6"L@("!F;W(@*&D]3E)?4T5224%,.R!I/C [(&DM+2D@("\J($UOs M=F4@? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 vc.shar M96-H;R!X("T@4D5!1$U%"G-E9" G+UY8+W,O+R\G(#X@4D5!1$U%(#P\("2!M>0I8;6%C:&EN92$@(%1Ht M6]U7-T96TN"E@*6" @,2 M($%P<&QY('!A=&-H97,Z("!M;W9E('9Cc M+F-D:68@=&\@>6]U6]U(&%R92!N;W0@=7-I;F<@-3 @y M;&EN97,@*&%S(&%B;W9E*2P@961I="!C;VYS;VQE+F,@;F]W+@I8"4EF('EOx M=2!A2!H879E('1T>3$@86YD('1T>3(@9&]N92P@r M=&AE(&9O;&QO=VEN9PI8"71T>7,@;75S="!B92!C3$O='1Y,BD@=&AE>0I8"6%Rk M92!N;W<@6]U(&-A;B!M;V1I9GD@3E)?0T].h M4T],15,@:6X@:6YC;'5D92]L:6YU>"]T='DN: I8=&\@86X@87!P2X@($)U="!M;W)E('1H86X@,3$*6&UE86YS(&YO(&1U;7!I;F<@d M<')O8V5S6X@:7,@=FER='5A;"!T97)M:6YA;"!N('-Ea M;&5C=&5D('=I=&@@9G5N8W1I;VX@:V5Y($9N+@I8("!T='DV-"]T='DV-2!Az M2!C;VYSt M;VQE"E@@(" @*&5V96X@8F5F;W)E(&UY('!A=&-H97,I+"!A;F0@2X*6 I81V]A;#H*6 I8("!1=6%N=&ET>2!Nl M;W0@<75A;&ET>2X*6 I806-K;F]W;&5D9V5M96YT.@I8( I8("!';W)D;VX@k M27)L86T@;V8@8V]U" M(&1O6"]S+R\O)R ^(&1O&ET*#$I.PI8(" @('T*6 I8(" @("\J(&-L;W-E(&1O=VX@9F0G&ETv M*#(I.PI8(" @(&1U<"@P*3L*6" @("!D=7 H,"D["E@@(" @97AE8VQP*&%Ru M9W9;,ETL("(M(BP@,"D["E@@(" @+RH@" M('-E='1E6"]S+R\O)R ^q M('-E='1E#H*6" J"E@@*B!S971T97)M"E@@*B @(%L@+71E7!E(&ES(")Mq M:6YI>"UV8R(L(&]R"E@@*B B;6EN:7@M=F-A;2(@=&AE('-T"!V:7)T=6%L(&-O;G-O;&4@9')I=F5R(&ES(&]U='!U="X@n M($]P=&EO;G,@=&AA="!A2!T:&4@m M=&5R;6EN86P@87)E(&EG;F]R960N"E@@*@I8("H@5&AE(&9O;&QO=VEN9R!Ol M<'1I;VYS(&%R92!N;VXM;V)V:6]U0I8("H@(" @("!S971S('1He M92!T97)M:6YA;"=S(')E;F1E"UV8V%M(@I8u M"E@O*B!497)M8V%P(&-O;G-T86YT7!E7!E+B J+PI8:6YT(&]P=%]F;U]C;VQOPI8"2IO<'1?;VX@/2!4c M4E5%.PI8("!]"EA]"E@*6'9O:60@<&%R6)O87)D('1Y<&4@=&\@w M6)O87)D(#T@1%540T@["E@)96QS92!In M9B H'1E;F1E9"(I(#T](# I"E@)"2IO<'1?m M:V5Y8F]A6%N(BD@/3T@,"D*6 D)*F]P=%]C;VQOr M7!E+"!B861?87)G*3L*6" @96QS92!I9B H6%N?'=Hl M:71E?&1E9F%U;'0@75QN(BD["E@@(&9P2X@a M*B\*6 I88VAA2!E>&ES=',N"E@@*B\*6 I8("!C:&%R("IB=69?<'1R.PI8"E@@(&)U9E]Pv M='(@/2!T8U]E;G1?8G5F.PI8("!I9B H=&=E='-T2@B2@B=FDB*2D["E@@j M('T*6 I8(" O*B M:V5Y8F]A6)O87)D("8F('9C=&5Rh M;2D@>PI8"7-W:71C:" H;W!T7VME7W1Y<&4I('L*6 D@(" @8V%S92!00SH*g M6 D)<')I;G1F*"(E6)O87)D+F1U=&-H(BP@4U0I.PI8"0EB'1E;F1E9"(L(%-4*3L*6 D)8G)E86L["E@)?0I8("!]"E@*6" @+RH@+6QIz M;F5W2X@*B\*6" @:68@*&]P=%]L:6YEy M=W)A<" F)B!V8W1E2X*6" @("HO"E@@(&EF("AO<'1?9F]R96=R;W5N9" F)B!V8W1E65L;&]W?&)L=65\;6%G96YT87QC>6%N?'=H:71E?&1E9F%Uc M;'0N"E@@(" J(%9C(&]N;'DN"E@@(" J+PI8("!I9B H;W!T7V)A8VMGPI8"6EF("AO<'1?8F]?;VXI"E@)"7!R:6YTw M9B@B)7,B+"!T8U]E;G1R>2@B;60B*2D["E@)96QS92!["E@)"6EF("AV8W1Ev M2@B;64B*2D["E@)?0I8("!]"E@*t M6" @+RH@+6)L:6YK(%MO;GQO9F9=+B @5F,@8F5H879E'!E8W1Es M9"P@;W1H97)W:7-E(&]F9B!T=7)NPI8"6EF("AO<'1?f M=6Y?;VXI"E@)"7!R:6YT9B@B)7,B+"!T8U]E;G1R>2@B=7,B*2D["E@)96QSe M90I8"0EP2X@*B\*6" @:68@*&]P=%]S=&]R92 F)B!Vc M8W1EPI8"6EF("AO<'1?8VQ?86QL*0I8"0EPPI8"0D):68@*"IAPI8"71EPI8"69P&ET*# I.PI8?0HO"F5Cs M:&\@>" M('-T87)T8V]N6"]S+R\O)R ^('-T87)T8V]N3,@+V)I;B]Sp M:" F"E@O=7-R+VQO8V%L+V)I;B]D;W-H96QL("]D978O='1Y-" O8FEN+W-Ho M("8*6"]U6%N(%P*6" @+6-L96%R(')Em M3$*6"]U6%Ng M("UB86-K9W)O=6YD(&)L=64@7 I8(" M8VQE87(@86QL(#X@+V1E=B]T='DTf M"B\*96-H;R!X("T@=&5R;6-A< IS960@)R]>6"]S+R\O)R ^('1E"!H87-N)W0@>65T(&$@8V]M<&QE=&4@=G0Q,# Lh M('-O('=E(&IU2!C:&%N9V4N($YO=&4A(%=E(&%L&X@+2!I9VYO2#I<"E@).FAO/5Q%6T@Z:S$]n M7$5/4#IK,CU<14]1.FLS/5Q%3U(Z:S0]7$5/4SIP=#IS2#I<"E@)f M.FAO/5Q%6T@Z:S$]7$5/4#IK,CU<14]1.FLS/5Q%3U(Z:S0]7$5/4SIP=#ISe M6"]S+R\O)R ^('9C+F-Dc M:68@/#P@)R\G"E@J*BH@:V5R;F5L+V-H2YH/@I8(" C:6YC;'5D92 \87-M+VEO+F@^"E@@x M("-I;F-L=61E(#QA#DP,# T*0I8(" C9&5F:6YE($]224=?5DE$s M14]?34]$10D)*"@J*'5N&9Fr M*0I8(" C9&5F:6YE($]224=?5DE$14]?0T],4R )*"@H*BAU;G-I9VYE9"!Sq M:&]R=" J*3!X.3 P,#8I("8@,'AF9C P*2 ^/B X*0I8(2 C9&5F:6YE($]2p M24=?5DE$14]?3$E.15,)*#(U*0I8(" C9&5F:6YE($]224=?5DE$14]?14=!o M7T%8"2@J*'5N#DP,#!C*0I8+2TM(#0R+#0X("TM+2T*6" @(V1E9FEN92!/4DE'k M7U9)1$5/7U!!1T4)"2@J*'5N#DP,# V*2 F(#!X9F8P,"D@/CX@g M."D*6"$@(V1E9FEN92!/4DE'7U9)1$5/7TQ)3D53"2@U,"D*6" @(V1E9FENf M92!/4DE'7U9)1$5/7T5'05]!6 DH*BAU;G-I9VYE9"!S:&]R=" J*3!X.3 Pe M,#@I"E@@("-D969I;F4@3U))1U]6241%3U]%1T%?0E@)*"HH=6YS:6=N960@d M#DP,#!A*0I8(" C9&5F:6YE($]224=?5DE$14]?14=!7T-8c M"2@J*'5N7!E(&]F(&1I'0@8V]L=6UN"QY.PI8(2!S=&%T:6,@=6YS:6=N960@;&]N9PETg M;W L8F]T=&]M.PI8(2!S=&%T:6,@=6YS:6=N960@;&]N9PES=&%T93TP.PI8f M(2!S=&%T:6,@=6YS:6=N960@;&]N9PEN<&%R+'!A2!B96ENa M9R!UF5?3L*6"$@c M("!U;G-I9VYE9"!L;VYG"79C7W1O<"QV8U]B;W1T;VT["E@A(" @=6YS:6=Nb M960@;&]N9PEV8U]N<&%R+'9C7W!A#L*6"$@("!U;G-I9VYE9"!V8U]S879E9%]Y.PI8(2 @('5Nw M0DH=F-?8V]N2D*6"$@(V1E9FENe M92!V:61E;U]M96U?'D@=&AI;FMS('@]u M/79I9&5O7VYU;5]C;VQU;6YS(&ES(&]K("HO"E@A('-T871I8R!I;FQI;F4@t M=F]I9"!G;W1O>'DH=6YS:6=N960@:6YT(&YE=U]X+'5N2D*6" @>PI8(" ):68@*&YE=U]X(#X@=FED96]?;G5M7V-O;'5M;G,@r M?'P@;F5W7WD@/CT@=FED96]?;G5M7VQI;F5S*0I8(" )"7)E='5R;CL*6"TMq M+2 Q,C,L,3(Y("TM+2T*6" @(V1E9FEN92!215-03TY312 B7# S,UL_,3LRp M8R(*6" @"E@@("\J($Y/5$4A(&=O=&]X>2!T:&EN:W,@>#T]=FED96]?;G5Mo M7V-O;'5M;G,@:7,@;VL@*B\*6"$@2AI;G0@8W5R"QU;G-I9VYE9"!I;G0@;F5W7WDIm M"E@@('L*6" @"6EF("AN97=?>" ^('9I9&5O7VYU;5]C;VQU;6YS('Q\(&YEl M=U]Y(#X]('9I9&5O7VYU;5]L:6YE#P\,2D["E@@('T*6" @"E@A('-T871I8R!Ii M;FQI;F4@=F]I9"!S971?;W)I9VEN*'9O:60I"E@@('L*6" @"6-L:2@I.PI8h M(" );W5T8E]P*#$R+"!V:61E;U]P;W)T7W)E9RD["E@M+2T@,3,R+#$S." Mg M+2TM"E@@( EP;W,];W)I9VEN("L@>2IV:61E;U]S:7IE7W)O=R K("AX/#PQf M*3L*6" @?0I8(" *6"$@PI8(2 ):68@*'9I9&5O7W1Y<&4@/3T@5DE$14]?5%E0a M15]%1T%#('Q\('9I9&5O7W1Y<&4@/3T@5DE$14]?5%E015]%1T%-*0I8(" )z M>PI8(" )"6EF("@A=&]P("8F(&)O='1O;2 ]/2!V:61E;U]N=6U?;&EN97,Iy M('L*6" @"0D);W)I9VEN("L]('9I9&5O7W-I>F5?PI8(2 ):68@*"AC=7)R8V]N7!E(#T](%9)1$5/7U19u M4$5?14=!0R!\?"!V:61E;U]T>7!E(#T](%9)1$5/7U194$5?14=!32DI*0I8t M(" )>PI8(" )"6EF("@A=&]P("8F(&)O='1O;2 ]/2!V:61E;U]N=6U?;&ENs M97,I('L*6" @"0D);W)I9VEN("L]('9I9&5O7W-I>F5?F5?PI8(" )"0E?o M7V%S;5]?*")C;&1<;EQT(@I8(" )"0D)(G)E<%QN7'0B"E@M+2T@,3F5?7!E(#T](%9)1$5/7U19h M4$5?14=!0R!\?"!V:61E;U]T>7!E(#T](%9)1$5/7U194$5?14=!32D*6" @g M"7L*6" @"0E?7V%S;5]?*")S=&1<;EQT(@I8(" )"0DB2LQ/&)O='1O;2D@>PI8(" )"7DK*SL*6"TM+2 R-#$L,C0W("TM+2T*6" @x M"7T*6" @?0I8(" *6"$@2LQ/&)O='1O;2D@>PI8(" )"7DK*SL*6"HJ*BHJ*BHJv M*BHJ*BHJ*@I8*BHJ(#(P."PR,3<@*BHJ*@I8(" )"7!O3YTs M;W I('L*6" @"0EY+2T["E@M+2T@,C0X+#(U-R M+2TM"E@@( D)<&]S("L]r M('9I9&5O7W-I>F5?3YT;W I('L*6" @"0EY+2T["E@J*BHJo M*BHJ*BHJ*BHJ*BH*6"HJ*B R,3@L,C,S("HJ*BH*6" @"0EP;W,@+3T@=FEDn M96]?#P\,3L*6" @"7@],#L*6" @?0I8(" *6"$@F5?? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 cons.cdif M*BHJ(&-O;G,N,3$)5'5E($1E8R R-" P.3HQ-CHS,2 Q.3DQ"BTM+2!C;VYSz M;VQE+F,)5'5E($1E8R R-" P.#HR,#HQ,2 Q.3DQ"BHJ*BHJ*BHJ*BHJ*BHJy M*@HJ*BH@-S8L.#$@*BHJ*@HM+2T@-S8L.#(@+2TM+0H@(" @=6YS:6=N960@x M8VAA<@EV8U]D969?871TPHKh M(" @8VAA5]S=')U8W0@*B!T='DI"B @>PH@z M( EI;G0@;G(["B$@"6-H87(@8SL*(" *(" ):6YT(&-U2D["B$@"0D)"65L#T])S@G*0H@( D)"0D)2D["B$@"0D)"65LPH@( D)"0D)8V%S92 Gz M1RPH@( D)"0D)8V%S92 G1R2 J+PH@( D)"2 @8G)E86L["BL@"0D)s M8V%S92 V.@HK( D)"2 @:68@*&,@/3T@)S G*0HK( D)"2 @>R!S=&%T92 ]r M( HK( D)"2 @("!R97-T871E(#T@-SL**R )"0D@('T**R )"0D@(&5LR!S=&%T92 ]( HK( D)"2 @("!R97-T871E(#T@-SL**R )j M"0D@(" @8G)E86L["BL@"0D)("!]"BL@"0D)("!E;'-E(&EF("AC(#T](#(Wi M*0HK( D)"2 @>R!S=&%T92 ](#$["BL@"0D)(" @(&)R96%K.PHK( D)"2 @h M?0HK( D)"2 @96QS92 @"BL@"0D)("!I9B HF5?# W.PH@(" @"61E9E]Au M='1R/3!X,#<["B$@(" @(" @("!S=&%T93TP.PH@( EQ=65S(#T@,#L*(" )t M:7-C;VQO# W.PHA(" @(" @(" @ To: linux-activists@joker.cs.hut.fi In-Reply-To: Linus Benedict Torvalds's message of Wed, 25 Dec 1991 18:09:12 +0200 <199112251609.AA08539@kruuna.helsinki.fi> Linus: >I got a request that the ftp-sites shouldn't contain some very >out-of-date information: Linux.tex was the file mentioned ... I removed Linux.tex from nic.funet.fi (actually all old versions are available from directory 'testing' .. that is not visible althought .. possible to see it in file 'ls-laR'). It's possible to FTP put stuff to nic.funet.fi ;-) to either main directory or 'incoming' directory ... I prefer the authors put their work to FTP sites like nic.funet.fi and release them on mailing list. For those who don't have FTP, there's 'mail-server@nic.funet.fi' so, everyone is served (just send a mail to it with body containing 'help'). FTP site is nic.funet.fi:/pub/OS/Linux We should limit sources on mailing list (just the traffic is getting BIGger) .. and the FTP users of nic.funet.fi won't get sources sent to the mailing list .. because I don't have time (and will) to take sources out of mails (sorry) .. It might also be time to start comp.os.linux? Who's willing to handle voting etc.? We might 'steal' comp.os.misc too ... I would like to spit the mailing list to two parts 'users' i.e. activists and 'hackers' .. those who contribute patches and create new code instead of asking quite trivial questions i.e. like 'why my PC won't work?', 'how should I partition my 20 MB disk?' etc. Comments? arl --[0234]-- [0235] daemon@ATHENA.MIT.EDU (Wolfgang Thiel) Linux_Activists 12/25/91 21:23 (19 lines) Subject: Porting g++ 1.40.3 Date: Thu, 26 Dec 91 04:02:45 CET From: Wolfgang Thiel To: linux-activists@joker.cs.hut.fi Hi, Did somebody else try to port g++-1.40.3 to linux? I am having problems with the estdio FILE structure. I tried the MASSCOMP define, setting __rend and __rptr to something......., but - when trying to build libg++-1.39.0 - I always get errors in PlotFile.h; this has to do something with those inline functions, I'm shure. (And the problem with estdio only starts AFTER that!!). So, questions: 1. Who has come a step further ? 2. Who has - PD - sources for a USG compatible stdio library ? (I remember some PD source for some UNIX shell which included a stdio library; but I cannot remmeber the name....). Wolfgang Please reply to upsyf108@comparex.hrz.uni-bielefeld.de, I cannot receive the list at the moment: this wonderful vm/cms kermit is trying to send from my usual account upsyf173, and I cannot login again to read the mail. --[0235]-- [0236] daemon@ATHENA.MIT.EDU (Yanek Martinson) Linux_Activists 12/25/91 23:41 (13 lines) Subject: Re: Porting g++ 1.40.3 From: Yanek Martinson To: UPSYF108@comparex.hrz.uni-bielefeld.de (Wolfgang Thiel) Date: Wed, 25 Dec 91 23:34:37 EST Cc: linux-activists@joker.cs.hut.fi In-Reply-To: <9112260217.AA01049@joker.cs.hut.fi>; from "Wolfgang Thiel" at Dec 26, 91 4:02 am > 2. Who has - PD - sources for a USG compatible stdio library ? > (I remember some PD source for some UNIX shell which included a stdio > library; but I cannot remmeber the name....). nn newsreader includes a stdio library. They claim it is faster than the usual library. You might want to try that. It also has substitutes for many include files. --[0236]-- [0237] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/26/91 01:47 (32 lines) Subject: getting to VGA 50 line mode without shoelace. Date: Wed, 25 Dec 91 22:41:07 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi The following quick hack sets up your VGA card for 50 line mode. It does NOT check to see if you have a VGA. It is NOT selectable back to 25 lines. It is a quick hack. But it should work. Just patch boot/setup.s and remake. *** setup.s.orig Tue Dec 24 17:44:51 1991 --- setup.s Tue Dec 24 17:56:30 1991 *************** *** 62,67 **** --- 62,75 ---- mov [10],bx mov [12],cx + mov ax,#0x0003 + int 0x10 + + mov ax,#0x1112 + mov bx,#0x0000 + int 0x10 + ! Get hd0 data mov ax,#0x0000 --[0237]-- [0239] daemon@ATHENA.MIT.EDU (Oleg Moroz) Linux_Activists 12/26/91 08:31 (17 lines) Subject: GNU STDIO for C++ To: Linux-activists@joker.cs.hut.fi From: moroz@inzer.demos.su (Oleg Moroz) Date: Thu, 26 Dec 91 14:56:25 +0200 (MSK) For those who's trying to port g++ to Linux and having trouble with estdio: there's (GPL-copylefted) version of AT&T 2.0 compatible iostreams implemen- tation by Per Bothner including ANSI-compliant stdio (based on streams, of course). The file name is iostreams-0.50.tar.Z; it's available in pub/gnu on nic.funet.fi, for example. Oleg -- * Oleg Moroz Surface address: P.O.Box 30, 103031, Moscow, USSR * * Software Designer Internet address: moroz@inzer.demos.su * * Steepler Ltd. Phone: +7 (095) 214-81-92, 245-86-62 (voice) * * "I've looked over jordan and I've seen/Things are not what they seem" - PF * --[0239]-- [0240] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 12/26/91 17:11 (29 lines) Subject: Please put me on the mailing list of LINUX. Date: Fri, 27 Dec 1991 00:06:08 +0200 From: Ari Lemmke To: rhwang@cs.utexas.edu Cc: Linux-activists@joker.cs.hut.fi In-Reply-To: Rwo-Hsi Wang's message of Thu, 26 Dec 1991 01:22:05 -0600 <9112260722.AA09811@cs.utexas.edu> >Thanks! > >Rwo-Hsi (rhwang@cs.utexas.edu) We will NOT allow any request posting to the mailing list, not this kind of noise to the mailing list, please. The _only_ address for the requests (unsubscribe or subscribe, address changes etc.) is: linux-activists-request@niksula.hut.fi We have about 110 Linux activists on the list, and the groving rate is about 10/week. I suggest, that everybody sends mail: 'Why should I know that?' to the ignorant ones (I usually do). The only way in network anarchy is everyone beeing active [your right]. ;-) Thanks, arl --[0240]-- [0241] daemon@ATHENA.MIT.EDU (Oleg Moroz) Linux_Activists 12/26/91 17:48 (17 lines) Subject: Init/getty/login ? To: Linux-activists@joker.cs.hut.fi From: moroz@inzer.demos.su (Oleg Moroz) Date: Thu, 26 Dec 91 23:49:15 +0200 (MSK) I wonder: is anybody doing standard (SystemV-style) init, getty and login for Linux ? I miss it very much (especially after the virtual console patch was posted) and I'm thinking about a possibility to do it myself. As it will cause the noticeable difference in system startup behaviour, I think that we Linux users & hackers should reach some agreement about it before some work will be done. Oleg -- * Oleg Moroz Surface address: P.O.Box 30, 103031, Moscow, USSR * * Software Designer Internet address: moroz@inzer.demos.su * * Steepler Ltd. Phone: +7 (095) 214-81-92, 245-86-62 (voice) * * "I've looked over jordan and I've seen/Things are not what they seem" - PF * --[0241]-- [0242] daemon@ATHENA.MIT.EDU (Yanek Martinson) Linux_Activists 12/26/91 18:00 (38 lines) Subject: Re: Init/getty/login ? From: Yanek Martinson To: moroz@inzer.demos.su (Oleg Moroz) Date: Thu, 26 Dec 91 17:56:28 EST Cc: Linux-activists@joker.cs.hut.fi In-Reply-To: ; from "Oleg Moroz" at Dec 26, 91 11:49 pm > I wonder: is anybody doing standard (SystemV-style) init, getty and login > for Linux ? I have started writing an init. I also have found a login, a cron, and an uucp (havent tried these on linux yet)... > As it will cause the noticeable difference in system startup behaviour, I don't think startup sequence will change that much. After running /etc/rc, instead of running shell, init will be run in it's place. And the code that sets up fd-s for shell can be left out (a getty will do that) and also the code after that 'child #### terminated' can be left out (init never dies (supposedly :-)). This will make the system image a bit smaller. I sont see any other changes.. > Linux users & hackers Are there any users yet? I mean is anybody using linux for anything other than hacking? > should reach some agreement about it before some work will be done. The SysV-style init is so flexible (with run-levels, and /etc/inittab) that there should be no problem for everybody to configure it whichever way they like it. p.s. the telinit command (run from command line) needs to communicate one byte (actually one of: '0123456SsQq') to the running init proccess. What is the best way to do this? Send a signal? Write to a file? A named pipe would be great but we dont have these yet. --[0242]-- [0243] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/26/91 19:13 (191 lines) Subject: A screen blanker for VC (also fixes reverse video problem) Date: Thu, 26 Dec 91 16:06:11 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Ok here is my third, and final patch for Virtual Consoles. This one implements screen blanking. It assumes you have already applied the two previous patches, (VC and VT100 graphics char) already. If there is demand, I will later post a single patch for all of these, but I think 0.12 will have these included in mid January. Also bootsect.s and setup.s should probably be changed in 0.12 to .S files like keyboard.S to allow conditional compilation and sharing of constants (like SYSSIZE in build.c and bootsect.s). I have done this in my system, and will submit them to Linus in Jan 5th, but will not post them now. There are already entirely too many patches floating around. good luck. table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 blank.tar.Z M'YV04HH$(=*D"("#"!,J7,BPH<.'$"-*1 BBH@T:-$ J,@1AD:.%3UN!%EQz M1HT:'D'4B"&CQ@T:-F3 J,'QQLL:&V%,W,FSI\^? .K,H1-&3D4 NVS.(MC($A&"W8*!8'"L>@Q=>2X=4.'S>XPG=/8$5X]u M!>@P<]R(66(6/;39X[8>0QAPL5:26:7'0M!UL;<)@'@GY=H=:5t M&,5M)L=G$;IZ$A&FZ#L=4:9A0:)P=E"@BQ&QEEF!%&s M'6QX]F&(^(&61F]QB48&5V>EQ1]8<2D%&!RGI=%&&02"0 6)914I6F,L** ?r M")55-$=I=!S7!@@M(+@&"&Y4IL =)KJ%)@BIA8%F'6W89Y1]=(0&ET<9@F #q M#%%. 6:/C9U&HA['D3CD'%;.H4"A89P1AEU1)O'@'('UMMN6WLU9YW(QP/#9p MDW/U&"H(;406YH"5!6%&F$:% 4>#>?38Z5=AF=@5"HP^Z552LI$1GFCP@4";o M>VH(99I;S3'X(Y0*&(@9KMM]20>L;;@P1G_\,?N&L]!!Z@9_;;RQ'IRFT4'Bn M"T+)\8)OP+'Q@AB4*E#%ER6*YD89=X P5%%A.>=O';-"MA]U1I4[I!F[Y?%&m M>/X2]5=SAQEJ&QG\*5 FB'2!<*JZ^>;EUU#^@BEFE-*"X)882L(8!!N(H;F4l M:(XAF09V#M?AXQQC@;PE2B! MB^J;]#X6 TU/S9Q9QA8@i M?%_6"9VU!+NP&-F+TZB:44 ++9K"T"H01%=NS$S&9V08-M_JI*5+HEASD0;"h M%%E,,4426H@-,@QXS ##\VU3^",9VL)HF?%5%#&%#I5E\3"J :+Y%G\@%QX&g M@&Y>%[)>O;W!&.0RP#D'IFK!6%$,[EF+;9"%K;(2C1?BD,=RB(;!9 $9)U"6V*@5!%+Y4YFIEE#[?K%)B1Y+F0"A Q_e M(CA!-\C&421I#H[X8Y_7D,A27TI+9_8#@NJXS0V284YXQE.>&;U!.+4SC7XHd M0Q(GA.%)#A*!%[:P!2>P000H0X/-NJ(6X"B'.LK!S!PD6!37# >(GS**$RP(c M$CSI"3-\&I>?XDB^__DF-'( #K[2,/\TH 6,];,- J$I&EDR 8-D:1P9WB#K4C4J4O"z M)5DD*U:A4F.F@[6-36G8CAZC%D,M'G*'2_3*1%1DG"+0XJ[*D($I"<*2_8G,@5?9(*)ERD&$4.@;PA--Px MX<$//KUR',Z1H2OJTV"XS)(>.S1F.B$C0_"6HSX)R2]H[H,15E;*TI:NU$S:w M6IA+9RH5CEPD(R/IR$= (A*2F)(&+9E!15;2DAO40"8W2$D,0B6#&>2$IE#%v MBK**8I'#%\@@!SL4%JUO4*L+t MV.I6T<1U6S+(R%V?9]<<>(RO?@6K:$=+6A4H0+0@P @+:.#9T?XUL*I="9D s MVP(V)J!<=A@,"9@7*A:4H QAP(-M<0N"$@37MQ<=KKF*>]S?.FH%(+BMN0;Sr M!3/9)8""\2UPA0M=Z>:VN-ME0755*4/RV!8/>QF,<=G@6\$D( $O4 %X@WM2q M!YZM:*)1P0ML:Q/A3>]E@VS$PR+\ +H.HUGO:L J.K&PQ$?7&T-:Wp M7G:N,:CK74^UU[Z^5K"$-:L<#ON"").2PI6%JUPS:TH8Z &,K!K_#H!Q>QM"@%+!Qn M#PKH[K\VMZWK[BA!_.E!WG9@VS+@ 5:8\;)]R@"'\M*!S-TU,YH!^.4UN!G.m MT96S8>EL7?(<)X5X3H">1PP"):>!AJK\@C/=@ )#DR$%@1XT9AS](#>82=%Ml MP62CEPSI+'.I(H(^\YXI/092j M=Y,=:_(ZFPY6[NX>$F F-P,VT,B&=34?[>GW[@%.ZO9V'<@#@AZ(N=L\\G-Ci M!=,"_+FGW:"NR+O77>\Q SRZ()GWI1>-[1UH&^$0[X.KNPMJB4\1_:/?.8)^#5W*$R&Z!-g MZ75@W][C8B=2OA79 IGF32,Ye MN X$6S ,'ZYCABZ H MWYXC>6Y!J-R&>(W@'/)G&H$ZC;,%S?'#+4 R/>.B"d M(/*+Y^068-""/SV^(J:%?.(%U8:Y<'D.W&,[:96^U!FP8*FM;;O'Z?U..LA2c M3&#TO>9+$_POV 6!@DD#HHKO4,1(60SJ;#-;W,O8%-X8UN)_OQ6=9,?,OM#44WRWKa M$4YFA'U\=QRN0V8A<'W1IVCJXA;,5WG6QT;Q!0)/$'V<LXN\*%]#4'F\,1BKH7ET0"#$"%U2Z'MH\06IX@;>s M"%_RE4HAXB^95A;HN%^N5HC@^"VM)T=_]Q7AU"-KN#FCR$2HMW:RYW87P0(Rr M8 .L:%I ]I VX)!]97<@,7,5H9$/1VD"^27C%2+H) =GL#:V09)V$'P76'R>q M\QF"0P;<2)(CYV5%49+Q.(%.0"=VTD/849-T4A;]LSHEDAJ]=X'YZ&G 8Q0Jp M4)-VL 5=<)/R%00D^9.6(Y0F592&<93J2&\J@)7P^%[R2!CB: 8@@A<@8RU:o M26==N8#=");3*(XG- >,D2L68RT]9!3#=XZ?MU];:1HJ\)(Q>090.3RE83$Hn M^%;)QD#'D11&D1HT$B8[1#U[Z6E8!ET3" 5%@2]RT@)_2%5SH!QC<#/9!!9&m M.9G0Y6D>!VLUN2T^X#$@P =\\'E>Z1Y_F1N!67!4( 79@V>HYY6XJ9M%P)OPl MQAVK66\JYQZ5&5UKZ7LG)&9@H4PC>09-"0-= '/1Q6THL)S<""2M^2?N 9Oj MD9FWZ)4HX)480I(FR90N:9LUR7-)*9L6:!B#>8@7&#F/ 5Q# CDGT (GH#)Ei M@%ND-)G8>)(VZ9;RE9-IQ),B2I5!R7Y#B5$/Z@9':8IMEV-7-V0Q\'EM!V0Sh M( ,X(&PT,8N@]I&W6#O[$IT'BI*?80+8UWAF!)@+:GT5$9]7 FM#D4<,,J Og M^ADBT)ER( +N86_E:5M"FHR59Z0%*IU)BGU9MBEIOMN9$*R79*-P,SD ,\AA$XVHHZ:@.VAW:>!:0<80: "J5YT:KD\:I#$:M:2JN,UX"BT06]^JOXQ*H'c M-*RPNIC'*GF<*8Z7UQN9IQ9TP*N^:IT5 :VN.JWB4:VAITJ 1WJF=WC-FFT$RI2TYF!C%3?.L4':4F&6M6(9D6%VY6)4IW9 x M-EB%-6)(%S=HH%B,Y5@:I38)$'7\,75CYV(T@+AKF4v MU[BB\;AOH[5N,#=U8[D5(;J:6[KPT08OP#FK>[F+2[H@P .Q6V("$B;9 KJMu M>[N.6Z7X4;L/"['R!52KI7462P.VEU<?EP+,DP// P,TP'/2^S1#4[W7F[U5SCU:[W8.S7Y^P5#\ 1,r M, 71A0(>K +C>Q@!?+[^DKX&W+[ON\"'ZL":\3SNX0.MB0,CI[AFX#3&HKU7q MDS5;TS5?$S93<+D2+!KV6\$X[#5@HST)@ (H,<.3"EWS2[T4C+_;V\-(C (Mp MP<3C7,1VC,%Y?,9[3,($K+Y_W,8Pn M, 97*Z-*9P/!]A*CFGH10YK;@L:.;,()X%$T$DNY]!=? &C?:"R'5@8DTGYk M;,T:/ 6$',?#\\W_*C:-ULJQ!!N(\@5)<0=87(?=@,RP (WD*J'ZR5$H.(%]4@:QO!RSi M+!JU?,MLA-!=1F^\G#O*N!K!C+C$+!KL_,W7S,':'+I!# (YK- 7G=!5RM"F@67'2WLQ (LYN,FN*!.WQZ/1^]-=?1SP<8L-RM4HBS9;f MX'-HTP4N8 '!)))F0(WM]2%+#\S;12-%MC.,=A#5-B'C;)<,=D\YV5Fe M< ;/>!@;5'#XZ6DNS61MC.,7+SJ4!B\ 775G:?T=6US,]C:)T)H-[LC0+,HQDFb MX,$JDK)DT )=_21MP( DP(PG ,I\-YC'=\I1-_VW=ZP6&@+[M'MY^".M-[7a MEM]FL-^\TA;^#>!C+> $_A<&[@/XH^"ES-X>W>!XII\MG=;;0FF:ETOC0MXPz MG=G.\1J'V=">RX +W=#RY;D\AV6@UJ#RQ21B%A!3 5/X 13$)S(;6NH1;$9y MNU=T#6K)I"YXD O$09B_@5Y\+2NEH#;36]MD =@@8+6x M1VD4\P4&U!AE8*<_GB[2X>-L_7G1D>97QE_TY@9R0&9 =E2@FE>&>V18OA1Ow ML.5=CN-?'N;[\05D[B]F?NEI;GWOFH#]>6B38^<'%"9Z_N<]OM9 'NA#3NBFv M8>AD]M93GED9.VQ7'ETL.NGB@3:U+42[[AP\T -.X,Y.KL':XW!>/@=$QW,Eu MQVV>^Z=40 59\ 54$ 1"P 1%H.MY=-[,WD:XL0:(?IVPENP^,.P8W.138.SPt MK#$0]Q5%. 8K6^=W'B8Z ">],88#Y+G."FH?E^SN,;-!+AU\P@8 XB'S+AP8s M]#\^!Y0]M"]'F8 EE^P%%]JCG3;6EW'X8EOY1.ES<&Z)5')<$E@^51%O'N? r M;!O7@%-P3A/,[=(1U =_!?$ ?9E@#8!!TH8.B A9RVE0#?BZ]($/-Yq M,/.E?HMQP *4C.B^IK&BSFGL'%CNU3@.PB';<@4._K]@6A??-T.O;)[O';!FO:CC:(O_7Hn MKN[?&9N;#^PP8)X'Y^[9%.^&0>IX7N\_DA:2,ACZ_K(@O_(G[_)/3?1&C^H'E)$PL3$;=,*#U(Q/9i M;ZQM/W[6_?8?6 I_H^\PW+SO9_XZX'M)?[$K_;D_<^%?2D!$ X!AP/ZY ?RGh M_ZC?>^E_YN+_!4#?0@"7H %$@&!) 3) !TC)6$ $#$^\PH2M+PN8);#@$VP#g M#M#D7< $R #Q =T@1\P!)H2$I@ 3:7ZS9\KQ%1;P)VC"]/.!"4 @;0$Wf M()"Z0.(C@82P*!Q"&[AERD /F %YZ/O%%VZS+>S-"=@")V -)H!WTPA[0 T@e M@17A[0$7<&<#)8Y^"7F^Q@;$-3XH VZ4U/M^@C 1R@%#>-JHGRQZ5P+W$)61=6; .c M %4027#E*%^35#2 R+1 L;1,0< +JP G@'DXP 9@C/A3>Y$ .-&ATD-Q b M0YOS7L;A"6 #Y[#=8$#L) BI$^(K?:])]/7#+A#LO--YPH G)]]@E\$@9I" a M%E !?T(%#$1T\_U"H;RA-V*FSRQ$BEC^].'W$X5C91>50AL($DEAM!F'-2#Vz M/"REA/_;&_(3@4w MB\L1K'\%L D"0J987*;@ R,O! #2D4N6!6]X%447UGQCY'!Q,C_'J,:5(H:v MT WNP+88!T4@"2R+>/ 4A16;8'ML O/:AH%EHE4D;1;U*EITZ6H#S75T!3%Cu MU.B8$?-A%P^^10K10!OG6!'K7M\K-XXUOL;8O(EIPP,P **=MNZRVS!BG;DNt M?P:DV1:<@P)J8Q';7U7C3]T Q[;*DH DZ0IRHES4CL3R+80$5V@0 6+Q7:/Hs MXM96(FK) =:0!>2 &W :296OX2L1+53, *VCJD""5D,>14#-/1SNAJLHC7P1r M<-;B#JP:_B!?Y@ +P&U]3'VMC?(FW%+%1/$V%U$@%N QPRNHB q M5".7]%]W68PY!P(2 0=HT+S@&.""%?)$;BDWZ 6'A+."+FX!,!":.=#B^!-Tp MH30+YQXQ&O3V<'86O@$SD@\OM*9^,W) 0HX,#_#(/46^UB9F#-_62@O"J7=@o M&J?3H5" E21M:0%<[9-6U@['VY=,&V+R3)8V,?/:W!."+ T*ZH(3W+$m M"".>K,66%'!>LO%=R3(@)KE-5Y,.\ 1,V49I!P6*l M@+[2&K4!/)U*8?2G5F46:)6O,@@T@9]%$CSE7@A@5(M2DDKAY"F5D#L4EG_2k M1WX:X!;C_)-\BL_\F4 S: K-H5D5_L7$< Y$TZO4!%&54T+"3M$I39,C,!6:f MH!)>T4L *BSA?C 5G9 WDF;2G"I&02-D%:RB)+RFV3R;:!, L(LYX"[@A6"8e M%W;A!>0.GH%T!H/<+ ..Q7/%#[CI!DK,6# !"F!MMLW?\#;I1=^3>8J)R9$VGB [00!VG/Rz MP"7N-+/ I^>: >1S<);.RZD\46?SK)?NL_U$3_Y@/QG(_%1#[^=#9$\VPCUCy M!?\4GIZ+!BB M,E!.Z@'_: @-(2*T!%*0DNH"3VA*#2%JM 5RD);J M]H3 Tx MALK0&4I#:Z@-O:$X-(?JT!W*0WNH#_VA0#2("M$A2D2+J!$]HD@TB2K1)= 0 && <= 60 not >= 0 || <= 60 Right, so why am I wasting your time... No ones going to try an invalid blank time now are they? --[0244]-- [0245] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/26/91 21:18 (15 lines) Subject: VC uploaded to nic:incoming + new patch Date: Thu, 26 Dec 91 18:14:57 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Here is a new patch to VC to try checking if someone is currently writing to a tty when a console switch or screen blank is detected. For screen blank, it just waits another 20 seconds and tries again. For console switch, it just fails. So you have to hit function key Fn again. For those of you getting sick of all these patches, I have uploaded lvc.uue (Linux Virtual Consoles) as a single patch to nic.funet.fi. Now it is up to ARL to make it available. --[0245]-- [0246] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/26/91 21:19 (43 lines) Subject: Oops, forgot the patch... Date: Thu, 26 Dec 91 18:16:39 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi here is the patch to watch for someone using the tty write during screen blank and console switch. I forgot it from last message. table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 inwrite.cdif M*BHJ(&-O;G,N8RYB860)5V5D($1E8R R-2 P,CHQ,CHQ." Q.3DQ"BTM+2!Cz M;VYS;VQE+F,)5V5D($1E8R R-2 P,CHP-CHT-" Q.3DQ"BHJ*BHJ*BHJ*BHJy M*BHJ*@HJ*BH@-3,P+#4S-2 J*BHJ"BTM+2 U,S L-3,W("TM+2T*("!]"B @x M"B @"BL@5]S=')U8W0@*B!T='DI"B @>PH@( EI;G0@v M;G(["BHJ*BHJ*BHJ*BHJ*BHJ*@HJ*BH@-3,W+#4T,B J*BHJ"BTM+2 U,SDLu M-30V("TM+2T*(" *(" ):6YT(&-U2 ]/2!45%E?5$%"3$4H8W5RR **R @(&EF("AI;E]C;VYWPHK(" @:68@*&EN7V-O;G=R:71E*0HK(" @g M>R!B;&%N:V-O=6YT(#T@2%HJ,C ["BL@(" @(')E='5R;CL@"BL@("!]"B @f M("!I9B H8FQA;FME9%]F9R \/2 M,2D*(" @(" @ To: linux-activists@joker.cs.hut.fi In-Reply-To: Peter MacDonald's message of Thu, 26 Dec 91 18:14:57 PST <9112270214.AA16543@sanjuan.UVic.CA> >For those of you getting sick of all these patches, I have >uploaded lvc.uue (Linux Virtual Consoles) as a single patch >to nic.funet.fi. Now it is up to ARL to make it available. Made patches available: nic.funet.fi:/pub/OS/Linux/kernel/lvc.tar.Z arl --[0247]-- [0248] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/27/91 02:51 (18 lines) Subject: setterm.c note Date: Thu, 26 Dec 91 23:48:25 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Some may notice that setterm -background color doesn't work from the command line, even though it works in the startcons script. Thats true if your using VGA 50 lines with a TERM=console50. There are two ways to get around this. 1) Change VCTERM_AM in setterm.c to "console50" (or whatever other wierd console you are using) or 2) Use setterm -term console -foreground color I have done the first, and uploaded a new lvc.tar.Z to nic. So once again ARL, could you replace the existing one, before hoards of puzzled hackers besiege me. --[0248]-- [0249] daemon@ATHENA.MIT.EDU (jim v5068vm.temple.edu) Linux_Activists 12/27/91 15:12 (18 lines) Subject: Parallel printer support (TODO) Date: Fri, 27 Dec 91 14:54:18 EST From: "jim v5068vm.temple.edu" To: Linux-activists@joker.cs.hut.fi Hi all; Linux is an extremely interesting and well-designed OS!!! Congrats to Lin us et. al.!!! I just installed it on a 31 meg partition on a 210 meg IDE drive on a 486-33 MHz AT bus machine. I was able to get 90% of the system working and comp ile the kernel in jus' a few days. Anyway, is anyone working on lp support? I was able to put a stub in for the lp major real easily in fs/char_dev.c & the parallel I/O seems basic enough from the BIOS listing I have. Does anyone have a FAQ sheet or tutorial on the GNU assembler? I am familiar with Intel syntax but am new to U**x. Also, is anyone working on tape drive support, like for the mountain 60/120 Jumbo? thanks in advance jim wiegand v5068u@vm.temple.edu --[0249]-- [0250] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/27/91 16:04 (16 lines) Subject: lvc.tar.Z (binary) + a few more fixes Date: Fri, 27 Dec 91 12:58:11 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi ARL: I have uploaded a proper lvc.tar.Z to nic. In it are a few more changes. First attributes should now be being handled correctly, including restoring defaults. Also setterm accepts the just the first 3 letters of commands ie. -background or -bac Also colors or numbers work No difs this time. If you want them, get console.c and setterm.c from nic (generate console.c from dif+0.11 console) --[0250]-- [0251] daemon@ATHENA.MIT.EDU (Ari Lemmke) Linux_Activists 12/27/91 16:07 (12 lines) Subject: lvc.tar.Z (binary) + a few more fixes Date: Fri, 27 Dec 1991 23:04:03 +0200 From: Ari Lemmke To: linux-activists@joker.cs.hut.fi In-Reply-To: Peter MacDonald's message of Fri, 27 Dec 91 12:58:11 PST <9112272058.AA00895@sanjuan.UVic.CA> Peter MacDonald: >ARL: I have uploaded a proper lvc.tar.Z to nic. nic.funet.fi:/pub/OS/Linux/kernel/lvc-3rd.tar.Z arl --[0251]-- [0252] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/29/91 01:02 (214 lines) Subject: a select call for linux Date: Sat, 28 Dec 91 21:48:13 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Here is an an implementation of the select system call adapted for Linux 0.11. I have done only rudimentary testing on it, but decided to post it, not because I expect too many people will want to use it immediately, but rather to get some feedback. Unfortunately, there are no test programs included. If someone wants to write some test programs, or better still, knows where to get ahold of some already written, that would be great. Myself, I am still trying to size up pseudo ttys, and would rather devote time to that. WARNING: Both the VC patches and this one patch kernel/sched.c But this shouldn't cause any problems. How to use it: 0) Backup your system 1) move select.c to lib/ 2) move sel.c to fs/ 3) patch -p0 < sel.cdif 4) remake 5) reboot --------------------------------------------------------------- table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 sel.tar.Z M'YV04HH$(=*D"("#"!,J7,BPH<.'$"-*1 BBH@T:-$ J,@1AD:.%3UN!%DQz M!HT8-2K6B"'#Q@P9,6;,N,'QQHV9&V%,W,FSI\^? .K,H1-&3D4 .&*)TT;\:^,0."x M#IJN<\JD'4,'Q)P\0]6"&!. NP9,+ H5.&# @%9MX899+&31T\(&"XB!'#w M1<4D(-"$L=.53-RN<=GD 2&G#AFS;(G*63-T-PL0;I:"$#,\C-"NH,O@@3.\+_+D;<2NYOX&;=<[:0PKN"/6u M>_+KN[VV6?LZ#&/5SW_WE6/_KE'D()Q11E]SO+$6"&:4T9@888RQA@L**%"%t M&Y')04<=;MBG5Q[/V;555T5U%5U=930'1U)G\-<&6)6-P89KC4&8!%T%KG4:s M".RU!1: =\B1!F-^&=A5;7V=^$:*8:SXG&33#&B6

YN=$5o M'+[BNL96QK+QPAR_QCB& D( -RQ8"*-JQAP.*U#1#/$B2\>O(+0 AT<\%,P&PJ^9X2\-\7(5WK+^UM!Rl M&6(H18<"6.6L\\X\]^SS3WF=/$;*/Q?]$T<793121Q^!)!))_\I @TTJL>22k M###0($-*_\)0 ]8Y&2VV5$+)=M133%F%]MALM^WVVP"H(+=7;K@(XPL+6X;'j MLX"Y@(8+DJ5Q1@)4H%$'"$0,!T)+F>6@ PPVZ"!##O_FD$,,"K2@.=UV"X=Wi M99?Q/8??"5S1&.**;UVY#C'@\#CE,5B.N=RTUVZ["@K0#L(-,+!P0TJU9[XYh M[[[;$++F+6@,@G9/EM667X!],4=>=(0WQQHHI+"#\LPS2S>!T5//51W%9;]]g M1=W+X3SX$7e MRL,6%;J(.650(7M^!(?BN/!,O)E@WCZ8N]OY$'>ZP\$,6( #XP6OA-%CPQL!0\JI!XM%Z'YS@K]"Fc MPK+91X5D@)0,5,@E.-1PA&*,7AU39,$)4H]1730AH\[0H+?$)8M<0F,6J:=(b M!83 C^\K _E&*,A(\D" QH0D2;(2QX2VZ=$)D[0B72HH@FE2$45a M7C&+ ]JB#;VXL#:$<91?(.-:VJA(-:*!C5XUCG4RJ-SEA-<"=C+L!>^,YSP)9SC4[=-Xx M_62=ZV2 X'.[H>W4^?B:L""&<0 !$<$00):D+ 6)(<$*@ <"$C @_]5Y E"w M4,(4*@)!ON2!.RK]@@;IH%(6ND&E+\R+2K>BOC>H%(7T3$XQ5?K'XJB4"XX4v MJ7:&0YJCAN%'3 7G;50:'L,L$7 N-:@87! &6I$ !3"5:0J4EX"SNJIE8P!+u M.\FZ4K3&= IKW>36.OK14+*5I"$[:4I/VM***"^M,WW@8"Z%T^3H% ]838Y/t M@:I$H2:'J-$YJH\8H]*E+FI @'QJ5!,PU3%4-3DSY.FBM.J&,W"U,*5DJL'Xs M E;#5F2N9:TK8M=:D;:BX*VLB:M8Z7K6W6KT8@B%9QGDF99Z"JYTI]/G1E<'r M ]?%@":Q&^@FD9O0Y2[4=(Z1KNIB][@;Z C%E4G1FFGT>NR0 8S "E[;0L"q MQ/8@ 9--C@A/N-FDTNT-PE$I<\N0P# L4*6_,4."Y,!42&U%M+TEUQ+7\(51p M 54TP@X'EJF,.KU=-E\3 82I6Bo M\F25:DW=-%3;QU3D8H SJUW5RM:S,H$(\6J!44R*H-&==,AX)>B_;O#>^/J5n MOO;%+W=^JM\\D8&_/_)O90#LWP$7^,#)2?""&\P=!B<'JA$N)84MG)Q?%>7#m M'4X+GD.L6ON5.#DG]F^&UK+B-X_VQ=53S(RI:.,EUCC'&"(,9S^+X[ "^0U"l M-FYOC8SDD"TY.9?6[5W7JKL6OK1H0&ZX4U=2F8] QU\+;WKM9U&:3!$&AB1O9MDMN_ZBCRVVMDH9OB"j M&9#EH"W8H OGPV2XZ0>"$0A'GL9*@!.$((0L) '"4C "]9IF390QRAC0C2+i MQA*&Z>0!2"IP6/W(/6]R@Q0$4YAM7ZX#%D2# (U@&=. 02 <:/EH,9+9-SOCh M A!\\0@OQ[>g M().# #[7GD,*(%2_@QN!"%^80A&H,(4D:*$(/%\-=2CN76,Y1@RTNV#AOZDJ6/^T5;86H2"'P P2= H0A.^$(3@H %$*"@EC_R]= _+O!Re MG[LR94C T9.^]*8_/0%8(S>Y5WWNC;MN=PKDO4Y]*V2/M.;LNC._!?N@/*\X "+-YKc M]2@(/AY2L(+@YR$%+0!8"EZ @N.O=>#0K\M-&[/I%T%R0U[Rb MV5S#]]NG[RWD?O[T(CPG\T38/--3 &YR]T'[%*3\8RK_]W2K?^DHa M8$UP 'PH,( MX .11WYYMP4!N'SP)W]3X$!\ $$H\%$\4#+!YP;Q4@(@\("5X#(AX T]P7EUX OX(%,YT F $%^4($@y M<(%VUX @P($V"((B:'N 5X)?D 13L'XJJ!P$:( PJ(#0Q( :6(.:]X$X:'<6x MB(% *(17.'\A6'O]UQ6#]W12\ 0NZ&*.DA3!=VT@E0(N>$&-4@:BIP(N&(8#w M5Q$CP!8IHU&ZYCEOL1:M%CBO%EW"MCHTX$_Q=6M2]H=EH&JP03JP)E[#YCB)v MJ ,S4%&,F&S!HSLR0&4O(5]R(V6?V%&@5&V]51G>T09?\!4T1P?AEDZ&53_7u M]W+> 1MV4!C=5S\)H$2M51=VX#YCH'^]R'' F$MY,8SVIW_*\T(.DD"#(6$S8R(ZPs M 3#;4VIU#1D\H67LLB8U^$Y,B:9#"T8/ $8DY25\K&7G+!0)?p M\ 5,D 1"( 6ND@5+J5[)UEZ3PP(QD1$;N3DQT3LQ83PA:83&HI1?X 12(#V,o M%'X)8 ,YH))C2)9F24'A1 8)P#MN>7EP>9;B4P9<5)>8PW]XN91QR3]\49P*9O*0YL$ EKEHYGS4WD[l M290I63^L29AT@ *L22'/07K(X:M2SJHQ>BTY@NX&3]B$__"%$P8&PTP#H#*3M2QI[-j M(CK\\@7P.0<,E4^I8Y_XB8F+R)\469%SDY$LML1A7@@;SM'6)BAQ<810B^J*/4:(GNB\IVIA8>A-A%:,5,:,UVII%4A2PM:,G\J/?0U20f M DTX0J1I8:2_B*1*"@=,RB0U\J2ZXY_N"2UWL8]CX&K^2(F9\9 P\) S4(G:e MM3F&ZBR(*BV->HCDE9&LDQ$329'MA0,<%3L>L94%U3HQYIIP )YP1;$6(O-&G[0BGW2&JM;$)=N!W?UQXOGb M:'EP!<<2'JPXSN2A[M?JR&@B[FHZ['Zu MFK>%>P9+T658"XOVIWAY" *[RA[+DDNX*:[>0:[2*U_R6A':FHKZ&BF,"U(#t MV'UP$[[B.[X,$30(0[[ABS3HM30AT31,P[XE\34Q8#P@L!(MX5$N>ETE 0,Ps M, ,T$#;H2[YN9!0:L39J8S,!G, *O, ,&\@4#C$,G%C$!=$41D[HG5&,@:-r MT:\E@B!,X,2;(J3&XA V0YR<2=X\10p MO#>7VI,*0,7VV(-7K&J7HL5<#"->##I[DZD*F9)C')0\D$UM\"Q\N19M(<8Lo MZ<8 JA9TW,0D"1BJ-GTPN<4SR5JN-<4L.<%N,!1Y7,4]B%E&1.4IX/IQ;4LZ^Q? )< ,GX*USN%;I,Q:[V@:]F@:_^B1!^A8+)#T:FZS+l M:JYU0;W1:KW5FC]N$(X18I(IFS_$/';&7*PSVXK9IA:+P7O5F[#EZIUR,X5=k MP +7NE82M)R*%0/AYB)IX#\5TO 3A5A&DR[<54;4E]!;Xi MS!H#TJ_*JH';4[4*H,T)PYJ6D@<[W#\8@M&G8V=NT"S6^CPJP$+8J@#::KC/h M(T*KL;?;8WW37-/IG'W?>"F*1054()5C*P1QNZ\AW"SS8[CZRM/-(K)G2=59g M,%-\P <@$ )"/3/V.A8M4 1",!!&L-2'*]0:+<1,<+;QH@ )4+OZ6@1-X+99f M8'.7,JO#$1>),1MAV-QLM3HPP9Y\1B,71%(#;3;P]=UW69We M'=E?\ 150 5[S=@?:P2QRP2$G0<'B%1?$ >+#1)!#=J/+=JD3064O3R6_:29d MK=)HD@>U#7NW/<1?4 18L-3URM(H@-3S ],.7+T3IP+H]F7,A9N$ LVLc M.&;"L4X7]]-]X7KPO)K/DP;AYK=ID+,[.[)PY[- 6Y[*X]=VA]!>BX#ID;0Xb MV+C[6M'WG=V)>X#9-L$8TA>1FQF+:P+S#1+]+;5T(.#Y'> (^*MD!K"LH7()a M7M_^_>#XS0;Z+>"E5^&-JV]A"#7-K3X-3KD0[N&):YXGKJRPDM=&D 1, 71z M'7#^$M-NLO7+W='1U!J0+AG3_%C:T)0-3FO1]>EM298=#ZFN2Ay MC=RQLE9>;7=0D 1OE]R!7=6:>W&+G0!4?MR2[00ZZ\#])D*# 5LX,B=I)V$.x M,GM\K;J^K=E//MSTK;F.C=>C7=I8_K%;WN6J+;MACN%83N:.K8.X7=IIOD[]w MAE1M;BAC8A_LE"?-$5!85QMOWBG3(6=T3EJ]S==X'MQZ7IVVS>C(K=R/#ATCv MIL'"JALXCN=M_=Q/'MT1H@#'&3X*]\HY7?+208[@)W26AEPH+/>7IW $>[X]YS:8>[Gt M#)Z'(9YV$.Z0,9U] >W6.>UXL#WC;L&C84;62:6D8>_^7@;;L^YKD8N',9[;s M\^MG8'6.AQO8B._@)WN]!%(J]QRU;?''.O#37-W9#4X:S]T47N1C1D )?\C r M[AC9(AGS'N+"L3VC HVCLCVL*=3/P:] O+?/84O6Y-0T=D&^Z2C/@=2*U3O q MG29?$!URT%5#+_/G_1SUMCUNJ )C ._G+,W0O,YSD*YGN:Y.4'_"#AUEP!X7p MFO1+$B:%411MT-DB[1@4J(HIP"7:1DH$:]#7K%BC)^]O"/<7\P7"o M3O=UH&!;&CS[;H?>+W_@%^_>!+_E!&V[Cn MF?AV1_ ;5AB,[_=RWUJ"3_@%O9I?#?I:711O^/D2+4'JS=YI0,FA9P8V9P?:m M,[A!N^ 5$7RLR?@F,)XID+B*9?HR^&]E@,LKD ;F>8VG D'CB;#!F(P'AP1:l M +UL_O6CXR*LT[:'R\OT#7\>_[;DY@@,'=8\ 50P)1/("MV!P-X8 3V?__Vk MSP0A P)J<(XR)W0+SG:="K:S_NB.^X-_LB)>8"/%POX.(!.(?T=@_\6 V:4\j M[H^=^TX' H(TP/?W &5%JZL,_2?,8$ Z9"UF'=@3>VA/L?0_!9,&2L0*>'ABi MY.>%K1\DPE; #4@!/L '< PI5]]<7]1+ >!.HOV8F[7> -?M:RJ. K[]/JC1h MAC#,&S(!^HXT'+^BE?PLGUGG@Z:#W2"g MC _Q"4$/9A3^EL]J23)0":[!X/?ZC +QZW=D$/E!$.6'!9T?] LW71 D?,$Sf MA ), !Z4@CP0E^F]'YCNUF#M,X)P$)K,(3D(_'[0#S0!VB'@34&CY:8>7Q_4e M@G^0>XPZ08ATS% 8S(1D4.U%BV>4@-Q%[2)=45#@503KI%@.H2S4#HH%%9(&d MG76>YHU]XW#;9HH';P?)="0#T/I:8\RJ&(2F]$<.EYb MA1X$';B=[[-<"\ZNZ3WHQ+UBC\+Z 7XN5H 6D'2.,)GNVNF)S> MA4 01J=a M;@N 4VX<-JZ$:-<8HI]C=0L.(MJ=M3;1'!B1N!;:A\Y!C8\U>O(;.%$LOW#%z MZ;=XT0,@2(S[ C.NQN%#J%$1;)YB>6MQC0C,M4I8$<3 F5@#(8TCW)_S!!)&y MWDF$(!U/#H X[R;P*N&\,8I*T0=\,[TP0))"PH @6.(-!,576![ R0&:BFQ x MV[ ]KZ"S3&!19'DS$"I^1;1XUY+ %ZAJ;V@5]I1:EX@!1.65@)M)$H6<1w M?5RS@XK/P1""MNA'$DABGQ-M I$E[JW34PT?V^0! 0[,0U&GRH @+M2P4VZTK"6"1NW$u MO49C^&EUDK$OX,+4&.H^EEIK,PHPZ_&\M@"T.*' JHO&++40QI+&VR[;QS)Ft M B,HR4:W. 20@*M(.F]G""2!3:87H<:HT'LOKW+]%P*R%O7 :9A8]2@N0F9$P7+;\!!G7B7^T ](0"V2!q M[><@,^/'HH_V44!R!)W' &.%?$0!]%$NFDA]%8"8H6)Q:LU.YP7&M18O"" ,p MF(,JDB]"D*>W&J%&(%21(,$F#DEF*"-IHF&T;0'1"<3&Q4@4563K:HRV\7K@o M1M-(-RHCAL*02+(N",=T2&.*HV(16&3M+08!K%8$4(#.>T')"+$5A3S@ C(8n MX,M'R_$^FK0P^22-FY_SC!;N1U9) =FZN*%CO(T=4J5Q']1H&<$DDIQ"PY$.m MF,F A0+2Y%7+:F_RM?67V%8GK>*=' IY,C,.Q2)9&&FD:TQN=>\Y2+HGL 2H'>Hh M$=WD-Y2-@C)[D01W6+HJHS*FV@#U$ -ND SV@!'01d M8X$"DU[B["(K\/\]3B[@!D0 "SBM78c M?'$HX$=B37W%.+>F#^B<)6)L$B\ L0HI3 *2BQ>0KZ%.U5D!_860+'HVS6&Rb M@41(.H,;".B:-5-Y2!#463-Q%4@HC0*#8" GGB,'U@!8P'$.C".HM^A 0!0+a M4_19W/,DE@PQ2&:TWMEZ D2@"$0@\-D5[=X2+)5V!SD*PPQFX;)BO)"?%))^z M*K4 ^1ROF2,D@K8O$H(>6?BSWB=(6#F9C_PPO^!3!XE?9=B$+* )PC[&%P2Wy M8")4@PON$;Y!)$A "5<(%*4#EP!X$#!!VA:;#<$9]0N.<:808%H)"0x M@U)"J %"KZ (;: I !,.G\0507%H([2@&%.EU3KH]M(B! ,[HD@TB2K1)4H5w MD-/Y8J(Y0WTI#9+P-)R&^P(),2!K9(3Z937PET/B&EFT!L" & # H.C/&&!Gv M X$=,*A@1MNH&_4)ZF\I-:6G%)6FTAIS8I%,C;$DA*2/M)BN>Q[-SIIUD<5'u M-Z03!3DX]>[<92?[\1S$2%-C=P?'^!&UGV/R%EZP,T9U;PO4@/0X'0;?@D&/t M>D_A,3QAEP)$6+C)I#& $Z( 47I)6PL0= .GU)-NA2T@ U0I*W4,I#0<*H],s M.@-L:24=I1PG!9S#72I+Y< 6H &^5*?ATF"*\)0G??EZ2\E#\4+EL930p M&A'%D*'2EQ<7,N@9?:E:, UGO-&-RE$[JD?]J" UI(K4D4I22ZI)/:DH-:6Jo MU)7*4ENJ2WVI,#6FRM292E-KJDV]J3@UI^K4GZI/_:E -:@*U:%*5(NJn #4=VIm l end --[0252]-- [0253] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/29/91 04:12 (11 lines) Subject: select comment Date: Sun, 29 Dec 91 01:08:21 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi When you go to compile sel.c and it complains about an error on line 84 (or something) just edit the file and delete the preceding line, which looks something like if (oper) Peter --[0253]-- [0254] daemon@ATHENA.MIT.EDU (Robert Blum) Linux_Activists 12/30/91 04:10 (11 lines) Subject: Amaru Linux still not reachable Date: Mon, 30 Dec 91 10:00:23 +0100 From: blum@cip-s01.informatik.rwth-aachen.de (Robert Blum) To: linux-activists@joker.cs.hut.fi Hi Linuxers! I am sorry to say it, but the linux part of amaru (in fact, all msdos stuff) still isn't reachable. So please stick to nic.funet.fi, or tsx-11.mit.edu. I will try to bring this up as fast as possible. C U l8er, Robert Blum --[0254]-- [0255] daemon@ATHENA.MIT.EDU (David Fenyes) Linux_Activists 12/30/91 15:13 (50 lines) Subject: shoelace; compiling regex.c From: David Fenyes To: linux-activists@joker.cs.hut.fi Date: Mon, 30 Dec 91 14:01:59 CST Hello Linuxers, I wanted to compare notes with some others who are running Linux, since I'm new here :-) summary: 386sx/4meg/20meg partition on drive 1. no Minix. 1) Linux installson drive 1, but didn't want to work on drive 2. both are RLL, same controller. 2) Does anyone have a compiled shoelace that can be made available? 3) gcc chokes on regex.c in the GNU dist, a) is this happening to other people? (see error msg below) b) can someone make available a working regex.o ? 4) Has anyone compiled Jove or Emacs? Jove chokes gcc also in a manner similar to that of regex.c. Maybe one of these editors could be made available. (I am now using uemacs). gcc choking on regex.c: gcc -O -g -I. -I../lib -I./lib -DSIGTYPE=int -DST_BLKSIZE_MISSING -DSTDC_HEADERS -DPOSIX -DUSG -c regex.c -o regex.o regex.c: In function regexec: regex.c:5285: The following insn was not recognizable: (insn/i 117 116 118 (parallel[ (set (reg:SI 2) (reg:SI 2)) (clobber (reg:QI 5)) ] ) -1 (nil) (expr_list:REG_DEAD (reg:QI 5) (nil))) gcc: Program cc1 got fatal signal 32. Thanks very much, David. -- David Fenyes dfenyes@thesis1.med.uth.tmc.edu University of Texas Medical School Houston, Texas --[0255]-- [0256] daemon@ATHENA.MIT.EDU (Linus Benedict Torvalds) Linux_Activists 12/30/91 16:58 (47 lines) Subject: last call for 0.12 and gcc choking Date: Mon, 30 Dec 1991 23:47:03 +0200 From: Linus Benedict Torvalds To: Linux-activists@joker.cs.hut.fi David Fenyes: "shoelace; compiling regex.c" (Dec 30, 14:01): > > 1) Linux installson drive 1, but didn't want to work on drive 2. > both are RLL, same controller. Interesting.. Can anybody else report similar findings? What does linux say on bootup - does it say "partition table" or "tables" (note the "s")? What does fdisk report? > 3) gcc chokes on regex.c in the GNU dist, > a) is this happening to other people? (see error msg below) yes. I f**ked up when I did some minor "enhancements" to gcc. > b) can someone make available a working regex.o ? compile without "-O", that should solve it. > 4) Has anyone compiled Jove or Emacs? Jove chokes gcc also in > a manner similar to that of regex.c. Maybe one of these > editors could be made available. (I am now using uemacs). Gcc choking is probably due to the small hack I tried out on it - the string instruction recognition. When I get gcc 2.0 going, I'll leave it as-is, so that these kinds of bugs don't show up. In the meantime, not using "-O" for the files that result in errors usually cures the problem. I have also been adding 387-emulation to the kernel (+,-,*,/ and comparisons mostly work now), so hopefully gcc 2.0 won't need even the soft-float patches, but will compile and work without changes. Linux 0.12 won't have complete emulation yet, but I hope it will be good enough for most things (ie no trig, exp, but most easy maths). I also don't handle overflows/NaNs etc at all now. And finally I just wanted to remind everyone that January 5th is the deadline for things to be in 0.12 - I'll accept /small/ patches after that, but nothing major. Note that if you have started on something, don't feel forced to send in a half-ready patch - I'm sure there will be more revisions to the kernel, 0.12 doesn't have to have everything that people are working on right now. Linus --[0256]-- [0257] daemon@ATHENA.MIT.EDU (Yanek Martinson) Linux_Activists 12/30/91 18:27 (26 lines) Subject: compiling regex.c From: Yanek Martinson To: dfenyes@thesis1.med.uth.tmc.edu (David Fenyes) Date: Mon, 30 Dec 91 18:21:49 EST Cc: linux-activists@joker.cs.hut.fi In-Reply-To: <9112302002.AA04802@joker.cs.hut.fi>; from "David Fenyes" at Dec 30, 91 2:01 pm I had the same problem. The fix: compile without -O optimisation option. Works fine. > 3) gcc chokes on regex.c in the GNU dist, > a) is this happening to other people? (see error msg below) > b) can someone make available a working regex.o ? > gcc choking on regex.c: > > gcc -O -g -I. -I../lib -I./lib -DSIGTYPE=int -DST_BLKSIZE_MISSING -DSTDC_HEADERS -DPOSIX -DUSG -c regex.c -o regex.o > regex.c: In function regexec: > regex.c:5285: The following insn was not recognizable: > (insn/i 117 116 118 (parallel[ > (set (reg:SI 2) > (reg:SI 2)) > (clobber (reg:QI 5)) > ] ) -1 (nil) > (expr_list:REG_DEAD (reg:QI 5) > (nil))) > gcc: Program cc1 got fatal signal 32. --[0257]-- [0258] daemon@ATHENA.MIT.EDU (John R. Schutz) Linux_Activists 12/31/91 11:44 (23 lines) Subject: Problem with VCs and Kermit From: john@csrnxt1.ae.utexas.edu (John R. Schutz) To: Linux-activists@joker.cs.hut.fi Date: Tue, 31 Dec 91 10:33:06 CST Has anyone else noticed a problem in running kermit and VCs? I boot up, run startcons, and then kermit. If I switch consoles at this point, I can do anything I want, and no problems. But when I get kermit to dial, if I switch to any other console and try to run, oh, lets say ls, or sometimes if I don't run anything at all but just switch to it, the system goes hog wild. I've had different results ranging from a panic from the kernel to automatic reboots to even zapping the drive information section of my CMOS. When this first happened I thought that maybe I screwed something myself, so I reinstalled a virgin copy of the linux source and repatched it, installed the 50 line VGA patches, and tried again. Same schtuff. Any ideas? john -- | John R. Schutz | Email&NeXTmail: | | A learning NeXTie | john@csrnxt1.ae.utexas.edu | | (512)328-0587 | "We are all victims of dead men." | | 3009 Hatley Dr., Austin, TX 78746 | -Charles Fuller | --[0258]-- [0259] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/31/91 13:45 (26 lines) Subject: VC consoles problem. Date: Tue, 31 Dec 91 10:34:53 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Sigh. Regarding the serial/kermit problem: I actually discovered this problem by inspection of the code, before seeing any symptoms. I don't have time to do a cdif to patch, because I am working fast and furious on finishing VT100 emulation and psuedo ttys for 0.12. The latter is in testing stages with select. But if you want to fix it edit kernel/chr_drv/tty_io.c around line 348 and change if ((tty>=1) || (tty<=2)) tty = tty + NR_CONSOLE; copy_to_cooked(TTY_TABLE(tty)); to: if ((tty>=1) || (tty<=2)) tty = tty + FIRST_SERIAL_DEV-1; copy_to_cooked(TTY_TABLE(tty)); --[0259]-- [0260] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/31/91 19:11 (10 lines) Subject: Re: VC prob fix, + VT100 emul Date: Tue, 31 Dec 91 16:08:57 PST From: pmacdona@sanjuan.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi As Linus has pointed out, || should be && in the tty patch. On the brighter side, I now have VT100 emulation working well enough to support the VAX full screen debugger. This, only because I gave up trying to reverse engineer the VT100 escape sequences and fetched a manual from work. --[0260]-- [0261] daemon@ATHENA.MIT.EDU (Peter MacDonald) Linux_Activists 12/31/91 20:52 (903 lines) Subject: VC, select et all Date: Tue, 31 Dec 91 17:40:22 PST From: pmacdona@sol.UVic.CA (Peter MacDonald) To: linux-activists@joker.cs.hut.fi Well here is basically what I intend to submit to Linus with possibly an additional patch or two to tty_io.c for ptys, in the future. If anyone installs these, let me know ASAP of any problems, so as to make the integration as painless as possible. Here is lvc 5. Peter. table !"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ begin 644 lvc.tar.Z M'YV04HH$(=*D"("#"!,J7,BPH<.'$"-*1 BBH@T:-$ J,@1AD:.%3UN! DBz M1@P:,&I4K!%#AHT;,&#(D'&#XXT;-6QLA#&QI\^?0(,"J#.'3A@Y%0'(>?.&y MCM"&2YL^G4JUJM6K6+/V-/* LW=]*X.0/B:!D0<,+0&8.FS!P0=-Z4]0H6x M!!.Q=?# E8LFC)VS5M+(H5,G#!L00]ZXF=/5K0L%5-K..9MVK>2RD=-"\F0S"35,08N&V!;'&v M]QT6(*P,>6OXZQT0<^Y\AB.6[)PQF>6:XK-45L0;#"&W!QU@/;&t M8/%-F!P5,<0$PAER?(9&&F.\Q=91;_7U5Fs M&6CL!0)1F@UG11!8Q%>'5]!A!^!V+(I1QQG?R5%;9&F\51E[AC&&UE)VI,'Br M6]=EMYT8;(3AQAK558A48(,5=EABBS7VEG@YBN9&7H\EL5T99IA11GW(_;=Aq M&>?E%J69\67WH%AC #;$7)FIF,=<7XVAEEOP*9EG&7(H >F((R18&-PT;%?p M>VZ"E84V5E@BID?4JZU$=JC/+XEZ(EU7"J'BVZ0H8"G<##+69AC:BM7n MJR T>EB71W+6K9Y.*J" $(^R:$880]+!'[IDCH5J&D1V!@(9488!)FEEG2<&m M4X3! 5<:;93A@K-R::=PC,#YJP"/(-A;T61TT(%I&R"T$.V8O=F;*J9G;3=Hl M&+W5T49G2/7W7X >B5F:#;)5- 6@]@F<1J!RZ8&I7 C/L3%X1YN&FAL7@Y#$k MCA VARUO[,YY,Z<9(E>QF&5F"$(;>)FL(&0?EC@CHS*2\2B*VZG(8FF;%774j M6@D2FH=Z%]NK7*=O5"RB8F:D<0:LZ6%]E@PJR7E6&V^P6'42[_U=!PA]_06?i M%4<$ 6YIFHI?,)&$$T5,82^#5E+N.$[H&6BUELGNE&@\U@3L5L.81GX@K*Y_J7- 3AG^LATX"2A-!>H=f M8SB&@MKQ2V]PT(T8TA"&%"R(2X4K Z]ZTY06'4PQPC+3=Y#6J;Z,Y2Q3R,(4e MII $+11!1S# PPQBXI'@*(E@9'#!&&HCA/9E!@2E.X-[U8< & )GH6$I2\K1MCXXc M(>243CLFP\UP[C A-I1& :<20A&H$ 08^:PV+0BD( =)R$(:\I"(3&0B[?4Lb MZ)@,#LS)3/(4$)*4@4 (MUI#A("H'FHQRV0H\YGK//>PIKR ?' PGXY*28=3a M JI\4ZA-16)@R2# [U'TLQG-4:N3B3J88/84%SD\z MZ@5$D<,IY3 &!23 0JF:%&NJ-JU2L0$Y9@@@<-QPM-&-LW:WFYQYV-X0&,@*G#8?*3DB1IPAO&5P8VZ%!'x MX;1B:283H_H\=#.B$8,+]"DR$,C DICCY.9.1T+5L$?A'[(+@C!;S1X.YFD) 9'9P+G+<%Yv M :!V:,V?(N=J(SHA"*A0!"DTH0<*;(S_@M.&1[D #DM)7(QD"8(96%(*>RHT^AK'F:T4D)G8::5*E$<.C%MO8HI&%78)M0W$J5R0YI $.=&"K#=Y:r M!E8.;#Q=*\-SDM"=[["U)G=E"^5*4X<5Z$5O@U&@.7NI(ZFNI:,XL&01&/LJq MDSER;PKL: Y FCGUH IF6"O39)Q;(#A,B XG\N%96,7:%[Q6!KYJ51ZL:9:=p MMDMC%?,T,D#$N@P88V1."G*S*==o M-T=&B$$+C$"#.O5WI&+RET@[U=OQIL$,CW*"%+XPA"UK!\/4P3.'S4SQYFJQBESA:&IL&W="4X;C&<4^m MBF&! EKR5/3H#VWG<0U]>@3@0?EF+TSB6'[R4#4A)-9U1#5A26*@@+$MAH,'l MLQEU!(;6-R3JLXZIB+T@LR%2LX#BQ<8.G3A^A:D=?*["U90N!A^BJ6 FV'QO5AF 'E0Q\\XT<_(# "j MU1#ZV@YW6R453G%1,47!PQAX,&L3FE'2VS=)?6FOZWYBH0H' O>.X074Y,^Ci MN>K5'I#!9AJU%Q26LK VS.$%2?CLF>ZU#'$X\Z#?h M!&!5LZ],DDJCPQX5XS(@E",H&&" .L/B'Y85+6IABUM28,[,0(@-\@[.B#H4g M[=9(E(F;!M[)S0BSEN/O:IT[2].>AK>V"&:<<40KH-1R'RHO^F%'R6$LAPX"f MST[F9C%"BJ%_\W(Q>,><5Y-M")?[G%0]:M%%64I^Q)DJ$*&!ZQ46BQDRDW%?e MJWQ6XBP5PS9C,!.2(4:E"G&=":1ASF&7>G"OP"TK6C&ZHQP96LE.ACY=GT4L<2SS882+*N<:MSV/[FW%/W/QO@^:c MZYMA5\DO]T$.GH?MJ.K+>9KC9]EKR4"^_S37/75B]CU(+E>#MKPW6--.P:KTb M4Q0LI3S.H\>0Q EAJ-@41>"%+6P!"SO(P@ZTP 815"TR+QK4[C>%G#=LZMD9a M9Q8N4C-?@Q18P'4Z$R\]U8DX#YCEO(W-CL 8$N($A0Q*"EDQ'y M!AT9="5OP"'I]U]$)1?J00=P\&CC%GV-8TS-=23( 7S#L3(V:!\5@RI?%%RPx M)B:RAH&#$E24$C7S(1KY,46;P75] 1H!,A^P!T>XY16GQW5" #!]AFJ(QQGYw M\@9?8(68![49T<(>!9")#_K,ASP$B#EH1IO$S6#v M0H4>%!QUQQX2:'(DL7.W$D>'4WT&\Q6JH5+G$2,SD,D6>QFMO\6_.-193\7KOH7.*\05Ws M8'OXHR2T^"+=,6$DX7%T) UH0!!4(/&@7C?86?)DX,@< 03(EM6(P=Ao M@C*G0GVM@3\MYV<3HCC-YE (U01J(2AOPP3\0@>E@D1OJ7T_YY 'XQ8DN3:Cn MI@ JD)B*N9B,V9B.^9B0&9F2F9CV @?=(4R*$09 L$ N4 =9$DQAH !0 "A]m M:)=C0 29:4= ( 8A\DEUIB!"9 >9[HF9[J"0#*Y1NE\0)4Z6%YX%9C (9,0.5%ISU%I^OE1'Uj MF1$TD)_NN9\#))\7T2GV"0(7(:#,!9\%^FT(FA$V4 .WN9X6>J$8FJ$:NJ$J3I.0(8R2(@P -%@3!O$#P^H !*2A]6UJ1Sg MP"PO4)122J5+>A8\@"ERX!M=6B-X$$?;L7,@H )9.@=?(*:B411;T 4[8"_=f M(18H 'N8<09CX)%]@10J40:[]*&$=1@\8&SI5P8^@*6CZ@:GFJHFP 5N( (Id M4*<)L%A'@P(Q,*M#UPIPM&ALK6DEM>Q+::1(QZA(O 1,N@9TS6@,]FK:[":3B6:1$*A5^w M6[B&ZQ"**7%CVE"\08)0 5G!@)$L"U+AR\+B1.[D+9#%CD !&X%RZ7;FV7RV:4K +CFTY-RKV]\SM=*KY?VJ0ST@8OH)3@>[WSRP/Us M>TJNZ5?YF[[KJ[UQ5QWQ*Y:^>G*_^BR\46$DLR,20WOC%C$M@$9%XQD. S$Mr MP(?)<[S(FYCV&0,L0 ,U\;RK2P,SP +76;WBVSRE @)/( 5)< 34 SW2\P50q M$ 1'4 3ZA (J@ +SX1IG4"H3I1L4H@(I$$,Y0$,T8*@MC"=5%,,S7,/1,SU-p M\ 31T\,^#,2+09(,TY1'G,1XL,0Q80.^8@*Q@0=YXL3JZ\)G(<4T; 4V/#U-o MQ@3KDP HD,<_',1>7,0'MJ9B3,8Z>L9IG"1K#W<,P5XO#J,K+X--1G7N\EP3,4W#,K=@\>0m M4\HCH!T&]<2)\\*K+,=5_ 5%,,E @L=[W,5#_,5&?!Y(K,0TM,BI#,6XW,FLl M/#V];#U"@ 7 S,5"3,1'^\?'/,8T5$'+?,MO[,RZ?,/1S&34O,5\/,Q^',;(k M'!-C8*@>K +&^ZLWR@(XX!'/*VHC;TA[OT32A$09S4P;"2!H)L+/W91_UF<[8_!5C(= JJ8=>\P6>8CMML!@(i MW:U. '#;2$R+A8A=83.+<='[FM']S-$,X]&8.] :] 6NH31?L!1W@- )T*WXh MHC9HP2E"K4\8K3<:[<_7G-.*L=,A_04C+3ESD-*_NM(%Z-!P$7K_XQ9,7=-.g M?=/_/'I_"M($_05I\1U$W:UV3=<@( 5!T 1X?5=EO==1W==3_==Z&-AO&BYO_:M%<%BGHMB,e MW00@D*E_[!XI0-,(%=E0WHO<]4)]FL#<; 3=>P/1A?('NU'1@$C=NZS2FRM[F_C=IEI-HXO<['7=68c M,B-E0-)_6MA#\*K/=]^W26930:%G=\,P]^AX]^A ^"JT24#7N#8a MS=?TC;D&EM4* -_#?> =7=EXP )Y4*<@_M39O>$)$!=PP (/4S*%@^(&ON()z M?F=ET ,P0.,9/MDL[@;CR@+CN@5.D,-20*)H?10)y M<)=RH.-X\+L>*Y:J797/UZ8H@K%>3@;6"KV!I* I7((>P<)<'N4K'M#(;=!Ex M4-L+W="G M%A,M$530;NW>.L[=?(/=(E+=-97=1;S=(SZ])G2C@F/=/LFKY^w MCN"5C=R8;7:34=N8Q!N??=N!/2&/\NA*[N. 7M68W5>UW=E0]!Z*W>E.U=1Nv MON237M4__=U"C>EY@-3.V"Y@@=?"K>*P_M&!;C-?@-6%S=4XX]5.%-9SP.NAu MSMIP7M5V7=MQ;1]S?=MVS>R1CLW&_=J_+=NTG="_ZMP:!-U%P2F 6=VN'N(Kt MONW(W>W,#>ZV_=R9D=OECA3331D'AN%1KJ?N)E@E;2&0NN/66T;,P\QGT01 s M\@53, 1+5L?K<\])7O#@# ((CP4*S_!?( 5/< 7KP\E3/,[3X\K>0_";O/ -r MCP1!( 7K@P(5?_%+IO$M!#18Jq M$.R"C=4Y;^!QMQ[G@:AE5!%OGM; ] 563N-0K^%P/@:/BR=4?]Y6+^64#>Q:p MW^1?;^.3KO5./>=)?O6B?O:RG?9E_^L[K?7H>-]K#_8L/O7V[0;XK=^$TM__o MO2\5CAT7SJY/C_> CO;8L> -[O<0'@02WD>"'VB$[Q4%SO9_[O8='O=M+_9?n M4.)3?^)W;_:>[^(L,/4Q'A=MP/F9[_E ?A2GK_5#7N0IC^2'3_ISO]RD7F>#m MO3>%?=A[D]BW'=IX??MR+]!:3^F\3\NG[MFJ/OR-/=J,02&F??EX/_6=1QJ?l MS_KSC?VJ109?(/K&[^/LGOSK0?=]0^0-k M[V10)F538/M*3P=R@.F! *?'$=9=,7M"VF$+U+PA@/)4GO^C?]@/.U@*_&?Sj MGDR4Z1[^+^)MLKV'QZ:> MD"I$>!= $7H/><2V[311IPYRDX6M8![=]B ('?i M1P220,7WNFA9TI-X5:3#M4"2EB!@8*R0@5.OP]W 3>;B=N '#($)8@1./1ZBL<1K '(L'%H 2UWA-L TUPXN&!*/@"I^ > #Z0Fg M27 &AC\Q^,+27AD\@T 0[>$X-AB20L^D>(->$ S:G#F8 B=>W7,#># &ID$/f MV!9JD%B@@[UA7 7"'S@(M=[KDP.(4!&B \H!04A%52#XPH1-KE%B 8OX=1Ke M$+4WZ"#;T -UMX!',A& 2&O6\P($)D2,N 'BN$@XU0]ZTUS&8#?:'2c MX7JBD!A60D;H";6>OBB%D- :"HBUMMZ^FYIRAK>P%1I#-8CPD3@#R RK)01 VCOZV=CSFG-@3 W"5,2F=MR\VPRz MS3,0@ -J M(76M*,7VS*A(0I@ 4T'\O1 1P 1@P V; %O@!#5$&C $1X!%;y MECUY EREC B1N( ''H6@2!<@ \T+*/' QL=5-D5-LCP&3BQT#I"XE)\ TW1x MFK$V/76O/A\+6'%D4;OTPHJ J"I" E!495$OI"JJ..A.VEO@ WR@-ZC%1^$#w M(!551'H(19]D!L(PINK4ZBI!+O$DT!(VAP-?6$V\B4\F)^[$GO@3@^)0+(HJv M#2D6 :78%,"B4QPCF2K$L#0$VHC;;EKDEC$ %O#r M53( .;2[V#;O=-5AQ C;T7^PN7ZR&\*C"0P.Y-$\KC6AIQ[3%PIHC^_16LG'q M][85W4!7Q(\D0S]>2#>0IU"'%_2/;A% "LC >(0,),9J"0H2VC'(V::KXME*p MS!#:\45U1WGF%HM"@!21 \_ A<0N$2'X(YE#* 00. *]JB;G&!:D GE?@ IDo M 2A0!'A9Z%@4RC'.,;2ST+ @V2[3DES22S8VZ>@;]8FB"@$N#@28 #1V!:WDn M..QI5RTZ#L# J$_$XPIPCAL2/=(ZL& 8SUP,F%';T0:XE0EI)&=D11B12:[+m MH4CLT"1G8S[TCV5$2N8Q+V@G :) C!%G#(TEN010$?*8F&QH91)+HLDN&G= .E;+!* #j M1, 8P ,J2P0@#%DU(/4)K\J4^B1%[D=KY2Y!P"D["\7R"U"].2#8O@ *,)=Vi M!%9Q 3I %-UBM10!F0$."$R":>;N"N^Z =LQ!RQ*04(M]6 8+D#+'+,828O)JS,FO62C;))VLFO[R9(N!) V<,^)W LG $3X,Y/.O4a MZ@1AKQ,'U,T4%#OU28=#EG=2#RW+H<8G!R.LX'N!\5W^1B:)L9!D\ZR=I<&Yz M.,GIJ2GS@ ]@@C*S9^:!0%(\/0K0J)LV0'GBS9YY/O]D^O1IW[+6M4_J"#_Sy M9J:DGX7S4L9'VAGE0J+^C)X)@G_RSO_I?[:G "6@0?,QK4090#=E0$\LGQ3Rx M+;2 9*D^(RBS-)CNLSI:T/F)'?RFHP0!>Q-_=@HYL#]UYW?<#2D#4H'(AA@8w MI:+ >Y0<-,2%1!;!!HHH6]R=P1$/F%#SB41GJ$CZ%,+B=BA12*B7,@_SZ<77:(#THENT/O9u M0?$C%=6CWN=2&E'JR1ZW: Q-HE\TA3JF%0HM90 )*Y_,DT0*T1"1!KZ $D"Dt MF7"1)@"=1CCFPWD(G6AS9-)+4BH,00 J]9?J,@VPRR091\7#JLB$ 52?=*+8s MH ,,G;U$?V8!4&;,&;DPAF,B8Z,QLr MI9!J\S5,CX(#Q*?R4J"!)'[644(J1?$C)_6DB-0+UD;480="Z15UBZ34F;K2q M?2DZS26Z7*53[;Y0B%?Z+TLF2KR@MC1'3$)CRI>5PW@Q36#']U-LQp MQ7,235]12WD*35?@--T-*:":MLLXBMBRZ6[PGAYLA4ZHNGD#G)=,-)@B$UVRo M@%@Z2Z$H.;VCYM0U?($E $J/ O^,I^H!=?!3>]I2?R,K16P[U9_2TNAP-&ZIn M31K1)$JDY@2T=SY3G^CC*27g M-?) GH0\_P*W>-LD813(B%@$$6_*PN3:[ :\ZBb M(@#H'IL8'YBTI19("@':]6S@1,V/NJ9KN5a MQVFSI2%9+Q123U;ON4LAQ:Z]ZS#D!*-]LW]VOA;;)FL&P"&GC;+=JL/=%L]!,3X5M*6U9V$&Y(!IBVGEy M9"I?V&UHY>IA]Z5Y < ON4XE_"Y&).EQ%A0*&:Q?HBS-$<59<(DML,6&1)KUJ"A'4+3>WMN?45>7'CRH$BVP5:0,:-KOJD(L1,HXA):A"'R*FEv M >*.6GX5'%4NR^V+*$'C6ES<2@- [L(E"21WM)G<=LLU&Z?%;0%!M]+J*H&LQ,&BFCG)HZIT(H@J13VEA"PA-[2'H$L"*HJ:)G&)!#H!H#t M/2#)B0 8P 5ZX@P( US )<0 -+ 344(2V(DI" SLQ.QD!NHN3#@#==<&Q Us M4'?%ZAK(NS>!#31>&= &ZFY,@)LSI ;$ &> '=B+D$ %?[^ 6PH"1]$#"5VT@:&#JB*_7(!EJ!-B["K2*YJ^-"6Gp M?%3Q 7%^"E"9R7[C\76C_U$T_% "20=L)*[2CB!V1YX!!%L@#^2$-0,5MN+No M!@P+V#1LO.&P'I;!]K00RP9Z9$A-7#/@=9)5D^H=YZ=]^*%!U*WF3[=@8,)%n MI@* O"U#+8 6!]DWFOAGVL7+2S$QX@34>()XXDCC'PRR@?<8J?O4[./9R$Dm M?@@60=*P+Q&5L6AW5$;8]RN ]9"#Y9'1=0??W_QK4S7_1[*'IS8G;\DDNj MD%),K:(+/' HSL<=I>>[76,PTGX\TML+4& >+4CV%C;6Q'>'&UNL/MY4:f MX!*;%P,FDK]Q&V?/-M #X+%;='$]0/2YQ3J91O,D (FN]C6 R-GP\5)4VVF,"^UAK+B\G? ?Q5>GBT96)CYBNTZ0FC42/L1IG5d M%D C);*,X\?^^#<"9('\&PGR S7(;@$A]U"%3$?_L?^)R-G8(0=&B*R/7S)%c M=IZEX2*;#%NLC@OL6^3(@7$DR[R0+!;GFR]&8FCAHQICQH2,<<+THB7-6 6$b MY'8(3-_A41:B2OF[46.-3(FOL1UQQV0@)F]3&A5:2=A'F9!B>2&29>]FEL=Qa M14[* VDIIV,7R4?7L5L.RB^N**L^/WR 0=C'36'B-B,T8\5<./KQ1 Z,,_DAz M[V.]C%F)W:C$H/22(;]EH3R0]S%0CLD1N)R^59FJ%JHR-B.+X= IPT6D4!S7y M6FFTBN+2#2"%@GP4x M4F*LGBR3?W)#A@/+6?6=YN,,1.VH&E[-G;0UOV&\!YM%:'#4S<3Q)O=FW,PGw MT3-O%FS(TCF0!)RG_* B<1_v M"@)[9UG\8K.':V88Y7D=GV?:K)ZA(P#IS\T93SYGE"**<4!=S@&_;/UO0W!N@%,Z!;0($^Q[:8.J=FF J>'?1XSHWGP43+Y@F=GH?EA3[1t M&5JD;>B#O)6?5^)""?7Y))3/$3W:2G1L[IGN^3\'QA4]VEKTBZ;%T]AY*.B7s M^IUSKDR% @\Z\>C&)TV)>71MUM#PV3=CZ/><6>VB* :M*BPEK.3 R*11@)->r MTU+:+5)IX2@'"#3*A-'46$8OZ'+LI3LIF+[1&BY"[^@J3:&U*GLVF%':41.Zq MSJH2C_04'L5+VNH"!Q*MHZ$TB@;0PX9%]VD7C3+3LBUFQ$BY4\C4)A"FH4YOp M(--8E%'WZ,X<'8$TF_;,JVMUA%:6$*)/<:W2U/OY2>N3*)VB$\">MM*E.C";o MPP0MJ+DT@Z[1K!I1^SA%_5K-=(4>=K4:4OMG'YV3B[1,/-*08X3=A$S-&X)Un M?^X!Q?I8C^H";:JI,:I6;7H*%@I26$>>')H^"]#!]52@P>L2>2?\GH7m M!T9:J)S]@^ZC7U?C3/D5PZ*\?A#VN@57!#SZCN+1T7!6=#A0B(H-+ #Ml ML*C(Q:\ZNGY=V?H;HS0#3'E3X"BU !]@L9=R'*"7ZII (]4=1@48H,IFV?+Hk M"\2!X6LR@2M;N,"3XLC"V20;EN*K]_4!8M57=HKW2!,44CJ+=?Z(!R&08PYCM;J6T 8_ZPJYP"A"#;"FPB$^W/CFDLIMU]X!%f MAE2?=B,MWE4;A>;J&+"K<8!=$=&4NTEWZF%]Y=)UJ&;4?AI>MFLMW:SY*XV>e M*/R:U]QBZ2E* _8E'MCVNF"S57+L04-/PA;?3=FX_L:&G0d M-0B+TU?YA=2]&#;W!J4X/T0Q1*7Q7A@A.-D['!24;8%1X3_(5Ob M< Y1<38X27(?0/2 BR6*+< )^ 7FP!H;*65L#_RQ#7..EG^C\NOZ*8J($KNOa MC-7A)*'\DH2G/,#E4>0.&2@<).R3[LLI(=5K6=G&QF;H\%WY(CUMK9D+N:;Vz M7.SS(7R^CZ_A%1<#U#'.+C[:/&7)Z8L>X0>$WT]Y%G8)0OP" %%7==^867[Gy M>"Y$H4Z\YWK!OJAD*N#^ZQXH-^5Z01X K4H9XTP+IP9G5FQYM$L(1HPX#?%IFZTJ:;;-7.0'7V3R[7?IL- "Tw M38;0CK83_(%'\*(]+A75&$#:M&1.+NV6< .HMJ;$JE$;L\9G9_ZXN;8T]\V.v M^Y%>[8XY*-EGWAZEF(HZCTMG_+K-]D));R4@0=)MMQTWX;8(D-L@@&[;[1B u MMXVVWN;;?IOFO'/!G:D^NJK>%@%UNZ>.\P8*J1JWUH;@72CZ]&=%S\WA'G=85N<5TOAs M78)\-^RVW]*SHU/TCZ[1&5ON9C(-L'>_[D.JTE>W1[?D4TVL:\89V +7 "7'I&p M=^A85WB?@"+0UU\W_7Y6)F[Y>G7!W@0*>][6GU!XI:?U'G "B(!CM^>I>[%/o M]A.@!2[[.&?#%O@59^XZ+14I^PWP[.,R^RGLR.[39WII/P$X +572X2=&58[n M7(>W6/9Q$/-JV7*$X[AZ1Z $T_ 3^@KQOTN [,9\!N'^K7?0>< *4=W(?[PW+FQCVBC_6LFU^Wl M:0U(72Q@.O5JEKS>KVI4O^:XF:I7\VU^U=MTUE[OVIRKVU!O;L_!.4P/H8Y[k M1(YSN&O6)3I:G^F6>ZVO][;N-F=D]XVY^?FGV\F38,DQ? +8 R5D3P2,B#O&j M/7RO*^![<%*4>,9)SB\\B_?<&[X&='@6KW9G;W#HB&.=NX/;"5YQZ'IJW]PHi M(,6;#-O-P6W.&/@!(+Q#1! =X, G1 1G[;74L%9TWQTE12Z1X0U[_03X^!\_h M*33Z%,#@A2$S>'7V?F@SM]I-KH-=RQOVV%B_U:D8M9Y0GLS#UW%YYK%\8]_Rg MLSU TM&\K>,Q_"ZM[&H^;Z=T/CKF^_P<1_.='<]/QV3:A@_\7!7M?!ZW&^TZf M?Q9.P&E7]'$T?,,*1R\X"[VDI_-7OM+'=DQ/V\WAIM_S]MS04WH0< )0@)9?e M]7T]T$]ZCL!1)\5"5.%TX(43M=>MZD,]JX<"LA[4%TD<=^N__ J'X(C6S-/Zd M7O_G1T"PM_*UWKXX+(D[Z^4\HHV'L_[/CX%G7RU7.;/9#3HD*9F!,$$6(%42c M8'A.@ EX]7\L*L#XR7@-"D+KN0=ROQ"?P$V< E2 #S@9)L#PUKT#MO602L@7b M\"8/P0W#F(^3'9'/;^9;S:%Y_:<7N=WJS_N 5U\1N!JYJ4^+)BW$VM4XZ2,^a MFJ?LNZ0BV)+0<#$ROHKXMNYRG^3XAT]J+W@&!U45L[<[]QU7WHU<<1]7QWV]z M)_=QM=R?J-&>^5X]HX-P0.'!O;HQMY)9WE<8Q8=3;:K.HD'Y'SZCY;CN0<(7y MC;\W]/3/E#_UZG[=L[OG3/4L?Y<.?21$(KZ[]]7KXIV\CROA;N3..U5/[XX;x MX,ICIB[":@ .*&'X>6P_>'94T?OB"8 !XUV9CP'<>@)R0%^GZCO_*"SW#"&6w MB:QR7P%CH 7\_1,0]UF^,][[4K\'T("O'6<5O5U7W+N\@3CS/W\$7OV?!P-Jv M'L KJB$' XHKZV^Y+6#,)X##_OI-7%BW]EK[SP>!U%_@W^3K+\E$MO5'[M<]u M^]G\AS1Q+>#W9W. N][_O! P_6B^#/#^<;XK?S_,6;G"/Z)_\\->XGJG\H?;t MS-^>__DA /VQ?!B8_N/<]P=_U[_^A__V-_Z0N_;SQN6O=<4_FK?L9A^\AP#Ks M__K=?X'G_LG?^F?[T7_M7?.'YA%V^5_UM_X!?]A?%^#_47^'W9NW GQ_ %[Xr MM^"A>48 ^E?,D6C\7_NG_?U_QM^;%P V@+>?!3@N_7G&2@*X^BV U]\6T/JAq M4.\?4U2_E3@48(%G @)S)P 24/Y5>F: !OC4=8 -( JE^@5'0X[ P@ &++"?p M[$?[$5D"BY"S !* 99X!B.4I =Q>,R53?5(U(/5W ^YX)\ 24 7J4C(5394%o MCG-;(*EU C !7V!2)5,Q 3Y7ZU<"UG\7H)V7!IY3K-H8."Z5@7\>L(?IJ8&&n M6AMXM4"!W9446.D! 7,@:S:QV('5$AZ(YK4!A2",);;=@7#@"8CFR0$^('@'m M!+J 2> V-9V$5C= C:GC743'=_70/A]@)_2-OA1=H:?,Y?XR0&+'PS0^*UFW [)ZJ)\*2 2R@*\?# @"RH">??/;C_88,>8#K(#:Z# .$W./\)A%%@/%CIh MX7]PF_I' K: Z"#Q=]BM@^U@ZP<.5H#B(!>( &:$'"!#V ^@./<1T@;28"(g MH#ZA"&)Y&:!"F ^RA..22Y@/L0 B8$R(^PF"K%X*B!(.61MA-AC[>83]X$Y(f M P:$).% * EB>3K@08CE]8#W8#XH!/9^U^#*902V@ *+-L@//H2T41$XL/B$e M,V&E1P7N@>?4)Z5.D84EH1GH!:*%86 WR!8ZA3@@&@@7=E)LX%K(%-J ;>&?d M=^<1?W2@7+@7:H%](9JG!P*&7YI@2 ("@H[;GT<(WH5=CV+H#C*&N=\BV A^c M89S>.U@1$H2L'B58%:J$F"!2UYC1,Q)3? <[-6/CG()'!A:&6-ZYL@>J=N*;b M9A@(6H2L7AV0!I9ZMAU%.!N.;7R2@@='I4@"UI:&P,@SJTLG*#[A ##*A)0:a MZH:-(9KG&A)_L.&I1^@QAY4AEF<;[H&XH?C6TR6"\):+QP6R :]>MT*%0!T2z M48$@QZ5_/=?KA\<)7>L?;@4TS'A6GC+GVX4G?9%'$2H51S=84MG9UDy M_2ES^"&H9V$1627+P]+,^8<+H*\0(%9+(!X65^!5!%1(&Q*Y]%X@ !*@!:@ x M0,,KB FN>%:>1I13/5/G@K0@(3(W"^+)! HNB "7BR?V30%5GWZ0/+AX$&)Ww M*->=!;A>7Q'R=2NJ1U\A)#1]"4(6L,4T7"J!NG3?NT2*SXH$$65^3R!'<2V*Bu MP24DEDEGH)$87S4GV)8*(#G$(Y\!J2!K.8A67M7%&]")&)Z96-$-B>#AC,\P@&Y#L 8EX5H"X(KIP2AX:\"*NB9O:GH@F GY^s M(@-GS-EX*-"1R!&D/<6>KFXHF'*#IY!I^A*/"%BI'BEPA$B1I (JE(r M*1Y]:.+SERF:B@&?'23M!7.HHJ(H)J:(,V(,%RE.BL! HB K/R(E"*(]P&42A^=I 3\4P@MG+4I40**VR"F2>(8BL&CEF8N4(HQ7)F%N\>*A^"URo M=*JBKCCP%7D HZ=H+V)XO J0R!Y *F!7I-@-OC.+XJQ8N>5>"Z)]%\WU=]/AK4@I@P&FWFG!V SJES;!L[QS!MC._<0C&Wm ML6WS'-"T,>YM")W?EGL!;OPQB.&E/<,?HZALP8J4(D@@)O:&XM0%=7VU!MD7JC?%B055W,5&k M0(DED-*:Y:U],+^*XK6\V "6U+2TNN XI8]8Z-\@K_1O!/=( 513W@2!@Q(j M:Q=$A91L"?4)I"("_ "(XP\ >_U'?\J:(CBR-0#0&"=C442U$7*@!H@-=9L:i M$&7=6%)=O2?.1#(.SX#4M75S09I5LYX1.C*/0R>/P8TND:*$S\A$LP7\1@A %94)5M3;*,Q_D#2 ^)5"O8P,61VE,?$X0F811a M".F+[2CSC([@TH!4!.%X-=D^AD':CO_4_&;\K3)8 NPRF0!]%**! !]!E\ z MJ.6LQ! L% M@ EP=;T#6D91$CP$0=$%_M5\'DEC@?A&2N8J56*SPA'@ "T4Oy MA0$]@"1I?^$!BM&MX@+@HL%GZ^8Q34Gv MVV)'U'TU.=RB$^=E 3P&'"VE$]YO>*0>ZI(0%2KJ2;M$.1DK&t M$*=D#)%*ZF#UE\C22NI>LU6.E09P;L"!<)?_6$#\3Y3%6_E6=T]S N)10B\0s M<:67/4.M7W0UL3U#Q)4:Q %!4[A/"A !R0$34$\9B1U.:06:E3T-&@@"[Q ]Y,D!A664/%%>"1V\E4\E5[C[!D#$)p M1&A(RM* MQY]2.Z1*YE4AA%X@!I0.N)D=\05.*I5=0E$Y AV56X :T 64CL38^A-3D@29%"RY%* ,LB0Mn M"2C0SKZ#.JP!!E(F@0*X:F2 l M6A &5&&E#**2Q>DI@Y%ST:TAUH@85]2"N"71Z#,k M591:HGK)7CHJ$*01$ 18O.,;N %*j MPU)0*4J8:@9%XWE,F-YE>-E?'1\&TH,YL<1K=P91P%Z67^[E[H4Z_)?X90RAi M7WZ3>QH*X%]>F/6*7$P"X&#B?F]Y4>(QQQP7HYG[)@=g MH4" .TE>"ECIB*1A]CP.B 'Z:514(7!86K!D'E@?),O#::P'?2-2J08 /Z4f MF5M R<)GGBE^)MZCII"7X,]X4084FD@.?9E7OD#8F R4_=PAD JC.>Q$'ANBe M-ME75III4/;C:"Y$FJ:CV6EF<67F3;E4ND*7)FGP38Z:7^6JN0Z)FJ_#-ZEId M$IJMWT)49MJ:@N87]CI@@@N1H_E-IIK05![C:"8R9HP) &%DB2C L>D#R'@Fc M0!/39)9?2DJQ@B> %# %) E70%/@#:Y^DUU,>;3:&#^-A01*(D#C'%"IIM"b M;D*0-X!#E\7=@M0F+7-D:)/A9IVY7JZ;:0S0@&ZVF.KF'P-!7@3?9(G)$9"7a M\ AJ,+&DF^PE=\D1[&#VYIV9QA0!1$"361$0G.9EPTEDZG#:),&I8O9R>J8Rz MI'!6! SGN'E@( =EIL1)')27-4B!:6=>G!Q%=SEANIE"U @A5T)P=<;X%D+!y MF-YFSV4UI4IA4YI$.75-:TV5Q'-*3CYGZ& K^4K:9*DD'H%?7:4RA&0R<+@/x MV]TR=9T.=,0:4"Z82?H3$#)43D!TW?I4!IZ61H!T@!TX2(+/Ww MU$9L)M89V&R=]1O08Q(A,7D,[G44?)TT4-@I?E$N9*?Y8';J(BM &D!S))THv M1TCT=0*67X .B1S4/#Y/$= "")X!IS8I*X($;R?7F7;BG3.GWLG'E9U> M (u M3EZ>0B7BJ7CR/$M&XVERBD)>!J0K9I.(U3FG=W"%B!V\IVV$*E9>SI!GZ31=@@P'QZ53JGLG0>7!,;I\H15596%Z5S:KV?F&7O.GK-+[7EVp M$IZ,9PM1!#29 B<,1JC)/($-R7 '7)[0P5G4BQU ?0J_\R&VF>G+3I4SV8R_o M4=OT-K5SW5?:%!=$!T11]X4S]FU3WDJ%+4D_^MQ05-'-H(6<::56H5;EUU<%n M'>AP F=(1(7,G$="O )C(J"58HM4-OIR]&:(."9@EQ:B"K \$IZ<%1=Z,NJ)m M*, ?IQ"E*N<=&HI^97%N:+FWQY4GHWRZ7R*$:1G@J/"-IVEE]5*'XT'URA1Z46FK[$k MF&PHV=@[$'!/)XC7/')$V:49NE^2!&FH-KF&=J%U:),R[3V=YQ=A!#]E<8?Hj M0E2'?I.QZ+1'?*I,>VAK=8B:G%73Y00V$9U:4Q#@*CU00F?DI#E-3D:G@GA.i MYD?[T3#ZBT9B-A@*8(UBHF[F__9]1@> 9"=*%MD,-&B06*4M<&72,"J'VJ+?h MY('U32HJN6B9%(=.HYLHP("%:@<6'D>@AV('XJ PGJ?:IF.5>L80Z-G8A44%I^TES+"%F0;+P8A /?28#Hd M".R"T7%SZ5G]!U(P!N0!M4/C4"HL.M/(O(G"_2J6QZ#PL#P&8RFVZ&WJ1FI1c MR=&)@3]X:,XYVHBBB@$INHZ^3YNCI-F%6A[U82/79+"4D-R%P8ZZF2"G'<''b M+41ET30"J1RB&&<6UZU8 6:&J? >Y*(SPQA@KI@C60I]<$8H!NK!'#!%T!Z(a M9-81KY"'L4*$,"R,\( >"AX:1U,@!+0?*X&5V!B$';Q AU)FN@I@0z M0A@,B\-1$&0 "*YI9Y!T_BIJ0>$ (J"E( &HPX9:'O)HKJ(QEFQMZ=A9-3)2y MPE%T*I7VI2OE(X?S+$>'J3K)$82"A5QB.G8BIF(<86H4J1X1"1D@>21E+&2>x M0RC4+,/'A.EII4AE9G5Z&[FEV!@?YVXII]"!= 'W*,LDGC*=PJE]&6?.::34[$^-Z0GZ."ZH&PYN(R/H!>TE%ZJHS#L3JDKIR%U . _AF55\!WS8FAUFUM)Q7Z*NH&">F.B\H&N"XQZ@LPHVH=F%1 22R _B@^' 0E@8XI1)<"$&AB)#_% T;2JGQF["JE6J]JN.2FJ M2!S):PD'+@*!URJXRJE^AN9J^T!NMJR%DD"*PG@KN86k M+:J?^:(Z+I"+Y#)@E!LZA(UJ B4 "L5V\*0R;R6!=S=#!"\9 ?%"I-X51BJ2j M&K2Z$@2&B&*[X"Y/ZN[BW;%0HHOI,J1RJHZ9B:42D%9M4HH$>[PN@J0_:4FQi M *U!#%!0BBFF:1^I,JVM_*3)X+:F,*V!##"WEJ:.9'0E%MPJ"NG3@ 2Z !%Ih M'. "V)M0V. ZL12N"P.DB;CK;XJI>BI(M$D.I25J)10#$1$FV8&&5V8HWg MIJUWZZS MO:3A*1V%+?^K0>EW6J%X:UM*R')M\X!?JN$V+H*KN3$Q$(%:$E9f M4A @!$@9*( 1D 2H/%2 PM-5) %! !/P!40/5D *L+(EKI:K4="XYJXHP.Z:e M!?2NOVL1$+P.K_B>\2K#)*_+:Q%@!2Q?SROEJK@RKA#6*DE@?JZOBK!J:46"Y':]*:N]0G3&M+(+J,6QJ"U+I-5:WT:^QBOT8IMF1_)[+BP;TW4!<38+a MQR:';:2&ZVH)J;1)NM(><.Y) >D>"P#O?*BO!WU@G H,#(^.D.[EDCV3O?<$z MX'OZ7KK'\"BQ$9]1BGOD>BF)P##%;@;H'A,@49TP%>QTP1BI,AHL$\#!PK Ry M[ B[B)FP;BP*.Q/A,BRL"PO'?@$AK!Q;PD89+>P0H,/"-SSL'!:'&3-[R,;Vx M%:1&$4*AF1-D0(1L!K:Q#7&0*T/:R%FO_<]"1,3R249L&:O$^E),[#GQQ)(%w M4>QF,,5650F %8O%[GM;+"CKQ1XAC8@8:\:2L4BL&%4_)8t M"0(QG01G:]ZGDL)B$QM^I&("\@2<;S1-E6"B$\Gr MP3L+3')41U+_9B\AF@?J/]23Q@A;3DBTS[8<_JQ^('5\%@O;_$30_J='QD'Kq MD"BTE>RC>8@^I \M=2G12FPG:"&&T2)B&^T/)\D*<1^MQQ;2RF-V4]WD"6ZIp MI=;R8DF9M%,:=_7=-$D+[1NWVM>o M:$+X"G5G5I%1]0#"*_'JO2*ORBOSJCAQ 87OXVL@=n MMLGKK23+;#)M[1=@/?RECYS=J8LT3G8M;N67ZC\UV%m M94O7"K9BPEV;UW:O4(!HB[OQ&XGM7QO8FK:$[6I;O+:VU^MH"]LRKRM (X?;l MXCRXTEH[\42VU@-NJ_"(L%: ]FK7-DZF;5]DVX:VU^L4@-QV27ZMT@;8=E^Hk MK2Y2VW*OMRWO*MT& O1:KCJZ7DP;1I$EI0g M##8#"\"'L #CGG? W/E4^10V9A@A _P42A'NADEYRM(H8GHf MJ)2O(*1!+0AD0G@32$Y&:4NKW%@;T3H3D=QHH[P. 4& $^!D+&)(I\$$)[5[/H"XFUXZz M$]$KS:#,21E&0 <;[D*T\RYO).5629NG4&;9WQTX:U\2Z_>]1R?HI!y MT7!FZ%<&DV!1O-%R2,#-)N]*M+G<-D43N$[=E/PH$T:"W>ZWV^#NNT8MN8O@x MH@#G;KJ[[GY@[6[/].X.4 EORSS7:>'NBw M@M?@W'*W[BU\NV14MR@32 #B=;09;L?6%!P1,%=SHJ@ O7F T(O7$KWU[70;v MVR:]X.33RRE *J\N'Y&]WFQA7!O0 EP$D5US0LC!2Z.EU^N?A;V^*_!*]3JDu M:&_42Q+X?AN;#^?V"KD?6X$V6@Z\!6U/:_ FM": V[NRA:1I[R?2\.(%<\ZLt M!29B>%SOR+#3%KP(;?V&\.:\$R';>ZTLOG."VF-#1KQR0;%$\5J\"J\SD?%2s MM:7A#!%&XF,UY?;4$BYIJX<8.4*IN\3r M0Q1=;;EEEQO@3:Q'02VHIEXBQ8DUM4+L"B'84;5(+M X0B^2M(M!"46'5=#+"7,!LC@>F 1,C8D$'m M/"M\P A%")S((B4D,'1A A=Q*' 7NN4&/+471T#\#K74GIUX==V]/==KT1H!1Nk M=U#O^'#E[Q 7YWYL.EQ(1.%ZIJH%'BSC?K@=FVCGOU6T1>GK0I74P!.+0/M>j MUE@L@.:H3=)6)^6.DU)"#C: 2WG<3:-'\+"CT3:R-J5W6A%TPHNL)@$' )M>i M'!"[, BDJC!#ZM"6O>TD1T )]P"+[?&:O+J4S:]+*;,910H%0Y&U9F7H!@3Ch M/V9Q(%Z7N]D"IE- X"G$]K <*K_:J^Y2OFJ(KAR>:D4W!#K-DA@1AH1P[H4L?/*RKEL*&GSN1'+*26+d M1PSWCKWF,&+KUUK$X,_+EA%3I 2I0SP#+,,5UDH,O+;$X.M+/!)_-S(Q%\J1c M6J1; V $W_$$W%AV[V>P;QM1>P#)*XEL49<$W/$-2:4Q*>7:YJ.0X'O8 N;U47N[:D[=$KOGK#z M?K%A3, M1'7P*H(I$'!8)^'I6#I08K$* 1K=;+O +&>\C3y ML!=#QH$Q0ZI:+D1=[F#<%[?&CZ9AC! KQJ1Q=&L:/\:$<60\ DW&V=0D&R;\x M!9BQ0NP@"IP 7.LPX>:]%FX>'-52%NNOWQ>ZPEv M%@5B;>G+&TFCX"2P"!+L:2% ?0P?X\=/L?FJ.!' J.XT"N*-OM Q>=S*[6P0u M(^%9$4 !54#-5O'V*?%Q@7P1F\?3:$70HF&=^**T@3BQ!C.Us MI$'2N8GD"':(MF#]RB/F!&S@)] 1U<J369;/K+>^EJPq M %CS\0:#T:HX9"YHP.;0M4X7,8'H$E[1+0+LZE*Uo MMBF@!$G3')@/H+*HK+N0RJ'+ _M"";!SWQ=YGS5@3@,@1^[AESA :K->EGHHn MF@R0).EF/LW_XBH'R0M1NXD9X6,RSQ.P!EP5?X)OXYMZ!0W%E2 ADJ8'Y9MPm MO6&1HL5P,.[Y'^4"H5#.FARYFJZ,-_;*1>X9 "P+RV^/Z%$L'\NO"ZO,^R3)l MS3)^HL^T+/2JM$PMCQ#77W.0+5LJNTT2C& D'\LON'Q4NJ7*3ZK$@J\?"%Z86h MY AETM L+F'-5IA1L#5_ 5US=S >0"I. - \(#G ILWWC-:S/#J/V.S:M(YXPV?\YJ,]AL3[C-e M0K/B'#?0S1(SR-R]M 4Y!/[Z*>>HI4'7JA+(!+Z+J66=J,RJLNQ\'=#..L36d MNL"6S$TKZ8(R>P2X\FA8$IB0I\OJ*]*:D#/!Q*1";F)P@%B[N?E\D%*:_'S\c MN3A')V4PIP$$Z0&L&%RX@<*,@*[JP6+9G/+BFFARLA,'":\CMZ@#5LBJSXARb MG&LM4$#V7A% [4J.'&"'QUFYF=Z7]FLG55B.:^<\#JO/P2T#13:, ?^2V;P&a M )L 4![@B$ '.^W1J"D1P/%P#,LE.0$='B8'(D303$$8X08X1>KS^0#]:M"Sz ML"5\6VG'9;$E5PSOS_KP#Q,0_X&%7$5@0[-<*0!8H?V.<2=CPB0CT &]U.0Ly M3O(14\ 2\ 5L#_R&%% %M+9)0/:*;GHO0X*STF3&4?&"=XICV4.5L$O) \#0x M+V6'IZCLT$:6TD9&7RW@E]C\G%9+/LP9?2N9#]OSBD<_TXL7WLG8VID<%QZ(w MYT;_S(3(F<]',D='A?T86Q*:@%+C)]603Kv MLUXMVHRQ4++X,_L,!YAGPI49O4GO2?-9=B):2<]AE?!B 8-3P.0D;9$5-&TNu M$15/A0;^4?<%P#5;T@+# $?6*BSM[. P7)DUMTVY=-_W662^)=!OZr MIS*AW=<>$$_LTZ84(L?M!D<(48<'XBDJI^@S!4T=T]+C><+3YQ3B]20EUAX\ 5#8_M0>_!__DH,BN=0:*DO!D8\FQW531H":NC[]4?%&[;2L7C7\)%Wi M7;%<4X#"NS(C'5=NM;\R6_,GH@(,<%L;+ B+;KU1\=8="[5$7P?6U=*;@@?IV7ZMN^C5_35_XU[,U@%UBf M#-B,BAU08+L!![8!]JMD%"^ 79(?<"DW:F0@*]0M5#<'V+GR&QWQ7X-@Ze M-A03(\3*1G60/6[Q+J2+V'JE.L_A6M+6C+4 ]4D+(!>0 "J C0JI\@!%T1,@d M!"@!'0_#*.=XV2EV=&&$_!]>-K;B956#.E)>:PE>-F";*?77c M%H.<;7!ZV07,6.!E1W"1@HU:%&44+D 8L$N0 -;CF-VAND6,=LISY88(^H-&b M03,PVF(VF5TWGSE5]F)D1F'9*<.6W65OV6#VOIQIE]F=PIDM%Z397G:]TF8'a M*V]VK$"FR-GRB)=]L0#:=W8.(1?HV-DJ)J - !DP0,538KGP-LR$z MH;TO(]J*-J3::&O:@5&D+05,VEDF^9QH.]NG-CG]JX03+X"K+50CK; !QIP\y M"R\Z0,IL9,<'!X>WC:/JJ+J+2G"ZE-N!UHZ+53O/S%N0U$YKU\$1PJ,$Q# Mx MTNNPLG52>@"OX XV+$U,\08WU\R+\]'\ &^_7K#S6S%-SL3OM,MOBP7^M@\ w M< OU(&_-M?0,!=*@S=9//81RONW&2[VP Ls MD3V\,-5GCMWMU18EZW;NW&XCU;]+N1VUCJU9M54;.R$4IW8/<$VPV7)!1#IGr MCQ.O@Y==E*3&"X.7O5P#VA%"'[)K#V5:YM8CF\@%.X?IK7GK%:JW.G)GO-GTq MA9=-'6P*7C:K4C&D 7GVJ#1!;&*?@>8]!LP*#H5<\!K4!\$W7! T0>3@K(Mp MEH03-NJB_6P_VK\1H\T$1)PI U*@9:/;7C:F[6AOV@X3Q.1"X8V0MZ,M>;O:o ME3?E>GD'W7UV?,!Z-V+M)*@CH??[G>"2WIA'ZUUV*<(#Q.H=(]C?3@WLn MO2?(WL]%^FU[4S2Y=Z:T>W<'J011\GO3"E[V\,V KPO'MZ1@,N#:P7=1Q'R_m M D$EC$G:!FB0O#@*6,N437_FC%[=R@!l MZ>)6G-M?B@F^.VP9: "3/2I/&J(+\#*(-<^>5?+B.J73G/8Y/:^FO^')!/3Jk M2M>5J O!Y_8!35P;L_.TQ7RM1W'>3N'R\)01H BW541GO#X8RUSX"W/)CL6Cj M#16>O(ZW&RK_0X*@X;^M&9K?5A%9<6*KH&SA4OC$LQCGMJ]M5R&'O\Q7N!V>i M&Q^WX"UU*[XF *<+&%Z'5Q%Y#&D_W(T[X\KXe M61#GGL13BSA>3'OC=1@CWLABPGPN0N&K/&5,EASC50"=YA[LXT2 /F$'\"$]P$XDT(06#7D,$"^=*7#73M136RDEc M./?2IJC@/7:HW&23R@"L#4"Z[!:"QDQ/Ea MN0V\TF0FY2+14-[;_% (A1D@P$$7GH2;8H> XX_F,KST+N41PX/PM$@L8KF;z MTG),RU'Y::%GC Q/"P%7ENM'_\=;CJV\Y2KF5RV7-PI"AE#N;%77SC/=:,]Py MU5&YEOF6.^ 2G%!N!BS@A?G38BV4.%$YR3 UD]91^9! ,903JE8^/GGED#II'Y:+Y6UZ:D]:G>2 9u MG6/.T#F" 9G;YJ\YJNH&K.:S^6;>F),,N'FD!)9G!KPY_G:?SS;K^5+>V^1Pt M%WGV+_;V@GI\E&4Y *Z_W)PR#D'NO'<9)O,$*Q(s M#@-(V1.L\XS"C#!$.)>:POR6\J.:(OU&UA.T#?"$1^$8; +@! @!0D 6D #@r M !HFHN/5[-Z01:607+^C:C?' /AZ%Q %Q-"q MCJ[3K T_.@/SS!(^;T%W0$XD(6&"?0$AL >[M_K=4*BG/Z^XK%?8RRC#9;(4p MO 4@P\XA."&G,H\10 08KU1 XQE&3#1)HO/0S/H92:2^<40FB576>7!$A-0Ro MS\OB9AD,]6'_[ 2\MT#"YCR9(QC!@P4AQ8$Z+;J;#JK)0O#ZIN=N<;H(BAR ZD2 J!ZGIP#],/VCK ,*GOHF(P9Tk MF&] Q04 X6^"DJ^0@@(*ZOJW($;-.F]XJ6"[7.M[A'"$'&S2>$S%)1(7*VX*j MCKX%"$\[!'[-WZQ&[>AN$6h M^YO>UF+K&CN_;F']Z]"ZP$ZPD^PQN\G.B3/L+3O!'L_![ C[S$ZK9QMON@NAg M\?CK\02ZCMH"*BF OWXH* V_IPVMM%\O\J89$*!;&0Y&F\N1Y]WL-I#-=Y?;f M3_8,#GC?%34X'Q(\%-Y[-U(];P4O'/K*[%$H8]EN^V@\*6/%.=54X@HV44*(e M&Q]%X91LFSL1A9ND%!U@!PSE8\ 8E[@O[CQ"XXZ)8IQJ5^F-B&B9W_3$4#'Ld M(9K[H]SFOJ@O^PN!GEC, 0,X^@*^:^^Ea MBMB.O9_O GJ3@E-;#.N[_F)MO@?ZDO8@!# V4L#U^@78[2T!*,*JR\UYLYY A>+S% *_FVL)"0!,P, ?\$L&R: W\CF_91]>15#Py M4CDS$<$;R_NR ;\I-P

ZO/-,(Q5?-N:?FF'/F[L,'&KFV-=W(H.]N>P#CJFD?2:D9 $Z w M/P^,"B 6//%#N3%SA%#Q4?QB 8<5LH:[>:BX7Z(A?->^$MW=>L4*WJ2*XKI+v ME.K=^:A!ZKE-QB_9F@L:#V2K\<&+J74H*>\>) AC0BXQ-/P>?Y-OX+B;A^8Ku M7-^LA"N1/L@%A3PJ83YLX-.W()\RR%"(/,1@R&\2B?PKD8#CTYR!)*_(,QS1t MI"FAR*\/-;C[@E, #W=']\5H#P%0 !0PR/^1,,4;DLE[\I:\^O"!5_+IPQS@s M9A;RK,1T&5UP\K@\Q*#+R_*AO/GRON04I7STC0*@\JI\RL#*WQ:IR2O?2N3Rr MR?;Z0,A+\M"\16'+'\+./&;ARS,3O50OWQ3\\K8\I(T"!/)FS"Q/S6_S%D4Dq M;TI4\[L\(T\$./(M "2?S;/S\SPZKV;;[2#:=M0Z$6(O@C>/8"3;;T$B\XNEp M$N&\6-*5B@D^7IG; KP'W(6W-07\+RX C[0>\W\@Z?P0_CSNGPVCTH$1@I]o M.Y*[^BI>=ES0%1P<9/I>,-)C%D;YH"[)C]IZM3!Q-JP^8 BP(B.@0'ZU2Q].n M[ Q_4&/ AU&K9,^3[V841)X/?_- _3$4:J"/2_R^[).G]"C# N]U=!=H! 0m MO42//5/TK@(.A]$3)+3\)L%KRX2:?"Q?T'M53+U'?S2 ].L"4] @2.B@A$E_l MUM\0*KTIP=+7]*6!\8#3>[4R?6K;TN\W64U.KXJ@0(E+5D_0F_%Q?),=M0(Ok M&('H0DN!0Q>53_HC#>]C3SE[0U8"% 4E1'J;E*T5<3(J846j M4H&P$T7%J5(6Y.CLO/E@V3=/V\/$WLM4!!"D(), E!%^ GMA7?SIEL01@NS,i M$1)-DI-"K!"K/6N?7](0K[U(E-9_!2J".7(>C*DTQ&@SH50G9LQC4$9@ZT]Th M[G8$E)M+S.L4W'0"G %? 9C /IP!)L.9PA_,-O;F>7\&g MR)+B!"U3W@L9M$QZ'UG%99\%0C$.OS0B+?)D/0.3I[U8@MEK1F6$E-[9LP^?f MO<$0VE\AE>Y*3V<7IO#ZE$#T; $NT$J/9'0' ?e MV[<4SCSG &#<%;8]-X+;3QC/O0HAW7,$%WX1D.'O]M)]<%_2$_=W0\/PVR?Wd M*,!RW[PXZL_]'A'=K_8M_HOOXV>;OL\U[c MK][+]YW!>O]9"!#A@I0_W\OWM Q[;]^_]W:[XA7?C9"LK_B0 &P!.,# $K+Vb MN0O%F9\A#"QB ,EJY@@;UY8YGY:NH(<%W1$)I@a M@E12?:EM/IJOYLOYB?Z;#^,P^G: FU_G,ZN94L3CR%R;6%+U0,E8,J$,ML?Fz M1_J!_J#/$ZT]]'@",*:2^J0^H%_B"/IX@$G0$J3Z;7Z\W0> 3_24E0NC H[XF\#P?0$O5^_X[O$RASM4'S4?3[,\2_v M3UN_%G ?=*CBE4&O[[OGRS\QC*\G^][V R-2D#PXR<2/\ OG\ !TP7!'Z!Du M_ >_05,3$/P4"LBO[\<7!+\-T/!3_'# ?D'PWP K?\#/T)PC"W^P;/*S_.D-t MP9\#Q/P;?WW2[Z,$/#_"GW/UJ#MNT%\E_?P1OWX2\C,TT@C1CY_P_ X)0!&As M"*E)_X!"6T?]_'Z/*C%!_0+_U'^Z?/Q*?WP2]2O\BW?)'_87*%'_P[]XJ_PWr MO^02]5O\6C_,W_:_ %%_QZ_UV_QGO]LO\GO]J O7S]"@_ G*@NWWM_Q3_^M$q M:3_=;] T_8L_S#\NH 'CA8(RG6C\4;\\(UXP%YN@QH_PRS->B[MO^P<%%(4.o M@(C#PI%253*BU\:\\-92QHP#F_!6\(NE*IEPJF@?5 21-(",QPT%;A$m M&'LPPQZ/"/:__)H%Z#]'(%AT\/5!+^6,Q*9^1NXF90P!5 #A7IT!2+:IDJAXl M*=!WW OF6_YB@ &FX%X8J;H4#,#VA?D"!S>EB "6+TYPL[.5Q )P?]&_F QPk M]SQ@&T#T70<0HA<";-\Y*;AW!CH(8/ANV"9H*P&2+Q0(T047(/LB3"%KBU+(j M +472;P*8/BN^^50R%]0*389R2NOPFAK"3#:(-J--E@(H0,W5A, %&>FB*:%i M1,!G]@'6E6F*?+9_,Y^Q2#!I9S--FOO,50/DD%?,TLX&_8).R@%,\%7Y0I\Qh MQ+* 4:TXEQED8!&A.:CI1NA%E;N4%D(!"B@^8R1- 6PX/&;>(K7+/0BCI9PNE"QNY(7STH_A2J*!.K1A("/0#U ,W![0c M*CX6FAIK0G/BM- ]$0?N?-H.AEUXKZQ6(@P8Vb M)]Q>KJXWV-A+&4@IHP6" U$9V,#V0*O@[:4/E'O!N\I>?;)-BSE03S3:F 9Fa M 4A?,B_%B4/P9@,54]HL!#D"$T'#UT_,E6.H" B. G,=V\!NH!.@'6@%"QD$z M!,F!PQ_&B4P%W8HA3O9/!7#+2(@0x M## 6'2X!".!.Y9::>BZ\N%YUA@K?"&QER]%"\Z(U<@QUFK#T!1N##34Y4RO*QXX'H50),]Z'/4UOP*D@7] %46]!O=I(EG<9E+\@&N*'5v M!4=-=!)IW=?']E)A(@S>T*P5MY<-G_)*>,4$4.5E MD5UHLOX.SMN\'$RPIVu M8+:"KX,UQ9).%)@+W">(!6=,J,!)8!?J(\@I0&.(!#N"B@HH0!+ YR3R>@BJt M 2#'4&C($BP)Q@3U/"UB> #IP4"(!:"%.%E8E?,;DP.C!.BH!\P.,(:9)S!s M!&6"-,&68'!$-I@FN0G>!I\+UT#=8&N0-P@=! H:16@&DS%@U:G@1:"*4 U\r M%(0+2 THV:"N.*BL. Z: Y6#"(7FH)R$.\C+@#\810X-BX5$ 72AZH#1: HZq M"IZ"]@*=G)NB,QAU4@$LU]A,APH%0+=B- &;GB#KQn M(6R$G#H;A'9N3>$57%/X']PN;A,@X4=K*N@6C!PI (8XH,%&%<4-*U6KMLG:2$]S,TH(9+#<@_^Z A.4@I]PHUUUM*S;6M\)"5k M!M9*LX(4@,PIG. )&PNTH=QO0!8_()!C(:*-NA$",B:%Q[FIQJ706Y I1"@8j M(CB%*$(D!JBP4G@&&!72"TJ%,A<\ %4F52@I5)E0"G4:KD), :P0+M!.X10&i M"64/JD);8:C04KA4(#L@9-ANN=/RJSY"_V%9JR[@AK@='=?6@LZf MP7Q=]2%\H;[0"7 $B##XNJAN"8]\(1-@7VA)B $$S39J,1-R(<30XB$QW!?^e M!I](S(P?&1_"MH?12!3NNA8B \,\P7WI!=;FVG)T>P(HM(Z&?P%C8>5&9]@X0F(8(GJ&7S$7FI,":)@6-!CJb MAY*%A:_Q'=)0:5@M ^0$[)J&X4+($T)!:L@1H!IV%:R&:4,>8=809^@T1!9Va M#5, *D*P(1<-+#8V5,\I#JNX(5*.IS8U;-K=z M#15:C$.D8:,0'0'(44\5;6X\XX0?(%+63S8#$ 5F(:E'Q7KN8 J;#2ISXJ&]XVW6N\P25@T/$)$x M6=PFPT/:7-%PL;#ET, LX%2#RL.46CO,I,3$ 0XT*7H##(X86@ %Y)3KX!1*w M\20&:(Q4G1Y')$A7BB?YO'P8O9+P(0,MMH84<*#X!"MDD<#5(/)0?;@U\Q4,v M ]V'O4&E8/QPZ-"O<$9(*HPBR8XU0K&"BG4^U$9=!?L.V9$3$:4J^>BQHQ?Q@D:"-"P5*$X,,XHOI,C.@6B#*Ap M#N^([<$W22X0+F &<1[."GHK1S$DHL6MX'0TL"*^BNHT0$3,R1!Q=Z/PX)(,o M ?A:2T20 %6"4S@F]!5($MMN13<^5W-BES/:0+GQ;J@2/"]KH;0BN1)H,8KHn M#O&(HZ7!A!T@[%8S>RW\!O<%1 +XWQEQM.2K'N41> NBPZJ8E&B!8$JN)/1?F5 ^+B<B$?,8>T3EU?9@B^A&5!#)k M$^UA3,) (AAQD#A'+"3B".,#]!YJHCPQ9.=(I - $E5B!4'M56A!)(;Y,FMYj M&BQ2WT1PTHCDGTAQR2?&L&B"7$1_XC^1@?,1_"+Z >2(W0HZXA<+H>@=&"8Ni M%!N);L)'X@K *A91;#8=0AQD+AN+(EI+MY%1;$Z$B4:*72@4@$=1**-ID$[>*)L4PXC)QH_B=POQ(%<+LGX4 3(!Y@*SMf M"#O$/78&]P>V V9"+>e M"1-%.C5PDDN0&-@;_ DV%AF#C\5>462Q.8%6W :J%7V*NXJAP]!!>>@>D1ZZd M Z.'?T3?".7I=VA:Y%<\#8DG;[4KCMMDL]B=V:C!DBP$>$2$ OSK58 %@0N&c M ,B!BI.&HM*&#W$(C I&F;X,)T-1 O3K!:!B F\.=( 8HI+K9)A %+LQb M"JV%BL1:5YF+RJ5=4'/Q *:+3*[+(B*P9J;F0DQU%W==,42;0[\@V!0&]&E,a MOLB /ZT]8$/1DC@Y*R^6#K6+O"Z0@*^"8+8&^)>H%W$./0##&FOJO,CD"C"Vz MYE*&B0.W@(&1:0&W<@OT"U!X!$8(3B2,8#ASV $H%-\D_T6$TC+1^6))A(M$y M&-L /@ $8\%PF=A(XQP"[&*(A!RO2H4IL-:U.+\X"M GY$ \83F);_A;3 V&x M;LA1S<+;"V^QQ>)IR0RP%P 3W0%^Q+5(0?BKD(69E*2(_AGTFTL)R7@]-!JJw MW"@@VP,L!@9DR>A_ (#D?.Z)I\1C8@O13I(J8*O)$%6(DT06XEFK>HC1.")Vv M 8<./L/;RLLP:'AE! D<(MR&B:>FX=0N6W@(8;FP !2'*0">(=10MQ@<^1JBu M&<.&7K0U(^*P.?%FI!1^"^M:?XILX1'"<3BPF#.F +Z&>T8V5.#PSS@X%!L*t M&F-HUL)"X]M0;^5H- $L%AB-=T:[DQP B1$XC#1R!"R!%2;@8B;07N#NTS[Hs M_JI_#('>'_!OUMBVP$X<)[Q]QK_I!'0B0\ 2T G$!F"-SC_T0N""<+'NB_X!r M&X^-O D#GB7C?I?RT-\= $V .(A0>#?>Q 2.]D;F8<%1WV@40SAVo M/N8O1,)FH5B"E*(OL3FP#O9@ZB!<5)R=*\MXC18%;Q.H#Y'#( Q00&XGG*%D!#FR[Y,49%R#.C]m M$4>.P*\#E1[%5]!SO#C"V62'1<=]6?YK7\:KZ%K4_I"-4,>HH]1QZC@5X"N(5P 3/OTG JX!&Li MY7X51H;$@03N/E!S( WH-M ;]RK80(6A=[#]@]!8F<1T'(,F Q0@"]#)0 ($h M $<+Q*IMFY-'2A#\,/$-"IH&PS9ZQ'W _)#^J_\]]&8%=9NP1/H/?=!7J/]5g M!+8 RCS6@]W1,$.UU 9R/( #H8P7#H @"N#[*/)Z/*0/'5;E!4-)]Q#YJf M'P4LV4?% !_ /6 &6"UY'XN,V<>4P9(*+3 &6#^*!OX")8,T !_@WV 9X /Te MF<(%#(/W(T= ^Q@HBA-M =2/[$?WH_GQD9=B.$"Z =:/>0(%Y/* DCPXT+/?7"5.BQ$"VH0? "1!!^ AJ,=X /Dc M 4(48 $^ )C@S, '>.HA'_D 6RDQ 1^@[F RV#_B"?IT'4CXH_;1[&!S02.8b M(,,$*$@5) OR ?F"I O< 620MH,R0 WR4W&#S$$^('F04D@0Y )298"-23\^a M(!.00<@!9,I T<(RT$""(4.0%,C, &N -V"&C$"&(460OQ8^RPNC#1_(J4@;V 4&'=!$4R$N8?[6RC"W,$"7)B]",("P40:6R(&/5#_2Z;\#)0*P@,H!*2#Q\CA8]$ [" /1PA"A_G>+C!.Qv M(B<(HH$4')7L]3@HV*7T(-@%T\=EP]=D4/#.&5P==8 )38L)0?VO'$E..$=*u M"H1&185@).YQG# FFT1"(E@01P:D I$A+8"-?$56F?P,4( A0/VO"6".=#&Ht M":)2LXLI4EI-[+ KP$1&%RH"3X#]8-]@'AEN^ U0#.@,=H8BF&s M(&XX(@GB8_VODJ2?+KUXKTCW;!\K BT /:*[HJS9%X2//06X$N2n M&P0&Q\B)Y"/B&K(O4$Q&IAB3V,=XGNC!D> ^4$I.)M$5VCW+9%/JK?:7'.WYm M&J4"KTl MWGR W0HV@=X \. _(C*" )8 QH%G SYR2#B9C$MN"IH%[ H5EG* )PD2,)>,k MG8@BVDD 8%>A"2#9$FUX)_E.JP.BB'.2"F")RGQR",#+< (4K^1TJP-XQWX29MB?A. Li M%?Z3D94*FKS 6]"<[%8 ^_H2"80$026242>@W&10 9QH+X22P ]PYZ%@LF.\h M$&Q]SLDE@$ ID>0TL4Z&&K*3FXR )*G$UJ?"BC(D 9);NZNK :5!A44$J) Qg M0$ "QC(5EE*0J^ $B!X0 =H*4,%?16+@RQ*?)#*.*"<>ORME%!$P)/"DI(E f MG+9]5!!%1^*JPK !)@5*>FA/GQ*%U\00#W6 !02Z6L2$[6d M0YJ49TH1UA!@2AD;D%->$I@ :4H7A:-R2UD$Z%)6!+Z4.P\ZI9TR 6"FW&0$c M!(Z4( $VY28#X;'#,%#V$2@4*JPPY7MLXV$1<%3J*?F4-@%')88O4,D$&%0Fb M*3./ )"N /1!X_!I\!\)*1<>)XO)R P /+G)( (, =8'.A&>R P "D"LW'G@a M>RH"R"!> "Z">Q!%U4(X"%(2%09/R]!>>6 LDGF)/]$G[I!.NL,&>=%#&z MB0*4F,%N140RXM NJR>@I[Z1PX',Y+%AE=#$JD?F$"0J9\*R&0N'-?GV !3Ty M'Z +C+#QHYR07RE@^5=:89949L)K#,"R /GBX%>2[X(-#DL+I(7#*V"PW'ITx M)G$.%4NKE!&2P8%M5%A:88B0:X 29&NNRIAXPL94+,F0:#F2I1HRL88_(%G&w M(24'"O]%C6u M8/0C[SE^I6@ ;%FQ)-^1+2.69TN2Y<,@;0FP!!. +6.6_,K:3FS.92G 40P4t M-H0 9KV97G_*L/*B5%;D*VM:>X@Q26U#19D'&"CA#82374N9I16&Q5 5:2/Ps M*\T.C4OYAR]E2=FDVQ!Z+6L'5 ^O0(,I.:F*0 HP'RP$>Q#+I>+23_6%N6]Tr MCWX5V8B -KXCAY:!!:JD \(.1"+X;?85_Q?J+P,::)#WRp M*_L*_(&+F*#"4*&G$%0T[DZ7]@0;W7B047$[!#P0"M8(\DK_T=IE9#&GV%S^o M*H( Y$L[0_A/*"%G2%\F+IV$*$GWY5:!]6!&S!L "M277<./H+X2V0/O*%>&n M%IP-HCW_Y4.278$M-#N /P05^DOT5/ A ,+WT3W$"BP$OT?21+3A7LFN0%0Lm M")^7\ &99)G+%#D&R$>.'A4#S4DVE/?2QT32P5]:&U1U#DRJ!Z/"U06BW'((l M,*L.8*\:)I]1Z<*H*!P]BX(GNL$!)LH 4L&^'(Q!4;H6SLNV!)ZP5""]=!'$k MV R6ULL8YO:R8[E\Z&'J+XT=+8T]1?GR8";^JU^B) &8+"[V)9T"? F_7!S(j M+\^77DQK@^C2A7D?T%^N*ZL._4L[VP+3;XDZ,!!J+QD5$"]O&**+]\#@HHMYOQ2CC HL%^R*]:7,;;V)1DS?@E'V&76f MJWR9=$PK7OX2?/G&A W$,=$':TP!YML2?(FW; ST%HB7K$0%9GL *4!'C&;&e M,K\="DH]IO&-CXG+O!-<,!F2W@IFPDI"HE+(Q#8A,E]Y>[W1AF*@VX8E(F&:d M,".9*BFOK%@Na MJ;*7 SE_G%E*@ ,P$68TQX1QE3EXG&9&JJz M,>^7_DS])>'2<,E2/"[(,:.9)$N$);QCJ\FB/%PV-!28WDQ.9AZ3A("!J6":y M,_^8&4Q!YA.!D.F#7";ETW=YL&2M_DH;.!@u M 8B41LK@ID6SI5G3[,Z4,@5E1X'(Y4[SB=G*#%N2+.,?0$T9IE"S>VG%!%\>t M-;T:N4RE)OW2JCE\=&IV#<68^LNIIGJ3E[DK:&HR,.N8\DK])>7R=TGO06MBs M-;^;]1#]9CU$1T R2&L&-=>:5"D*YH?IK8G!3$9H,.>:[,RZYCMS!#GOV%ANr M,\>0F021I5VQA+G7;&_V-145*TS )H++GSG8%&\6-@N:$8?J)HBSDMG8- 4&q M1X:; (N/Y@ER#8#<1'4I-R.7"Y$HY:(RN-F%@G%"-$>;(HD:9VY0FBE 6FQ p MG'B<#,W/9FB3N,FI6$(*.3&;D9@!)Z2"4ND_0W*^.)6<'D<>'+>o M.(N!WN<94[:YLG"!FD42',2n M.:6<,X]2)1]AS/G# 6UF.7^<0XL\@)C S@G@_+(L1#25(T&-IFPSSLGD/%E@m M(0F=-DL\YZN2J\#G]'%*-D\69$5(9Y33T!GDHU4"!16=HJ# G5QB8B':= ?Il M!/U5A4YX4G$J0"+:I 7.7%:.+$U.YHFSCG+=+ UX<,PAGGA3&:Rj M,>V6X,LA0.>RJTG@_%_^-P&6S0']YK:3^9#-E&->.+N96,UO)H)S@DG.M"+Ti M+ANDVIY+*SH[#B;%3P,T><@DWVEZRSNNG/G'4Nh M-GV8)8&%YI63FK#DU')R*IH#FL[,Y6$@H_GF3'(R//^Ag M--V<*TV IHFSNAE5M"9(,SN>B)K_RU\D9X&3.f M,JN8PT[SYBTSJ2GM7&]2.U&8[LTP9C#SV=FMB'::+Z>=W4VPYC(3WJ'ME%EPe M._V;]TUEIJ]37'?N,=V:[TYT9B!3Gc M/(D$1,RX *N3N$D+I+C\/0\#J8KWT,GK\'D]K.1,-P>>>L_XB%O1Y$FR1'ERb MSTB9]@(5%KY'"C $^';]<$08<8=E4]R!/N#0C#N /@$@"1+73?.RY9G^D%<*a M%5&23DP^1>R3E?G--%2L7?*;S$R>I0&A:%8F. %(?BX,O82RYU"SEJGS+';Bz M,HF91T^?9](SZ FH@&\.,X^=R4_ZYO(SZBGP/'""+R687\\%9]@3D/G@7&=Vy M,"6<]4[H0'6 8Y#O/&%*,FF3;*C-9^<33"/S% 'T%;R+-*2@I(#J!(S 4K_S'\&+,F2 \O:IP14 /JA7'^^v M/JT-0PL;C 8T_1'Z68"N,AN@-DL;# P4&W6V%('.#2>@)5 "J 54!+"D6H%^u M-W2:+E#JI?USN5FX+&O.0 &7<@X(Z/QE!"H*HH">0*V7(@"&I0\4E6E8Z8 .t M0;$U]PHESQ%T; G+M'DR0;M03M#VY\/R#C %;8'V,!F@'M QZ!'4;-D%!8!^s M01458= =*&, =3>QK#]8-FV<\4\SJ.SS!9H&E5AB(->@>H@VJ'@S -H$S8%6r M0%&@F,X?9+]@"LH!#8)R-Z^@9$4E*"$4#&H(?8+&YD0 &DN_'\.p M0DVA1\!*:/L3UE(&365V0EF95U!8RRPT$!JVM(&6!.&@NM =*,JR%UH%_87.o M0O=R'E"WI2!T>XD+10&@0J&@*\NV!#/4,O *!5AF0RU0'E"Y93'4"WH#)8%Rn M/G6@J="7I?-@&_JS<89Z0-6ALX5W:-UR'.H&+8<60L^AAU H*,V2$QE"TVRDT&9H*I4),l M05^>[M!@*,#@&5JZI(?>0NVA)D_J9N03\^F@XK(4"(BD\*:6:XI.@TWT5%';0#]<(7R/4H*::(? KS#O-&3Zj M++:?A@.GP7>@+/ PR#T@/_> #HA= TK49X"NR$P9!? ^!>P!:%%MW%2(4^C[;#4*%Y4!#D'O4#Z+#.0"$@W9&:TIU(7_5DLe M1@6C%,CY(V73_IA6RS_N'Q,+; '_(Z() %D:V(W^R5"CD]'/*'"4 .D\@!-)d M#.B0IE'-*'1T*_H;78U^(!6A5A;GJ&24.TH9;8Q2($&A1\A, A22!KF$Q$$*c M.A^0*D@Z9]^&%M@;Y8JJ1D\6+D@8Y!,2"^F#O%B>!\2CVU&[:'DT-(KA+$+Bb M7$)$*,@9I!2R/6J%!$22 ::0WP'DXRR%4B$;!8WF1YV0.\@/00\2! D;[8Q&a M1^^C!%(NI)L%.WH8U8[&1C^DLU$*),K2-:H;[9#61[NCYE'MXS?T+$ B!9">z M2,FCTE'O:,H 'DHCS8W6(5VD%=+IZ"-O-&DC]9#B2$&D(D@^9/;Q#[D'R8[Ry M1H.D.E*502$2!G"(=)(""-44WDHXPK?2#+ %H$^^*5MQ8TRCAOO-7-9,T$E\x M-_-&#B(J^1KLA65U-21R 7FY)]w M/[L5< 5;U(.0[3EX:$]VN*H#62EWY^#K4; G[4$<&K9T:H3V9/T/3YJ-'"[Lv MUXH"C$GTY_V-_=4M@!PA<1:.U180HA='ZZ$E=7_M,%D%(X2X YRT8E#_M!1Xu M2BV;AC,F0(2!5#HKV)(^Q$X .Q'*#ZI14.HF_5C>ODBB?C!,06QJ*,>$6(7Tt M%6Z>]0]3Q_63C.C2X'\>!L!'3ZF#9'SJ3VK(%)8Z",<-O0V&@;QR6^EI.4IZs M.\N,?49OJ$$1B.D6S8LV+7JES@3_XAQ 5H$DDr M1GL%CLURJ=+B7$HKK:!Y'->E"#8HBKMT#SD:Q8[ZC]A0WTT;C,*S7DH#U63Rq M$_2EZ]+80;\T72H"^ NP2Z6;YA/%J+E48IK9\)=63 3;>F/-"WJ480V_1Q7&E"3.L/;%/2Z6\P"GHY[;V%j M-.>FK-,ZRL TGM> ])&.0"H"D--BQ.34.=F%(EFV1C.G-U/.J!T#)HZ+9RZ.GEJSE.[:-]4;6HT;9N>+*BGMU/#AN'T4=+7[%94h M(.F@&,C&Z>^492H\/9BV+"JG/@T_Z&U4:6,SO2LY-N&GC('/Z<,T;>HW]9ZFg M3>2G X[J*>X4U+D_?9YR3Z.G?U-.16VT#FJCRA-83^,CY=-W*5GQ<5J?B$SNf M%?F2F\?^PT P+, ;X$/>&@J .C2\(SVB=JE#HYS*3"V6?;J%J;'TKE1 U9[Ze M3;L'0P!.A0LH<',]!0@*30VH_-*.*<6T8G QU9UV2]&CP04DY!K 0;J"]!)5R(')SWJ$9,FXK(7NH>I8K:O+4FG UW:)V41<>,E0:0--"C)J^@(5&a M+CD5--0-RNX4UJ(^I:"R#Y(.S &*@ZR0[*E!/2)P4"53Q(3W233":^>O@A2(z M4/6.Z882ZJE4;8F-4:&R4O6GV5/?Z,84+C QK=^\#Dy M!F^H+E3N:=/"BWJR*#117B:D[L%J"<0TA\K^^Y?P4'.ILY-)JK.ED@H\K4]Tx M!C"IKDD5(2=5(.A)C1* 4N$"HM1!$;V*^3"8'*&F4G>')U24I2NU;#$4(NID(-(*C]AI;E/_9?$v M4VNISM0R0#TUFMHMG9%24]FGUU350B9UI<6">")T4B]CWM1!$3AU3%'0DWFPu M'TVIY514:A\5?CHC7:=0UG*I,9-=*C[U6*I/+:0.t M4Q&I -4;@$#UCE9339NR5#VFSU1:($,UCJL"T6TJSM*1*4=&IG5.:I2#5?EK(K*I"r M3[NG2-.3!095C4DR>*!*5,RJ25CNB)(@4QFDUM$""J D o M")^ 4P.8)[*TEHD3#50,/>L4IT&'@5IS61I3> ^(*3"8=8.G:).2Q(7SE#,-n M$T8#2)P:#XM+65K K$Z>V7:'[!3-*8+S&UF=A)8."*2E8Z=\YD'$.S#R/&F:m M*!N%?LU&A4!AV202]60:-@>F:$_/@' U*YICL7L.D/84U\-:I@K5M@JP$%0(l ML2 5OL_##Z*"GT#O3'L*&L![I@+[)FU2GT!;"3TB5QH:\2*ABLK* AD>0'0 EO.9F83TZ9KD_VI7UU/2+"@+#Fj M(SD%=P6[I\-$SU GJ@B8 $2L,TP%J\G"!& #U2>X5TVL"48DSN4GIJH\B"= i M/LVK3U-!14IPJ-JM( )LK!BE5:^K:-;IL^!MZ4'\5L4.P57H)X?RPTE0LWDZh M-F6B"E#"ITISOS:QP"A!5CTM1H GTDK1(\FUI+)V3@>I+0[60^GP_@F]G$RNg M126?/-8T:YEK:4B:H+']2WB2$]*IEYJ5;08T V)22%&DH%&P**2*.SEV(!,:f M/'((#,95YF1HH,IEK5;0*HBLOXHPZV&A&IDFK:!I5Y.!(P0X JO "N+B.I/Ve M%@&;0,P7Z8!4T)H8J#YX''Z1E-8(I5/A+:&T< $P&/D)d MIP $E2*\I+.TST SB)9F**52XM\HI8X:TBK\:K>#NNb M)S9Y!84C [)1Z_C[VSK6&M>4P@NP(TY@AN!6F#30!&X 9T>TH]K1V$@5:#N:a M6_^M#X'$!;JUQ^:D2N.5! A[X14OU;EMD[?8ZUH-]D07(KD9 A[OQ@7"@!N-z M^6AX%M?XT81DSN?HB_.UJ2)]=+Z!!;.*';;L,O:M^D1]^ E2#J[OU$?*D>*4y M7$%])]=6WXO"Y6KFD_71^@A]*M=90:XO0Q")^_4%^_I\Q#YPFJIOUB?JL_4!x M7(^N5P%AB )!ZFB<\/TE)[B.S8D,@>)%WLH24-),&F0"?(M?(\!UWTILE/[Qw M6Y&N8->#P&2ALD"3.%(!V$05(0K9GZC@HX!9$ L$V.0D"L)H0NZ@[-IV=0/ v M)P8+:=>EGUNA[OIV-0'$72D+YAZ.J)I!(5SMF'AG'$62$.6%DXKY/QM2(K#D9*J+LT&]TZGYQXD/;/THS0Lt M7BT+9E>WJ]51H1=Y'4]-7C6<6,C+JX930;IY%4WB<-2>3D_F0ZIBZ6LU\_H>E;U67J.0M5>QJO/5H+12q M'=FM3U=W*S@)(X#\8PE\^^ROM(0VX]>5_6IN)0/,p M /@ "SG5%P*6#I" @0'X(&4Q#%@-P=!*EP#8(I>L!:(V=( %6_+@\+" 7;!Uo M8%\G'=B80 M #3 '^,!224FP#]C50 96 DMNH!08$,H#*JLZJ Z@ JL#H!@Tn MY(H 13%)$47C!EL48P/H - &.@ R0$4.!PL%",+R8W0 I($>0'6%#<"#90($m M89FP7 <;!-@!FM-T &$"'BP)8 TP&<5P--A$ 0]V"6"%A<+B8)$ 4=@M@!+ "DL&X,'.84&;6%@M+(/#L(8$T &$k M"WBP0P =0(2 !QL$H,*22Q@#/%B=:A,2V <:P.%A%[,V !UL#\,0R8G&PF-@J;)3@!NL#B,/^i M &8 DA<<[ ^ !A"+_8G4 &JQ/X ; -]%%HL#V,4&+'8 EA0Y0"-V\Q,#Z,/2h M8%L#K%A7+"S6%4N+=<7>8EVQNEA7;"_6$*L#N, NY/X1&U@'[#4V)K" _4>Tg M -(/W=B8 #B610"!Q<;28 4+^[@[[!M@!'#/T &(!D8 MI;:0Q#5D<;"$V#9OCF '$8=FPPH1Y;!Q6'_L&N-S$816QDP&/+"H6$BN2+8I1d M8G,<$=DM0"J67**)+ %L8T,7Q]A(;!&@%2N+7<;*b M8INQLMAGK"PV&LN+E11E'GBP0)%=K!(V/P"6C0'$8GT U%A-P@WV"5"(70-La M8J4'0@ =P!H %/L$",2N =RP6 RY;.W+"R"4)9?H!GBP?=@U0 Q@+5N$70/(z M -:R40"Y[ Q@+2L%D,O2 -:R4P = '1!#,N/]7;I !9R(P#O#A[ #4"-O0[+:Hv MF"@.< 9.@4KAL) $4,V"9Y,(+ ,_ 40B$9&<]1EP#%H%DRY[27H6RBJ91)->u M.,4"JEGAPWAJM08[&P&H9FL'E@0EZ5%)->N%M2340s M!<(+V\ZE)11)?I,#K886_=A+P,[::/4BBPXR@!XGR.-.T#!Br M:#<)=X4(@7M6+G!7R-$>:64H_HP]2^N 9*":W5PD:0&0694FF36_<%6 M8D* PYR[$2-1<=Zp M =2Q[-C0Q3N6V"*/C8^6P7=@O;#^6&@N0Y9.FP=M@N;$?V(_N(#^2RAUEG;6)V#;"8==8Vl M9M< CUEG;61V,DM9.,->9ND F5D=P&:6&HN,C<*. 3JS0UC0[!!V-!NK3R@5HP+*$VQV&H1=06j M9!>U.%AW[6EV(?NHC=3V:BFR:UA,+< 6$R.-B&R.J 5KLZL-7V96NPX-K>A5IV4NNKY<$"h M:T6V=EEBK;%V+_NR5=:^89FUA%EH+6)6,4" [=IZ;;^V8-NPK=AV;$NV+=N:f M;<^V:-NTK=IV;^V>-N\K=YV;\NW[=OZe M;?^V@-O K>!V<$NX+=P:;@^WB-O$K>)V<1V To: linux-activists@joker.cs.hut.fi (Linux mailing list) Date: Tue, 31 Dec 91 20:02:55 CST Hello LINUXer's :-), A simple question: Is there a sigsetmask.c? Is sigsetmask() equivalent to ___ssetmask() ? PS. If anyone has a compile shoelace, I'd be very interested in a copy, since making it seems to require Minix. Gratefully, David. -- David Fenyes dfenyes@thesis1.med.uth.tmc.edu University of Texas Medical School Houston, Texas --[0262]--