Miscellaneous Tips

2/9/2005
Eric Low

Starting service /kdm/opt/kde3/bin/kdm: error while loading shared libraries: libX11.so.6. Cannot open shared object file: No such file or directory.
Most likely due to a wrong or missing path in your /etc/ld.so.conf file. libX11.so.6 is most likely in the /usr/X11R6/lib/ directory, so try putting the following line in your /etc/ld.so.conf file:

/usr/X11R6/lib

Similar "Error while loading shared libraries" errors when loading various X programs (or X itself, which is when I got the error) can be caused by this same problem.

 

2/14/2005
Suse 9.2, 64-bit version, runs painfully slow on the Nvidia Nforce4 chipset. I've Googled this extensively, and apparently there is a bug in the kernel that can be fixed with a patch and then recompiling. Of course, with the system running that slow, this could easily takes days! I noticed that the kernel seemed to run at full speed when I booted into failsafe mode, so I started turning on boot options one by one, and it turns out that the following boot option is a quick and dirty fix to have you up and running like normal: acpi=off. Either type it in as a bootloader option at the kernel selection screen, or add it to the normal boot option in /boot/grub/menu.lst. Suse 9.2 comes with the 2.6.8 kernel, I believe, and as of this writing, 2.6.10 is the latest stable. I am trying a recompile with the 2.6.11-rc4 version, completely unpatched, so hopefully it will now be fixed!

Note that when you install SuSE x64 for the first time on a computer with the NVidia NForce4 chipset, SELECT "INSTALLATION - ACPI Disabled" unless you are patient as hell. Granted, this still didn't work for me... still slow as ever. Hmmmph.

 

3/2/2005
To easily translate a linux Man page to HTML, try a handle little utility called PolyglotMan, available here. An older version is also available at the bottom of this page.
To convert a man page, you basically type a command similar to the following:

rman -f html /usr/local/man/man5/racoon-tool.conf.5 >racoon-tool.conf.html

or

rman -f html /usr/local/man/man8/racoon-tool.8 >racoon-tool.html

Sometimes, however, rman doesn't seem to format pages correctly. This appears to be caused by BSD man pages, which use different macros than normal Linux man pages. For instance, look at the following error:

# rman -f html /usr/local/man/man8/racoon.8 >racoon.html
macro "" not recognized -- ignoring
macro "Dd" not recognized -- ignoring
macro "Dt" not recognized -- ignoring
macro "Os" not recognized -- ignoring
macro "Nm" not recognized -- ignoring
macro "Nd" not recognized -- ignoring
macro "Bk" not recognized -- ignoring
macro "Op" not recognized -- ignoring
macro "Ek" not recognized -- ignoring
macro "Pq" not recognized -- ignoring
macro "Xr" not recognized -- ignoring
macro "Bl" not recognized -- ignoring
macro "It" not recognized -- ignoring
macro "Ar" not recognized -- ignoring
macro "Fl" not recognized -- ignoring
macro "El" not recognized -- ignoring
macro "Pp" not recognized -- ignoring
macro "Pa" not recognized -- ignoring
macro "Em" not recognized -- ignoring
macro "Dq" not recognized -- ignoring
macro "Li" not recognized -- ignoring

If you need to format BSD man pages (this does NOT necessarily mean that you are on a BSD operating system! These are found on Linux as well!), try filtering the man page through groff before rman, such as with the following command:

groff -e -mandoc -Tascii /usr/local/man/man5/racoon.conf.5 | rman -f html >racoon.conf.html

...The output probably won't be perfect, but at least it won't be missing portions like it would without groff!

----------------------

 

Occasionally, I use a program called roffit instead. To install roffit, you have to untar and copy the files manually since there is no Makefile:

tar -xvzf roffit-0.6.tar.gz
cd roffit-0.6
cp roffit.1 /usr/local/man/man1
cp roffit /usr/bin

Then, to make an HTML page out of a MAN page, the command is similar to the following:

roffit < /usr/local/man/man5/racoon.conf.5 > ./racoon.conf.html

 

3/17/2005
If you accidentally delete a hard drive's partition table, or it becomes corrupt, try recovering it with a linux utility called gpart.

 

3/17/2005
If a physical hard drive does not show up in linux, meaning the /dev/sdb or whatever entry does not exist, try recreating it with mknod. I somehow deleted my /dev/sdb device, and even though in the bootup (which can be read by typing dmesg) the SATA drive was found and associated with /dev/sdb, when I typed ls /dev/sdb nothing showed up. I recreated it by typing the following:

