Category Archives: Technology

Heating Problem with My Thinkpad

Lately, my laptop was heating up a lot. Even with an idle machine it was getting very hot quickly. For once, I thought that it a hardware issue. But doing a little investigation, I found an application in the task manager consuming 100% CPU. This was some buggy application that came with my hTC phone.

Infinite looping in one or other form are mostly the type of bugs that cause 100% consumption of CPU. I once faced such a bug with Qt while calling the function paint() in the paint-handler. Causing infinite recursive function calls. Paint calling the paint-handler and paint-handler calling paint again.

Virtual Address Space Randomization

Randomizing the Virtual Address Space of a process means randomly arranging the address positions of stack, data, executable text, heap libraries etc in an address space. It makes sure that system is secure with respect to various types of attacks based on the knowledge of address locations of key data structures of a virtual address space of a process.

All in all, it is a security measure to make attackers life difficult.

One may need to disable it in some scenarios  For example for using the benchmark tool Filebench, one has to disable it for getting stable results.

sudo su
echo 0 > /proc/sys/kernel/randomize_va_space

NFS: Successful Mount but Permission Denied on Access

Lately, I faced an issue with NFS server. I exported something on the server and mounted the same on a client. Mount was successful but accessing the mount threw “Permission Denied” error. I was unable to list or change directory to the mounted directory.

It happens because of the issues with User ID mappings between client and server. A particular user of the client may not have permissions for the exported directory on the server.

There are multiple ways to get around this. One can use no_root_squash and then use the root user to access the mount. Or one may set permissions of the directory on the server to 777. I would would advise to read about UID mappings in the NFS man page and make decision knowingly.

Following is the description of User ID Mappings given in man page of NFS exports.

User ID Mapping

nfsd bases its access control to files on the server machine on the uid and gid provided in each NFS RPC request. The normal behavior a user would expect is that she can access her files on the server just as she would on a normal file system. This requires that the same uids and gids are used on the client and the server machine. This is not always true, nor is it always desirable.
Very often, it is not desirable that the root user on a client machine is also treated as root when accessing files on the NFS server. To this end, uid 0 is normally mapped to a different id: the so-called anonymous or nobody uid. This mode of operation (called ‘root squashing’) is the default, and can be turned off with no_root_squash.

By default, exportfs chooses a uid and gid of 65534 for squashed access. These values can also be overridden by the anonuid and anongid options. Finally, you can map all user requests to the anonymous uid by specifying the all_squash option.

Here’s the complete list of mapping options:

root_squash

Map requests from uid/gid 0 to the anonymous uid/gid. Note that this does not apply to any other uids or gids that might be equally sensitive, such as user bin or group staff.

no_root_squash
Turn off root squashing. This option is mainly useful for diskless clients.

all_squash
Map all uids and gids to the anonymous user. Useful for NFS-exported public FTP directories, news spool directories, etc. The opposite option is no_all_squash, which is the default setting.

anonuid and anongid
These options explicitly set the uid and gid of the anonymous account. This option is primarily useful for PC/NFS clients, where you might want all requests appear to be from one user. As an example, consider the export entry for /home/joe in the example section below, which maps all requests to uid 150 (which is supposedly that of user joe).

Automating Proxy Settings Changes

I have to switch my proxy settings daily, depending upon being at work or home. I created two batch files to enable/disable the same.

Note that this applies to the global aka Internet Explorer proxy settings.

ProxyEnable.bat

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /d "http://www.server.name/proxy" /t REG_SZ /f

ProxyDisable.bat

REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v AutoConfigURL /f

Hide the toolbar when running VMware Player in full screen

The VMPlayer toolbar on the top don’t let you experience the virtual machine to the fullest. The toolbar keeps up popping undesirably. This toolbar keeps reminding you that you are using a virtualized machine. To get the best experience you need to hide it.

I found a solution to completely hide the toolbar. Edit the preference file of VMPlayer and append following line to it.

pref.vmplayer.fullscreen.nobar = “TRUE”

Preference file win Windows 7 is located at:
C:\Users\<user>\AppData\Roaming\VMware\preferences.ini

Remember to use Ctrl + Alt to go back to host machine.

Rooting Android

Lately, I rooted my Android device. My main purpose was to tether phone-internet to my laptop. All the the tethering Apps required rooted kernel. I had no choice but to root my phone.

A little googling led me to a very nice and step-by-step guide for rooting Samsung Galaxy Spica i5700. Following the same I was able to successfully root my phone without any glitches.

Rooting will not format your phone. Everything will remain intact, your files, Apps installed, Apps data, SD card data etc. The idea behind rooting is that kernel is changed to a modified one. The modified kernel enables to run certain Apps with the root permissions and let your phone do stuff which requires super user permissions.

The image, LK2.08, which I used contains the modified kernel and a couple of Apps, e.g., SuperuserApp and Wireless Tether. LK2.08 is built by LeshaK from the modified kernel sources of Samsung Spica. You can look at the modification in the GitHub repository.

I will try understand the kernel modifications, see the internals and technical details of rooting and post something in future.