Everything posted by Joe L.
-
cache_dirs - an attempt to keep directory entries in RAM to prevent disk spin-up
cache_dirs has the "-d maxdepth" option, so you could try cache_dirs -d 3 -w There may be something else involved though, if something is looking at other than the directory listings. If that was the case, cache_dirs would not help, as the other content would not be in the cache, and it if was, it would be displaced quickly by more recently accessed content.
-
cache_dirs - an attempt to keep directory entries in RAM to prevent disk spin-up
That would seem to tell me you have more files and directories than will fit into memory at one time. Since they all do not fit, each time it scans, it must read from a physical disk. How many files and directories do you have? (this command will tell you) ls -R /mnt/user | wc -l If you have too many files to cache in memory you might need to exclude some shares. (I exclude the "data" and "Pictures" shares on my server, I only cache the "Movies" shares. One cache_dirs process per disk is correct. They are just "sleeping" and not accessing the disk at all. They are there to keep the disk from being un-mounted. If you are running 4.5 version of unRAId you can use the -B option to cache_dirs because it no longer needs to keep the disks from being un-mounted. With that option, there will only be one cache_dirs process. Joe L.
-
Looking for better ideas how how to sleep/suspend my unraid box
The disks are designed for thousands of power cycles... most office PCs are turned off and on daily.
-
Looking for better ideas how how to sleep/suspend my unraid box
One question to get "GreenIT" running - I tried to get the S3-Syslogmessages Colored: I tried to add match_case||"s3sleep"||green to syslog_match.conf But my syslogentries are still in "black"... Dec 3 11:05:35 XMS-GMI-01 AutoS3sleep[21258]: Switching power state to S3 now Dec 3 21:44:25 XMS-GMI-01 AutoS3sleep[22504]: Returning from Power State S3 now Any hint what is wrong? Yes, the messages have a leading capital "S" in S3sleep. You explicitly asked it to match an initial lower case "s" in "s3sleep" change the rule to be either match_case||"S3sleep"||green or any_case||"s3sleep"||green Since this rule is one of your own, you can put it in a file of its own named syslog_user_match.conf and your rule will be added to those already defined in my supplied file. This will make it easier if at some point the supplied rule file gets a new set of rules, as it will not overwrite yours. This trick will not work with turning off existing pattern coloring rules, since the locally created definitions are just appended to the end of the first list, but for new patterns, it will work.
-
HowTo: Install HandBrakeCLI on your unRAID server (rather than in a VM)
To get the name without the .ISO you need to supply an argument to the basename command, as I did in the short script I posted a few back in this thread. The specific line in the script is f=`basename $i .ISO` Assuming "$i" has the full pathname to the .ISO file, "$f" will then have just the file name, without the .ISO suffix. Joe L.
-
HowTo: Install HandBrakeCLI on your unRAID server (rather than in a VM)
Here it is: for i in /mnt/user/Movies/*.ISO do f=`basename $i .ISO` HandBrakeCLI -i $i -t 1 -o /mnt/disk/hdi1/$f.avi -f avi -p -e ffmpeg -S 700 -a 1 -E lame -B 160 -R 0 -6 dp12 -D 1 -v echo $i done Note: I had a disk outside of the array mounted on /mnt/disk/hdi1. I was writing the output files to it. You could change the script to write the output anywhere you like. All of my ISO images were of the movie only. (no menus, extras) You can adjust the options on HandBrakeCLI to suit your needs. I only got about 4 or 5 fps on my unRAID server. It will get the job done, but as you said, be patient. Joe L.
-
HowTo: Install HandBrakeCLI on your unRAID server (rather than in a VM)
You don't need a dual core to use HandbreakCLI on the unRAID server, about a month ago, after instaling it as described in this thread, I used a shellscript to invoke it on each of a subset of my ISO images in turn to create a .avi compressed version on a local disk for installation in one of my MG-35 media players I was going to use when traveling. I managed over the course of a week or so to transcode about 500 movies from the ISO version to the .avi. I did not care how long it took, I just set the script in motion and watched it over time. I only have an old 2.6Ghz celeron... Joe L.
-
Looking for better ideas how how to sleep/suspend my unraid box
There either was some network activity in the past 30 minutes, or there was no network activity in the past 30 minutes. These are the only two things you care about, aren't they? You might need to check for I/O OVER some minimal amount... For example, the SMB Master controller on the LAN probably polls for shares every 15 minutes or so, and the NIST time daemon checks the system time on occasion, the "pings" used to detect if a media player is online would count as I/O. Joe L.
-
Looking for better ideas how how to sleep/suspend my unraid box
True, but I think he was taking advantage of the 30 second average bwm-ng was performing... In any case, it is not a huge issue either way... It is why shell scripts are so powerful, you can modify as needed and quickly test different ideas.
-
Looking for better ideas how how to sleep/suspend my unraid box
To create the folder and get the file you need (these two commands only need be done once) The second line starts with "wget" and ends with ".tgz" It should all be on one line, even if it wraps on your browser. mkdir /boot/packages wget http://repository.slacky.eu/slackware-12.1/utilities/bwm-ng/0.6/bwm-ng-0.6-i486-2bj.tgz -O /boot/packages/bwm-ng-0.6-i486-2bj.tgz The "wget" command will download the file from the slackware repository. (It needs you to have a DNS nameserver entry and gateway defined on your unRAID server. You can confirm it is configured by typing ping -c 1 google.com If you can successfully ping google, the "wget" should work. The file you download should then exist in /boot/packages. Look for it there with ls -l /boot/packages Then, to install it manually type installpkg /boot/packages/bwm-ng-0.6-i486-2bj.tgz To install it every time you reboot, add a similar line in the "go script." You can easily do that by pasting this line at a command prompt: echo "installpkg /boot/packages/bwm-ng-0.6-i486-2bj.tgz" >> /boot/config/go It will append the "installpkg" line at the end of the "go" script. Joe L.
-
Preclear.sh results - Questions about your results? Post them here.
No, that is not what it indicates at all. The output is a "diff" between the starting SMART report and the ending SMART report. If the original was failing, and the end is failing, then the drive did not change, but according to SMART it could be failing. You are correct, a few values changed from the pre SMART report to the POST report... I suggest you read back in this thread on how to interpret the results. It has been described several times. However... be forewarned... I can almost guarantee the second drive will fail sometime in the next 750,000 hours of operation. Joe L.
-
Looking for better ideas how how to sleep/suspend my unraid box
Been running the s3 script for several days and these new changes look great. What would make this perfect for me was if, as its final check, it pinged a list of IPs and if it couldn't reach any of them, then it would go to sleep. I don't know enough to do it myself and am looking for a bit of help on this. I believe someone else mentioned this earlier in the thread, but I don't think it got fleshed out far enough. It's just adding another section after the check of the timeframe. But I better do not post it - I can only do "if-then-else" - those guys here knowing better can easily set a vaiable containing the IP-adresses and have them processed. It should be very easy. So long you can do something like ping 1.2.3.4 -c 1 | grep -q "ttl=" if [ $? -eq 0 ] then ... so you can set a variable that prohibits (or allows) the machine to fall asleep... Put a section like this near the top of the script (before the "while" loop) , editing the IP addresses to be those of your media players. Just separate the addresses with spaces as in the example below. mp_ip="192.168.2.221 192.168.2.200 192.168.2.201" check_mp_status() { mp_online="no" # initialize to "no" until we learn otherwise # ping each of the media servers to determine if online for i in $mp_ip do # ping the media server, if it answers, it is online out=`ping -q -c 1 $i 2>/dev/null` rec_count=`echo "$out" | grep "received" | cut -d " " -f4` if [ "$rec_count" = "1" ] then mp_online="yes" # if one is online, we do not need to ping # any others, break out of the "for" loop. break; fi done echo $mp_online } Then, down in the body of the script, add a few lines like this (lines in blue are existing, lines in RED are added): if [ $hddAct -eq 0 ] then count=$[$count-1] else count=$timeout fi online=`check_mp_status` if [ "$online" = "yes" ] then count=$timeout fi netAct=$(bwm-ng -o csv -c 1 -d 0 -T avg | grep eth0 | cut -d";" -f5) if [ $count -le 0 -a $netAct = '0.00' ] then
-
cache_dirs - an attempt to keep directory entries in RAM to prevent disk spin-up
The current version of cache_dirs explicitly keeps all your disks "busy" so no disk should show as "unformatted" Are you using the current version of cache_dirs? The 4.5b7 version of unraid will no longer show "Unformatted" for any disk that it is able to un-mount successfully but unable to un-mount a busy disk. For that reason, it is safer. You will need to use the current version of cache_dirs with it, otherwise you will not be permitted to stop the array until you stop the cache_dirs process (with cache_dirs -q) The most current version of cache_dirs will work with both versions of unRAID. Both versions of unRAID are safe for your data. The "bugs" are in active directory support and in adding more than 18 data drives... (You have neither in your version, so you are not affected by those issues when you upgrade) To see the version of cache_dirs you are running, type cache_dirs -V Current version is 1.6.4 as of today.
-
Looking for better ideas how how to sleep/suspend my unraid box
[blush] Of course, you are correct. You did exactly what was needed, once I got you pointed in the right direction. [/blush] Joe L.
-
Looking for better ideas how how to sleep/suspend my unraid box
Try this: flash=/dev/`ls -l /dev/disk/by-label| grep UNRAID | cut -d"/" -f3` echo $flash It will grab the device with the UNRAID label and assign it to the variable named "flash" as used in your script. The rest of your script can stay as it is. Joe L.
-
cache_dirs - an attempt to keep directory entries in RAM to prevent disk spin-up
I think you intended this question to be posted to the thread on the preclear_disk.sh script, so I'll post my answer there. Joe L.
-
cache_dirs - an attempt to keep directory entries in RAM to prevent disk spin-up
If the popcorn hour does not need to perform directory listings for you to choose a movie to view, then it is of less use to you. It won't hurt anything, but you'll know if you need it.... (because your family will ask, why does it take so long to get a listing of our movies/music/pictures when I press a button?) Joe L.
-
cache_dirs - an attempt to keep directory entries in RAM to prevent disk spin-up
Easy, there is one "child" process keeping each of your data disks busy to prevent you from seeing a "Un-formatted" description when you attempt to stop the array and a directory scan is in progress. The child process basically does this changes directory to /mnt/diskX then invokes a loop waiting for the lock-file used by cache_dirs to not exist while lock-file-exists do sleep 2 seconds end while Every 2 seconds it wakes up from its sleep and check if the lock-file is still there, if it is, it sleeps another 2 seconds any then looks once more, etc... Since the child processes each have as its "current directory" one of your data disks, it will not be possible for unRAID to un-mount them, as they will be "busy" The main cache_dirs process removes the lock-file when it notices an attempt to stop the array allowing the child processes to stop and the disks to be un-mounted. So... it is normal to see what you are seeing. Once you upgrade to unRAID 4.5beta7, or beyond, you will not need those extra processes, as unRAID is smart enough now to not show "un-formatted" on disks it already un-mounted. On earlier versions it shows "Unformatted" on all the disks that could be un-mounted and also showed a "Format" button you might accidentally use on a disk with your data. Once you upgrade to 4.5b7, you can use the "-B" option to cache_dirs if you want to clean up your process listing, as those child processes will no longer be needed on your server to force disk to be "busy". Joe L.
-
cache_dirs - an attempt to keep directory entries in RAM to prevent disk spin-up
cache_dirs is a script to attempt to keep directory entries in memory to prevent disks from spinning up just to get a directory listing. The Linux kernel keeps the most recently accessed disk buffers and directories in memory, and flushes out the least recently accessed entries. If we can 'trick' the kernel into keeping our directory entries in that memory cache, then directory scans will find what it is looking for is already in memory, and not need to access the physical disk to get it. As a result, since the physical disk is not accessed, linux will (after the defined time-out delay) let the physical drives spin down, and save on power costs, plus remove the drives as heat sources. This is especially useful when media files are spread across multiple drives, and a media player begins to scan for a particular media file to play. You want the scan to look at all of the relevant directories, but only spin up the one drive containing the desired media file. Since the cache management decision process tries to keep the most recently accessed disk buffers and directory entries, we need to 'trick' it by constantly accessing the directories of the folders we want to keep in the cache, so that they will always appear to be the most recently accessed. I've developed, with the help of lots of suggestions and feedback, an easily customizable script called cache_dirs to do this. it is described in the wiki here A long series of posts describing its evolution over time is here in this thread It has many possible tunable options, but most people can simply invoke it as cache_dirs -w The "-w" option will cause it to wait if unRAID is not yet started. If you have a folder or folders you wish to exclude, there is a -e option. This option can be used multiple times. To exclude a "data" and "old-stuff" directory, you would use cache_dirs -w -e "data" -e "old-stuff" Always use Quote marks around the folders you wish to exclude or include, this is especially important if the folder name contains a space or other special character that might be interpreted by the linux shell. By default, all top level folders on the disks and everything under them in sub-folders are scanned. If you only want a subset of the top -level folders scanned, you can supply an "include" list using the "-i include_dir" option. Again, it may be repeated on the command line multiple times. If using the "include" feature, only those directories included are scanned. There is no need to use an exclude as well, unless you use a wild-card for the include directory and the "include" wild-card matches more than you want cached. (The include and exclude options work on top-level folders only. They may not be used to include or exclude specific sub-folders. You can use a different option (-a) if you wish to exclude a sub-folder, as shown in this post ) For example, let's say you have folders like this: Movies-Comedy-Bad Movies-Comedy-Good Movies-Chick-Flicks-Good Movies-Chick-Flicks-Bad Movies-Adventure-Good Movies-Adventure-Bad Movies-Drama-Good Movies-Drama-Bad Movies-Kids-Good Movies-Kids-Bad Movies-Junk-Good Movies-Junk-Bad Data1 Data2 Data3 ... You could use an include rule like this -i "Movies*" and an exclude rule like this in combination with it -e "*Bad" You would cache only those directories that start with "Movies" and do not have "Bad" at the end of their name. If you added one more exclude like this: -e "*Junk*" You would not scan either of the folders with Junk in their name. Using a combination of include and exclude directories make it pretty flexible if you have the need. For most people, one or two exclude folders might be all that is needed, if at all. If you have enough RAM, just let it scan and cache everything. My "data" folder holds a directory with a backup of an old windows system and has at least several hundred thousand files and folders under it. I always exclude it, as it is never needed by my media players in their listing of movies. If you add /boot/cache_dirs -w to your "go" script, it will run each time you re-start your server. To stop cache_dirs from running, type cache_dirs -q To see all the options, type cache_dirs -h To run it in the foreground, so you can see what it is doing, use the -F option. As it loops and scans it will print statistics on how long each scan is taking. It will adjust the scan rate based on the activity on the server. You can set the min and max delay times of the scan rate using the -m min-time and -M max-time options. Usage: cache_dirs [-m min_seconds] [-M max_seconds] [-F] [-d maxdepth] [-c command] [-a args] [-e exclude_dir] [-i include_dir] [-w] cache_dirs -V = print program version cache_dirs -q cache_dirs -l on = turn on logging to /var/log/cache_dirs.log cache_dirs -l off = turn off logging to /var/log/cache_dirs.log -w = wait for array to come online before start of cache scan of directories -m NN = minimum seconds to wait between directory scans (default=1) -M NN = maximum seconds to wait between directory scans (default=10) -F = do NOT run in background, run in Foreground and print statistics as it loops and scans -v = when used with -F, verbose statistics are printed as directories are scanned -s = shorter-log - print count of directories scanned to syslog instead of their names -d NN = use "find -maxdepth NN" instead of "find -maxdepth 999" -c command = use command instead of "find" (command should be quoted if it has embedded spaces) -a args = append args to command -u = also scan /mnt/user (scan user shares) -e exclude_dir (may be repeated as many times as desired) -i include_dir (may be repeated as many times as desired) -p NN = set cache_pressure to NN (by default it is set to 10) -B = do not force disks busy (to prevent unmounted disks showing as unformatted) -S = do not suspend scan during 'mover' process -z = concise log (log run criteria on one line) -q = terminate any background instance of cache_dirs cache_dirs will force all the data disks to be "busy" to prevent them from being un-mounted. This will prevent un-mounted disks appearing as un-formatted in the unRAID management console. If you are using any release prior to 4.5beta7, this will prevent you from "Stopping" the array the first time you press the "Stop" button. Simply wait a few seconds and then press "Stop" a second time within 2 minutes of the first attempt to stop the array. If you have no other processes keeping disks busy, it will then stop. On release 4.5b7, it is no longer necessary to press stop a second time, and in fact you cannot, as the management console will show "Unmounting" until all processes holding disks busy are terminated and only the "Refresh" button is active. If you are on 4.5b7 or greater, if you wish, you can use the -B option to not force the disks to be busy. The 1.6.4 version of cache_dirs is attached. It is now coded to sleep while the "mover" process moves files from your cache drive. # Version 1.6.4 - Modified to suspend scan during time "mover" script is running to prevent # DuplicateFile messages from occurring as file is being copied. # - Added -S option to NOT suspend scan during mover process. # - Added logic to re-invoke cache_dirs if array is stopped and then re-started # by submitting command string to "at" to re-invoke in a minute. # - Added entry to "usage()" function for -B # Version 1.6.5 - Fixed what I broke in looking for "mover" pid to suspend during the "mover" # to eliminate warnings in syslog about duplicate files detected while files were # being copied. # Version 1.6.6 - Fixed typo in looking for mover-pid. # Version 1.6.7 - Added cache_pressure to "usage" statement, fixed bug where it reverted to 10 after being invoked through "at" # when used with the -w option. # Version 1.6.8 - Added -U NNNNN option to set ulimit, and detection of 64 bit OS so odds are this new option will not be needed. # by default, ulimit is set to 5000 on 32 bit OS, and 30000 on 64 bit OS. Either can be over-ridden with -U NNNNN on command line # Version 1.6.9 - Removed exec of /bin/bash. Newer bash was not setting SHELL variable causing infinite loop if invoked from "go" script. # Changed default ulimit on 64 bit systems to 50000. # by default, ulimit is now set to 5000 on 32 bit OS, and 50000 on 64 bit OS. Either can be over-ridden with -U NNNNN on command line # Setting ulimit to zero ( with "-U 0" option) is now special, cache_dirs will not set any ulimit at all. You'll inherit the system value, whatever it might be. The full revision history is as follows: #################################################################################### # cache_dirs # A utility to attempt to keep directory entries in the linux # buffer cache to allow disks to spin down and no need to spin-up # simply to get a directory listing on an unRAID server. # # Version 1.0 Initial proof of concept using "ls -R" # Version 1.1 Working version, using "ls -R" or "find -maxdepth" # Version 1.2 Able to be used with or without presence of user-shares. # Removed "ls -R" as it was too easy to run out of ram. (ask me how I know) # Added -i include_dir to explicitly state cached directories # Added -v option, verbose statistics when run in foreground # Added -q option, to easily terminate a process run in the background # Added logging of command line parameters to syslog # Version 1.3 Added -w option, to wait till array comes online before starting scan # of /mnt/disk* share folders. # Changed min-seconds delay between scans to 1 instead of 0. # Moved test of include/exclude directories to after array is on-line # Added logging of mis-spelled/missing include/exclude dirs to syslog # Added ability to have shell wildcard expansion in include/exclude names # Version 1.4 Fix bug with argument order passed to find when using -d option # Fixed command submitted to "at" to use full path. Should not need to # set PATH variable in "go" script. # Added ability to also cache scan /mnt/user with -u option # Version 1.4.1 Fixed version comment so it is actually a comment. # Version 1.5 Added -V to print version number. # Added explicit cache of root directories on disks and cache drive # Modified "average" scan time statistic to be weighted average with a window # of recent samples. # Added -a args option to allow entry of args to commands after dir/file name # example: cache_dirs -a "-ls" -d 3 # This will execute "find disk/share -ls -maxdepth 3" # Version 1.6 - Fixed bug... if -q was used, and cache_dirs not currently running, # it started running in error. OOps... Added the missing "exit" # - Changed vfs_cache_pressure setting to be 1 instead of 0 by default. # - Added "-p cache_pressure" to allow experimentation with vfs_cache_pressure values # (If not specified, default value of 1 will be used) # - Made -noleaf the default behavior for the "find" command (use -a "" to disable). # - Added logic to force all disks "busy" by starting a process with each as their # current working directory. This will prevent a user from seeing a frightening # Unformatted description if they attempt to stop the array. A second "Stop" will # succeed (the scan is paused for 2 minutes, so it may be stopped cleanly) # - Added new -B option to revert to the old behaviour and not force disks busy if by # chance this new feature causes problems for some users. # - Allow min seconds to be equal to max seconds in loop delay range. # - Added run-time-logging, log name = /var/log/cache_dirs.log # Version 1.6.1 - Fixed bug. Added missing /mnt/cache disk to scanned directories # Version 1.6.2 - Added trap to clean up processes after kill signal when run in background # Version 1.6.3 - Modified to deal with new un-mounting message in syslog in 4.5b7 to # allow array shutdown to occur cleanly. # Version 1.6.4 - Modified to suspend scan during time "mover" script is running to prevent # DuplicateFile messages from occurring as file is being copied. # - Added -S option to NOT suspend scan during mover process. # - Added logic to re-invoke cache_dirs if array is stopped and then re-started # by submitting command string to "at" to re-invoke in a minute. # - Added entry to "usage()" function for -B # Version 1.6.5 - Fixed what I broke in looking for "mover" pid to suspend during the "mover" # to eliminate warnings in syslog about duplicate files detected while files were # being copied. # Version 1.6.6 - Fixed mover-detection to use the exact same logic as "mover" (and fixed stupid typo I had made) # Version 1.6.7 - Added cache_pressure to "usage" statement, fixed bug where it reverted to 10 after being invoked through "at" # when used with the -w option. Joe L. cache_dirs.zip
-
Preclear.sh results - Questions about your results? Post them here.
The value went from 253 (the factory initialized value) to 200 (a median value once the disk started collecting statistics) Yes it went down, and when it reaches the "THReshold" value of "0" the disk will be considered as failed. Lower SMART values are not better... they are worse. But don't worry, the behavior of your drive is perfectly normal and it looks good.
-
unRAID Capacity Calculator
I'm using Firefox and it works fine for me. Can you try something absurd; just add a 2000 GB drive to the list and calculate, and tell me if your total changes? Thanks! Robbie I tried it using Firefox, and it did nothing for me when I clicked either "Calculate" button.
-
Preclear.sh results - Questions about your results? Post them here.
The "raw" values are meaningful only to the manufacturer. In some cases, smartctl can make sense of them... Perhaps it is tracking nanoseconds...who knows... I know for sure is is not "hours," or you are using one of the Area 51 2.5TB drives that has been in a warehouse for about 75 years, but actually much much older. What is important is the "Threshold" value is 000 and the current value is 100, nowhere near the threshold. Joe L.
-
unRAID Capacity Calculator
That would be best. Some will elect to have the cache drive as big as their parity drive, as it then becomes a "warm spare" ready to be put into service should a different drive in the array fail. (un-assign it as cache, re-assign it as replacement for whatever drive failed.) Don't even need t power down the server until the new replacement for the cache drive arrives. You can even shop for a sale price, since you could live without the cache drive for a week or two. What might be nice is a checkbox next to each drive to indicate if it is a"green" drive or not... or, a field to input the total number of "green" drives, since their power requirements are lower than the non-green drives. Joe L.
-
Preclear.sh results - Questions about your results? Post them here.
I'm not finding that ssmtp package on the Slackware site anywhere from build 11 to 13. The only reference is to a libcddb that has a simple smtp backend. Any idea where to locate it? That version of mailx is there, however. --Bill http://slackware.sukkology.net/repository/ssmtp/ssmtp-2.61-i486-1suk.tgz
-
Preclear.sh results - Questions about your results? Post them here.
When you say that unRAID "completely recreates it" (the MBR) are you talking about just when you put in an uncleared disk, or could that also happen during the formatting phase (pre or post)? I notice in your script you don't ever clear it, but just write to the appropriate places to size the filesystem, partition #1 and pointers. Is it just unnecessary as other bytes don't matter, or what? Actually, I do completely set every byte in the MBR. You just need to look a tiny bit closer to figure it all out. All bytes matter.. The first 512 bytes in their entirety are the signature, not just a few bytes in it. All of the bytes are compared to what is expected before the disk is considered to be pre-cleared. It must not be marked as bootable, it must not be set as active, it must not have a partition type defined, it must only have one partition, and it must be partition 1, and the partition must start on sector 63 and use the entire drive based on the reported geometry. In step 5 the first 446 bytes of the MBR are set to zero. In step 7 the next 16 bytes, starting at 446 are set define a first partition to be the correct geometry based on the size of your drive In step 4 the next 48 bytes, starting at 462 are set to zero. In step 6 the last two bytes of the sector are set the MS-DOS signature used by the motherboard BIOS to detect a MBR; The steps are not in "byte" order, but the entire first sector is written. I'm pretty certain it would clear all the bytes on the disk... but never looked or tested by writing something to check for later and letting it do the normal clear disk processing. Perhaps some day I'll give it a try with my small disk... problem is I really don't want it in my array, so I'd have to re-compute parity when I remove it. Incorrect. This quote is from a microsoft site: The Master Boot Record (MBR) is created when the disk is partitioned. The MBR contains a small amount of executable code called the master boot code, the disk signature, and the partition table for the disk. At the end of the MBR is a 2-byte structure called a signature word or end of sector marker, which is always set to 0x55AA. A signature word also marks the end of an extended boot record (EBR) and the boot sector. It is significant to your BIOS. It is the signature used for an MBR since the early days of the first partition tables. True. The script expects a standard "mail" command be present that can be used to send mail. At first I used a shell script I wrote that I copied to /bin/mail. It used "netcat" to do the actual sending of the mail. Eventually, we learned that "bash" could do networking on its own, and the bashmail version was created. Today I use mailx (the real linux mail command) I install as an add-on and configure. It in turn needs "sendmail" or the equivalent, but that is too big and prone to security issues, so I use a smaller sendmail replacement named ssmtp. as part of my startup, I do this: cd /boot/packages installpkg ssmtp-2.61-i486-1suk.tgz installpkg mailx-12.3-i486-1.tgz ln -s /usr/sbin/ssmtp /usr/sbin/sendmail cp /boot/custom/ssmtp.conf /etc/ssmtp/ssmtp.conf The ssmtp.conf file I use looks like this: root@Tower:/boot/packages# cat /boot/custom/ssmtp.conf # # /etc/ssmtp.conf -- a config file for sSMTP sendmail. # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. [email protected] # The place where the mail goes. The actual machine name is required # no MX records are consulted. Commonly mailhosts are named mail.domain.com # The example will fit if you are in domain.com and you mailhub is so named. mailhub=smtp-server.somewhere.rr.com # Where will the mail seem to come from? #rewriteDomain= # The full hostname [email protected] ssmtp.conf can handle many more options needed for different types of mail servers... My server does not use encryption, so I can use just the few fields I defined. I ended up using the real "mail" (installed from the package listed above) because the "at" and "cron" commands in linux sends status e-mail, however, it expects the mail command to be a binary executable. (it does not invoke it with a shell interpreter) This works for me... and is easy once you download the two packages needed and define your ssmtp.conf file. (all mail programs will need to be configured for your mail server) Oh man. It sounds like that would have been both exciting and incredibly frustrating at the same time! That was back when, during the early transition from tubes? Sounds like you were quite 'inside' at the hardware level. What insight that would give you! When I learned electronics it was during the transition from tubes to transistors during the 60's. Yes, I had to trouble-shoot at the bit level... Each bit in the "instruction" op-code represented specific logic gate combinations, and we could actually follow a logical 1 or 0 from place to place as it was moved and processed. Registers in the cpu were collections of flip/flops... with logic to set and reset... Gave great insight to logic flow... because it did. Half of the time, the issues were not even in the defined logic, but where poor connections between un-affiliated logic was accidentally made. (a small wire-clipping.. where is should not have been. the equivalent today would be to sprinkle iron filings across the motherboard... and try to figure out where one was based on the failure) A friend of mine had s similar Kaypro. He printed the assembly listing of my terminal for me... (reading the 8" floppy disk!) Joe L.