mknod -m 660 /dev/sdb b 8 16

-m 660 simply specifies the rights that are assigned to this device - leaving this option out and then typing chmod 660 /dev/sdb would have accomplished the same thing.
b means that it is a block device - meaning it goes through the buffer cache - any hard drive will need this type.
Major 8 means that it is a SCSI disk.. MAJOR 8 and MINOR 16 are for the second SCSI disk, /dev/sdb.

 

3/17/2005
In VMWARE, depending on your networking configuration, up to three virtual network interfaces may appear. These include vmnet0, vmnet1, and vmnet8. Vmnet0 is the bridged interface - it is bridged with the host machine's network card; Vmnet1 is for host-only networking, which means that it's a private subnet so that you can map to directories on the host machine; Vmnet8 is a NAT interface, which means that the guest operating system thinks it's on a private subnet, while the host operating system is translating all packets to use the same IP address as the host machine's interface when it sends/receives anything to/from the outside world.

 

3/18/2005
Cannot determine dependencies of module X. Is modules.dep up to date?   This error occurs when running mkinitrd. Run depmod -ae -v 2.6.11.5 except substitute your kernel version.

 

3/22/2005
`GLIBCPP_3.2' not found error when running firefox, firefox-installer, or a similar program. The full error is as follows:

./firefox-installer-bin: /usr/lib/libstdc++.so.5: version `GLIBCPP_3.2' not found (required by ./firefox-installer-bin)
./firefox-installer-bin: /usr/lib/libstdc++.so.5: version `CXXABI_1.2' not found (required by ./firefox-installer-bin)

This occurs when you have a version of libstdc++ installed that is VERSION 3.4 OR LATER. Luckily, you can install version 3.3 by passing the --force command to rpm, without affecting your 3.4 installation whatsoever. This will stick a copy of /usr/lib/libstdc++.so.5 in there and still keep /usr/lib/libstdc++.so.6.

4/3/2005
SWITCH YOUR PREFERRED X DESKTOP FOR AN INDIVIDUAL USER'S ACCOUNT IN LINUX. Log in with the account that you want to change and type switchdesk xfce. In my case, xfce was my preferred desktop. Feel free to type switchdesk kde or switchdesk gnome instead. I know that this works under redhat/fedora with gdm as the greeter, but I can't guarantee that it works for other installations. But hey, give it a shot! :)

 

4/5/2005
Problems starting X when using the nvidia kernel module. Log in When you try to start X, you get an error similar to the following:

(EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module!

Make sure that /dev/nvidia* have rights 660, and are owned by the group video. Try running the following:

chmod 660 /dev/nvidia*
chown root:video /dev/nvidia*

Hopefully that will clear it all up!

 

4/21/2005
Resizing EXT3 partitions. When you try to resize EXT3 partitions with any of the commonly used partitioning software, such as Paragon Hard Drive Manager or Partition Magic, the action always fails with some sort of Insufficient Memory error. In fact, I have never, ever, ever been able to successfully resize (or, to be more specific, shrink) an EXT3 partition! Nonetheless, give this a try: Convert it to an EXT2 partition first, by removing the journaling system, with a command similar to the following:

tune2fs -O ^has_journal /dev/sda2

It only takes a minute to remove the journal. Then, try resizing it. After you are finished, turn the journal back on to convert it back to EXT3:

tune2fs -O has_journal /dev/sda2

Good fucking luck! :P

5/5/2005
Backspace key doesn't work in Vim (or Vi) in SuSE. Vim actually uses terminfo, which has different keymappings than bash uses (which I believe are defined in /etc/initrc). To fix this, edit /etc/vimrc and simply add the following line:

set bs=2

Voila! To read about this problem, simply type :help fixdel in Vim. Keep in mind, however, that it doesn't list this solution as a fix, even though it seemed to be the only one that worked for me!

 

5/11/2005
Turn off IPV6. This is the quick and easy solution. Granted, I'm completely for IPV6, but the fact is, it'll be another 10 years before anything is actually implemented. Maybe I have no right to say that statement - maybe it's already implemented transparently on the backbones! Nonetheless, turning it off will speed things up a bit on your computer.

To do so, simply add/change the following line to your /etc/modprobe.conf file:

alias net-pf-10 off

Next time you reboot, your network interfaces will no longer be IPV6 aware.

 

8/17/2005
ERROR: unexpected CPU exception 0x06 err=0x00000000 cr2=00000000 while in vm86 (DOS)
Program=sigsegv.c, Line=159
when running DOSEmu.
I got this error with DOSEmu versions 1.3.1 as well as 1.3.2, attemping to run under both kernel 2.6.12.5 and 2.6.11.1. At first, it appeared that this was being caused by address space randomization. I tried shutting this off by typing the following:

echo 0 >/proc/sys/kernel/randomize_va_space

This did not seem to actually shut it off, so I added the following line to /etc/sysctl.conf:

kernel.randomize_va_space=0

That shut off the randomization, but I still got the exact same error in DOSEmu! I then added the following line to /etc/sysctl.conf in an attempt to shut off exec-shield, thinking that might be the problem:

kernel.exec-shield=0

Since there doesn't seem to be a /proc/sys/kernel/exec-shield file, however, I'm not sure if this actually did anything! It used to though, in the early kernel 2.6 days! Hhmmm... Running dosemu -d, which disables DPMI, seemed to bypass this error, but gave me a different error and seemed to open a whole new can of worms.

As it turned out, SELinux is what broke DOSEmu. On a hunch, I turned it off in the kernel configuration, under Security options\Enable different security models\NSA SELinux Support (in actuality, I disabled "Enable different security models" and ran completely old school). As soon as I recompiled the kernel and rebooted, DosEmu worked! :)

 

8/19/2005
Define static MAC addresses in DOSEmu. Sometimes, you want a DOSEmu session to have a unique and unchanging (in-between sessions) MAC address, independent of the MAC address of your network interface, which DOSEmu would normally inherit if $_vnet = "direct" and $_netdev = "tap0" in the dosemu.conf file. On the other hand, if you create a bridge and a tap interface, then set $_vnet = "tap" and $_netdev = "tap0", it seems to generate a random MAC address every time dosemu is run.

If you watch the MAC addresses closely, you'll notice that only one byte of the 6-byte number actually changes between sessions. This is the third byte in the address (just to confuse you, this is actually the fourth most significant byte). The fourth byte is always static, 90; the other four bytes appear to change depending on some particulars of a given computer, although I haven't really tried to figure out what dictates their value. These do, however, seem to always stay static on any given computer.

First, to make the entire address static, edit src/dosext/net/net/libpacket.c and change the following line:

DosnetID = DOSNET_TYPE_BASE + (rand() & 0xff);

This line normally picks a random hex digit from 0-FF each time DOSEmu is run. Make it static by changing it similar to the following:

DosnetID = DOSNET_TYPE_BASE + (0x44);

If you want to change the fourth byte, which is normally 90, edit src/include/dosnet.h and change the following line:

#define DOSNET_TYPE_BASE 0x9000

10/11/2005
Setting the system clock via NTP in Linux. This is quick and dirty! First, make sure your timezone is set. There is a file, /etc/localtime, that needs to be a symbolic link to a file in /usr/share/zoneinfo/, according to your timezone. For me, the file was US/Eastern, and the /etc/localtime file already existed (but was incorrect). I typed the following command to set my timezone correctly:

rm /etc/localtime
ln -sv /usr/share/zoneinfo/US/Eastern /etc/localtime

Set the system clock by typing ntpdate servername. A valid list of servers, at least as of this date, is as follows:

server adress Location
ntp.ipv6.viagenie.qc.ca IPV6 ONLY
clock.via.net
server fartein.ifi.uio.no Norway
server ntp.uio.no Norway
server ntp.eunet.no Norway
ntp.demon.co.uk UK
ntp.nasa.gov USA
bigben.cac.washington.edu USA
time-b.nist.gov USA
montpelier.ilan.caltech.edu USA
nist1.aol-ca.truetime.com USA
nist1.datum.com USA
time-a.timefreq.bldrdoc.gov USA
time-b.timefreq.bldrdoc.gov USA
time-c.timefreq.bldrdoc.gov USA
time.nist.gov USA
utcnist.colorado.edu USA
tick.usno.navy.mil USA
tock.usno.navy.mil USA
mizbeaver.udel.edu USA

You probably want your hardware clock synced to UTC (Greenwich Mean), so after running ntpdate, set your hardware clock with the following command: hwclock --utc --systohc. You can then look at the hardware clock time by typing hwclock --show --localtime (the --localtime option makes it so it does not back-convert the hardware time to local time when displaying the clock). The advantage of setting your hardware clock, of course, is that your time will already be fairly synchronized upon bootup. To reverse the process, and set your system (software) clock from the hardware clock, you would type hwclock --hctosys. I made a cronjob to set the time using ntpdate every hour, and voila!

You could always use ntpd and run it as a daemon, of course, but the overhead seems pointless. If you were to do so, however, you would need to edit /etc/ntp.conf, and add the following lines:

server ntp.nasa.gov
broadcastdelay .008
authenticate no

You can, of course, add as many "server servername" lines as you want. You would also want to comment out the following lines:
#server 127.127.1.0 # local clock (LCL)
#fudge 127.127.1.0 stratum 10 # LCL is unsynchronized

The fudge line is only used if you want to run an ntp server, and I commented out that server 127.127.1.0 line because I didn't want my computer using itself as the source to set the clock by. There ya go!

11/30/2005
Firefox (any version) randomly crashes on a 64-bit machine. This took me a while to nail down - it appears to be caused by Macromedia's flash plugin being incompatible with the x86_64 architecture. Firefox will even download and install it automatically for you, succeeding, but then proceeding to crash. It most likely crashes with a segmentation fault of some sort. Delete all instances of flashplayer.xpt and libflashplayer.so from your machine (it could be scattered in different plugins folders around your hard drive, depending on how your profiles are set up and how you installed it). Macromedia doesn't seem to be in any hurry to release an x86_64 version!

I decided to try GplFlash. I tried installing the 64-bit rpm and copying libnpflash.so to my plugins directory, but that crashed Firefox even before any flash was loaded! Looking at the GplFlash homepage, it appeared that to play any newer flash images, you would need GplFlash2 anyhow, which is currently only available via CVS. I created a directory on my hard drive and downloaded the CVS version by typing the following commands:

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/gplflash login
<hit enter when it asks for a password>
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/gplflash co -P gplflash2

I then installed it by running the following commands:

cd gplflash2
./autogen.sh --with-plugin-dir=/programs/firefox15/plugins

That failed because it could not find ffmpeg. It was installed, and once I checked the config.log, I found that it was looking for a file called libavcodec.pc. I added its directory to my PKG_CONFIG_PATH environment variable with the following command: export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig

Ok, after digging further into the logs, it appeared that my libavcodec.pc was incompatible with some other files it needed. I did have a weird hacked version installed (which I had done to get a decent version of K3B to run, since the version that is distributed with SuSE is old and therefore missing many options), so that's probably it. I might come back to this one, but for know, I think I'll live without Flash! :(

There is another alternative, Swfdec, which I have not tried.

 

12/5/2005
YaST Online Update (YOU) in SuSE 10.0 thinks you are running Suse 9.3. This happened to me after an upgrade from 9.3 to 10.0 with the downloadable DVD. However, while I was googling a solution, it appeared that some people got this with a fresh 10.0 installation, sans upgrade. That sounds fishy to me, but that's what they said. YOU stores these settings in the /var/adm/YaST/ProdDB/ directory, most likely in a file called prod_00000001 (mine was in a file called prod_00000002, which was the only file in that directory). I edited that file and changed the following lines:

+Media:
MEDIA1. SUSE LINUX PROFESSIONAL 10.0 DVD1
MEDIA2. SUSE LINUX PROFESSIONAL 10.0 Source-DVD
+Product:
SUSE LINUX-10.0-
SuSE-Linux-DVD-10.0-0
-Arch:
=Requires:suse-release-10.0
-Linguas:
=Label:SUSE LINUX Version 10.0
+LabelMap:
de SUSE LINUX in der Version 10.0
-LabelMap:
=RelnotesUrl: http://www.suse.com/relnotes/i386/SUSE-LINUX/10.0/release-notes.rpm
=YouPath: i386/update/10.0

So basically, I just changed every occurence of 9.3 in that file to 10.0. I ran YOU again, and suddenly it had the right version! Let the updates begin!

 

12/5/2005
File permissions on certain system files seem to revert back after you set them manually. In our case, we set the "set user ID bit" on ncpmount (chmod +s /usr/bin/ncpmount), but every so often, we found that the bit had become unset. As it turned out, SuSEconfig was changing those permissions every time it was run (which always happens when you do an Online Update through YaST)! There are a group of files, /etc/permissions* that SuSEconfig uses to set permissions. We searched through these, and there was an entry in /etc/permissions.easy that read like the following:

/usr/bin/ncpmount root:trusted 750

I changed that line to read as follows:

/usr/bin/ncpmount root:trusted 4750

Voila! No more wrong permissions.

 

12/7/2005
Getting CP437 (wide characters) through SCREEN. GNU Screen does not currently support cp437. I have mine compiled with wide character support, but it doesn't noticably change anything. Filterm, part of the konwert package, is a godsend. It translates characters on the fly, and doing a double translation, I was at least able to get extended characters through screen. I could only get version 1.8-9 to compile on my computer (RC4), which is available on the Debian site (this is also after installing a package for Debian called libstdc++5). Any version older than that is just too old to work on a modern system. Here is how I ran filterm/screen/filterm/dosemu to get those extended characters through:

Putty is in CP437.
filterm cp437-UTF8 UTF8-cp437 screen -T rxvt-color
filterm UTF8-cp437 cp437-UTF8 dosemu

Unfortunately, screen still f*cks things up, subtracting items and wrapping others on the screen to make things look bad. It does it even without filterm running (such as setting the external charset to cp1251 in dosemu and running it under screen), so don't blame it on the translation! Interestingly enough, though, stuff looks normal (aside from having no extended characters) on PuTTY running under Linux! It looks pretty good using the ssh program under Linux as well. Perhaps it has to do with the font, which is -monotype-courier new-bold-r-normal-*-*-120-*-*-m-*-microsoft-cp1252 on my Linux machine? In fact, I tried many different fonts on both the Linux and the Windows version of PuTTY, and nothing changed - it always looked right under Linux (sans extended characters, of course) but never right under Windows.

 

12/7/2005
Force an fsck on the next reboot (Fedora Core 4).

This is easy. touch /forcefsck.

 

12/15/2005
Disable the screensaver on Linux (in KDE as well as powersaving). Sometimes, right-clicking on the desktop and disabling the screensaver doesn't always work! In SuSE, modify /etc/sysconfig/powersave/scheme_performance and set the following line:

POWERSAVE_DISABLE_SCREENSAVER = "Yes"

In addition, a program called xset can set user preferences for X. You can read about it here. Type xset s off to disable X server screen blanking. Finally, to disable blanking for the text consoles, type setterm -blank 0

I also had to fix this on a Ubuntu machine. The monitor would blank (powersave) after 10 minutes no matter what screen saver/powersave settings I had set. To fix this, once again I typed xset s off. To make it permanent (between boots), however, I created a ~/.xsession file (this did not previously exist in the user's home directory. However, if it does exist, it will run automatically when the user logs in). The script simply looked like this:

#!/bin/sh

# Prevent screen blanking using xset.
xset s off

 

1/29/2006
Beagle (or mono) uses up half your CPU. Beagle is a program that indexes your entire system to provide fast searches. I personally do not care for this feature - I'd rather wait! Nonetheless, it is installed by default with SuSE, and many programs use it. However, you'll probably notice periodic slowdowns in your system, only to look in your list of processes to find tons of mono threads running, each using 2-5% of your CPU apiece! At first I simply uninstalled Beagle on my system, but then many programs complained (including Nautilus, which means I suddenly had no desktop! <grin>).

Beagles uses the .beagle subdirectory off of a user's home directory. If you simply want to disable beagle... (to be continued)

 

3/8/2006
Windows 2000 only recognizes the first 128GB of an ATA hard drive. ATA interface hard drives use 48-bit LBA to overcome the 137GB physical boundary when using 28-bit LBA. Support for this became available in W2k Service Pack 3, however, you must also add and/or enable the following registry key to utilize it and see those drives:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\atapi\Parameters\EnableBigLBA

Set the value of this key to 1. The key is type REG_DWORD.

 

3/12/2006
Setting the timeout for CGI scripts in IIS. It is not necessarily easy to find where to do this, since it is somewhat hidden, no matter which version of IIS you have. The default is always set to 300 seconds, which sometimes is not nearly enough! From IIS 4 or 5, it can easily be done from the main web server properties, and affects every virtual directory on the site. However, this option disappears in IIS 6.0.

In IIS 6.0, you must edit the Metabase to set this value. Windows Server 2003 comes with a program called Metabase Explorer (found under Programs -> IIS Resources -> Metabase Explorer), but if you want to use this method on an earlier version of Windows Server/IIS (yes, it supposedly works from these versions as well), you must download the free MetaEdit utility.

Before you edit the Metabase, turn on "Metabase edit-while-running." More information on this procedure can be found here. You must also enable the "Metabase History Feature" and set it to a value of 10 or greater (by default, it is set to 1). To do all of this, type iisreset /stop, then edit the systemroot\system32\inetsrv\MetaBase.xml file with a text editor. Search for IIsComputer, and in that section, edit or add the following lines:

<IIsComputer Location ="/LM"
EnableEditWhileRunning="1"
EnableHistory="1"
MaxBandwidth="4294967295"
MaxHistoryFiles="10">

Then, start IIS back up by typing iisreset /start. You may also enable metabase edit-while-running from IIS. Open IIS Manager, right click on Local Computer and select Properties. Check the "Enable Direct Metabase Edit" checkbox. This does not affect the history feature though.

Now, set the CGITimeout property. Open IIS Metabase Explorer and browse to Local Computer/LM/W3SVC. The CGITimeout value should be there and set to 300. Edit it to whatever you want, and because it is inheritable, it will affect your entire site. More information on this can be found here.

If you want to set the timeout on specific directories or files, browse to that directory in Metabase Explorer. The virtual directory that I wanted to modify was Local Computer/LM/W3SVC/1/ROOT/blah. The CGITimeout record did not already exist, so I had to add it. I right-clicked on the directory and selected New -> DWORD Record. In the Record Name or Identifier box, I typed CGITimeout. It gave me a little warning about it already being inherited from above, which I ignored. I clicked OK and the record was created. I then double clicked it and changed the value to 3600, which gave me a full hour before timeout. Voila!

 

3/28/2006
HP OfficeJet 6200 color printer network drivers. HP tries to make you install a giant (>200MB) software package to use this all-in-one device. However, sometimes you want to put it on a print server and use it as a network printer from a remote client. The correct drivers to use are the HP DeskJet 5740, which is the most compatible color inkjet device. There is actually a set of drivers for the entire DeskJet 5700 Series of devices. You will, of course, lose any scanning or other functions besides printing, but such is the price to pay for network printing! Download the Basic Feature Drivers here.

 

3/29/2006
Adobe Reader for Linux (v7.0) does not let you select a printer. In fact, it ONLY let you use lp as a printer, which goes to whatever is your default, or at least whichever printer lp is set up to use. It's not so trivial to change.

The easiest workaround is to use a printer manager. If you use KDE, use kprinter. If you are on Gnome, use gtklp. Then, when you click on print in Adobe, change the /usr/bin/lp to /usr/bin/gtklp for gtklp, or whatever it is for kprinter. After you select print, a second dialogue box will come up that lets you select the printer. It means extra mouseclicks, but it works well. Not to mention these utilities are already installed on many standard distributions (gtklp is definitely installed by default with SuSE).

 

4/6/2006
Redirect STDOUT and/or STDERR in Linux. I always forget this, so here's how it goes: 2>&1 1>/dev/null means "bind STDERR to STDOUT, pipe STDOUT to /dev/null." 1> /dev/null 2> /dev/null will do the same thing.

 

5/12/2006
Enter key problems in Perl with Term::ReadKey under Windows. When using the Term::ReadKey Perl module under Windows, when you hit the enter key, it does not register until you hit yet another key. This most likely has something to do with Windows reading the Enter key as CRLF rather than LF (therefore, rather than just reading char 13, it is actually reading char 10 followed by char 13). To get around this, simply add a timeout when calling ReadKey (even if the timeout is insanely long). For example, rather than calling ReadKey(0);, I called ReadKey(999999999);. Suddenly, the Enter key was registered as soon as you hit it, without having to punch a second key.

 

7/5/2006
Compiling the Linux Kernel for Hyper Threading Support. You must select the following options in the kernel configuration:

fas
Processor Family: Pentium-4
Symmetric multi-processing support (CONFIG_SMP)
SMT (Hyperthreading) scheduler support (CONFIG_SCHED_SMT)

Selecting the processor family to be Pentium 4 causes make to pass the "-march=pentium4" option when compiling the kernel. Finally, in grub.conf, you must add the option "acpi=ht" to the kernel commandline.

 

5/14/2006
wine: failed to initialize: /opt/cxoffice/lib/wine/ntdll.dll.so: failed to map segment from shared object: Cannot allocate memory. I run Crossover office rather than regular Wine, which is why the path is so weird. Nonetheless, the fix if probably the same. Simply run ulimit -v unlimited from that same console window right before you run Wine, and all should run!

 

7/22/2010
Assign user rights in Windows (2k/XP). This was surprisingly hard to find since it seems so basic. It is not in the user settings either under the control panel or under Computer Management. I suppose they don't want ordinary people messing with user rights. Nonetheless, I had to do it! It can be done from the command line if you obtain the Resource Kit, using the ntrights.exe program (see this link). I chose to do it from a GUI. Run mmc from the command line and load the "Group Policy Object Editor" snap-in (from File->Add/Remote Snap-in). A screen will pop up that asks you for the "Group Policy Object;" make sure that this says "Local Computer." Expand the menus to Local Computer Policy->Computer Configuration->Windows Settings->Security Settings->Local Policies->User Rights Assignment. You can then simply double-click on a rights policy and add a group or user.

 

9/21/2010
Change virtual disk size in VMWare. This is ridiculously easy. I use the Linux version of VMWare Workstation, but it is the same command in Windows. Run this command:

/usr/bin/vmware-vdiskmanager -x 24GB "/vmware/ericvm/ericvm.vmdk"

The -x option specifies the new size of the partition, and the last option is simply the name of the (start of the) virtual disk file. If you run that command from the virtual machine's directory, you do not need to specify the path. Proceed to boot into a partition manager from inside the VM and resize the partition on the virtual disk. Voila!

 

9/22/2010
Add a raw hard disk to VirtualBox. If you need to use an actual, physical hard disk in VirtualBox, you will need to create a .vmdk file from the command line. To do this, run the following command:

VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk
-rawdisk /dev/sda

The above command is, of course, specifying the entire hard disk rather than just a partition. To use it, you must add it to the hard disk register in VirtualBox; it will then appear in the drop-down list when you go to add a drive.

 

1/7/2011
Cloning a virtual disk drive in VirtualBox. This is really easy, and fast, to do from a command line. Simply type the following:

VBoxManage clonehd /path/to/sourcedisk.vdi /path/to/destdisk.vdi [-format VDI]

Telling VBoxManage the format of the disk proved to be unnecessary when I tried it. After you duplicate the disk, you will need to go into the drive manager and add the drive to the list, then add it to whatever virtual machine you wish to use.

 

9/26/2010
Run Windows Installer in SAFE Mode. If you try to Add/Remove Programs when booted into Windows Safe Mode, you will get a "The Windows Installer Service could not be accessed" error message. This is because the Windows Installer service is not considered a "safe service" and therefore will not start in Safe Mode. Use one of these two methods to start it anyhow:

Tell Windows that Windows Installer is a safe service. From the command line, run REG ADD "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SafeBoot\
Minimal\MSIServer" /VE /T REG_SZ /D "Service" net start msiserver. This will set the Windows Installer Service as legitimate for Safe Mode and start it at the same time. Unfortunately this also leaves the service marked as safe, which is dangerous.

or

Run SafeMSI.exe, a product from JSI, which will start the service in Safe Mode.

 

12/13/2010
Disable default Administrative shares in Windows (NT4/W2K/XP). Windows automatically shares all your hard drives, as well as your SYSTEMROOT directory, by default; it also doesn't let you turn these shares off very easily. You can do it temporarily from the GUI, but it reverts on a reboot. Do do it permanently, add the following registry value on workstation: Under HKLM\SYSTEM\CurrentControlSet\Services\LanManServer\Parameters, AutoShareWks (this is a DWORD), value of 0.

 

Ncurses with wide support:

./configure --with-shared --prefix=/usr mandir=/usr/share/man --with-widec
http://packages.debian.org/stable/source/screen for version that works with ncurses' --enable-widec build.

Make your Virtual Console log in automatically!

ANSI fonts for X - http://home.earthlink.net/~us5zahns/enl/ansifont.html

Here's a whole crapload of miscellaneous config files for Linux.

Repair XP - Document containing various tips for repairing XP.

http://adblock.ethereal.net/SessionSaver/sessionsaver-02-dev.xpi (SessionSaver extension that works with Firefox 1.5)

Downloads  
rman my first-choice man to html converter..
roffit   my second-choice man to html converter.