Showing posts with label faq. Show all posts
Showing posts with label faq. Show all posts

FAQ: Data Science -- Where to Start (continued)?

In my previous post "Data Science -- Where to Start?", I enumerated a few specifics regarding my answer and pointed out several Python online courses to effectively jumpstart your data science career. Now, I would like to suggest a specific book to read that will help you focus on an aspect of your professional career and gain insight on a principle that is not adapted by most. This is particularly applicable when you are reaching the age of 30, whereby you have relatively gained experience in a few professional endeavors.

This post in many ways answers the question: "Is it better to focus on my strengths or on my weaknesses?" The book to read is Strengths Finder 2.0 by Tom Rath. And right there, the answer to the question is already a give-away. And, in more ways than one, your knowledge of yourself and your strengths are immensely helpful.

This is how the book looks like.

Strengths Finder 2.0

The book initially discusses the example of basketball's greatest Michael Jordan -- why can't everyone by like Mike? Way back when, my friends and I wanted to be like Mike and the book has a very good explanation of why everyone cannot be like Mike. It begins by quantifying his strength when it comes to basketball. Assuming that on a scale of 1-10, his basketball skills are rated 10 (being the greatest player). Assuming mine are rated 2. More like 1, but for the sake of comparison, lets put it at 2 compared to MJ.

To be able to make it easier to understand, the book quantifies the result of focusing on strengths by taking a product of the rated skillset or strength and the amount of effort put in honing it. I'm quite positive it is exponential in nature not just multiplicative but to illustrate, if MJ does work related to basketball with an effort of 5, that results to 50. Simply put if MJ focuses on basketball and plays to his strength, this goes to a potential of 100.

In contrast, with a rating of 2, I could only go as much as 20. That just requires meager effort from MJ to match. Given the possibility of exponential product from having the innate strength in the first place, the answer to why everyone can't be like Mike could not be any clearer. This is why it is important to know your strengths.

Coincidentally, MJ shifted to baseball. Did he have a successful season like what he had in basketball? History has recorded this outcome and his return to basketball cemented his legacy.

Bundled with the book is a code you could use to take the Strengths Finder exam. It is a series of questions that when evaluated together produces a profile of strengths. I took the exam a while back and my top 5 strengths are: Strategic, Relator, Learner, Ideation and Analytical. The result goes further to describe my top strength as: "People who are especially talented in the Strategic theme create alternative ways to proceed. Faced with any given scenario, they can quickly spot the relevant patterns and issues." The rest of the strengths are discussed as well.

Also included are "Ideas for Action", one of which is: "Your strategic thinking will be necessary to keep a vivid vision from deteriorating into an ordinary pipe dream. Fully consider all possible paths toward making the vision a reality. Wise forethought can remove obstacles before they appear." As I read through my profile, it's like I was reading the explanation of my past experiences. It explains why I behaved that way and why the decision I made was that. More important is why I am who I am now.

I compared my results with others who took the exam, having the Strategic strength and the descriptions are different. Likewise, the ideas for action are disparate. Having similar strengths doesn't mean having the same overall theme. Strengths also boost each others effects. With the exception of Relator, my strengths are bundled along the "Strategic Thinking" domain.

 RELATED: Data Science -- Where to Start?

Although knowing your strengths (and "playing" to your strengths) is not entirely data science related, it helps to know. In my experience, the investment in acquiring a copy of the book Strengths Finder 2.0 for myself is definitely worth it, plus the Gallup Strengths Finder exam. If you have taken the exam, share with us your top 5 strengths and how it has helped you with your career so far.

Share:

FAQ: Data Science -- Where to Start?

Data is the new oil. Perhaps this statement has now become a cliche. It goes without saying that data science has become the hottest job of the decade. It was predicted that there will be a shortage of data scientists, and that shortage is already prevalent now.

The reality of it all is this, the academe lags behind in preparing students to fill this gap. Data science is simply not taught in school, and the demand for it grows by the minute. While on the subject of data science, I have been often asked: "Where do I start preparing to gain practical skills for data science?" And too often, my answer is Python. But Python in itself is a broad topic and I will be a little more specific in answering that in question in this post.

In my line of work, having knowledge of Python really gives you an edge, not just an advantage. So if you want to start a career in data science, building a Python skillset is simply practical.

Knowledge, and even expertise, in Python can go a long way. It can be applied to ETL (or extract transform and load), data mining, building computer models, machine learning, computer vision, data visualizations, all the way to advanced applications like artificial neural networks (ANN) and convolutional neural networks (CNN). In any of the mentioned aspects of data science, Python can be applied and building expertise really becomes valuable over time.

Complete Python Bootcamp: from Zero to Hero

For beginners, those who have no idea how to program in Python or those who have only heard about it for the first time, the online course(s) really work. The course that has really helped me in getting a head start is Complete Python Bootcamp: from Zero to Hero. I have mentioned this often enough and will continue to advise the course to anyone who wants to learn Python.

While taking on this course, the other recommendation is building knowledge in jupyter notebooks. This will boost your Python productivity. Also, it helps you understand (and re-use) other peoples code as well as aid you in sharing yours, if you wish to. In fact, several of those online courses share code in the form of jupyter notebooks.

To complete the answer, the Python library to master for data science is pandas. Pandas is often referred to as the Python Data Analysis Library and it rightfully deserves that reputation. More often than not, pandas is involved in data analysis, where it really shows its muscle. My recommended course for learning and mastering pandas is Data Analysis with Pandas and Python.

There goes my answer and I hope that helps you build the needed skillset to build a career on data science. These are by no means the only training courses you need, it simply addresses the "where to start" part of it, in my opinion. The more you use Python in your daily activities, the better honed you become and it will be easier for you to talk in the Python lingo before you notice it.

 RELATED: Huge Discounts on Python Courses at Udemy

So, how did your data science journey, or Python experience start? Was this able to answer your question? Share your thoughts in the comments below.

All product names, logos, and brands are property of their respective owners. Use of these names, logos, and brands does not imply endorsement.
Share:

FAQ: Cloned Linux Virtual Machine with Boot Errors

Q. While working on a few cloned RHEL virtual machines just a few days ago, I encountered a weird error that almost stopped me dead on my tracks. I was expecting the tasks to be a breeze since cloning via virtual machine templates is as easy as click, click, click.

As it turned out, what was supposedly a few clicks was more complex than what I thought. The clone virtual machines simply refused to boot. To give you a better understanding of the error see the screenshot below.


Opening the console of the virtual machine, the repeated errors prompted are:
vmsvc[xxx]: [ warning] [guestinfo] RecordRoutingInfo: Unable to collect IPV4 routing table.
vmsvc[xxx]: [ warning] [guestinfo] RecordRoutingInfo: Unable to collect IPV4 routing table.

The messages above are repeated at about every minute.. And, worse, the boot sequence is stuck at this phase and will not proceed.

After exhausting my patience waiting for the host to boot up, I gave up and resorted to shutting down the virtual machines to figure out what was wrong. The VMware logs didn't give a clue what was wrong. Even RedHat forums didn't have information regarding the error.

What was striking was the "vmsvc" string, indicating this was somewhat VMware configuration related or a service related to VMware. This was happening to a RHEL Linux virtual machine. So I tried a different flavor of Linux -- CentOS. Same result. But for Windows Server 2003, it was not.

Google search came out with this same exact error message on the VMware Knowledge Base (KB #2048572). Executing the procedure in the resolution part did not help either.

It only applied when the guest operating system's time is ahead of the host. But that gave me a further clue -- how about if the time of the cloned guest is too far off from the host ESXi host? (Afterall it was converted to a template a while back. And it was not selective, as every cloned machine displayed this manifestation.)

It turned out this was the case. I decided to disable time synchronization completely between the host ESXi and guest RHEL virtual machine.. Bingo error gone.

A. To completely disable the time sync between the host ESXi hypervisor and the guest RHEL virtual machine, simply shutdown or power off the guest virtual machine and edit the .vmx configuration file. Add the following lines, if they don't exist:
tools.syncTime = "0"
time.synchronize.continue = "0"
time.synchronize.restore = "0"
time.synchronize.resume.disk = "0"
time.synchronize.shrink = "0"
time.synchronize.tools.startup = "0"
time.synchronize.tools.enable = "0"
time.synchronize.resume.host = "0"

It helps to enable SSH on the ESXi server and use vi to make changes to the guest .vmx file. After adding the above lines, problem was solved and subsequent clones were easier.

The only task left to be done was to convert the template to a VM, make the same changes and re-template. This was a very fruitful learning experience.

Share:

FAQ: Logged on With a Temporary Profile

Q. For some strange reason, you get this notification from the system tray saying "You have been logged on using a temporary profile." All your desktop icons are gone, including your profile settings. With all this, you got the presence of mind to check your email and it is not even configured.

Don't panic when you see this. You old profile is still intact and retrievable.

A. Before starting, confirm that the notification is similar to the one below.

You have been logged on using a temporary profile

When you see this happen, restart your PC to release the locks on your profiles. This is really optional but Windows doesn't always release the files (or hives) of a profile, so just to be safe execute a reboot.

[1] Log on with the Administrator account (or another account with Administrative privileges).

[2] Delete the directory C:\Users\TEMP.

[3] Open the registry editor and browse this path: "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\ProfileList".

Here you will be seeing the two (2) similar SIDs. The SID will be the same except the other has ".bak" trailing it. Delete this branch of the registry.

NOTE:
To verify, check the value "ProfileImagePath" of the SIDs, they should be pointing to the same directory.

ProfileList

[4] Restart once again and then you're done. The original profile has been recovered.

Hope this helps.

Share:

HOW-TO: Resolve 800B0100 Windows Update Error

It's been a while since I last ran Windows Update. And with the news of hacking and security breaches going around, it would be prudent to keep systems updated and patched. Not that someone would waste their time hacking into my system but it is a good practice to keep up to date just the same.

With that in mind, I discovered that I need to apply 37 patches to keep my system up to date. But only 31 of them applied and the other six (6) resulted in a weird error -- Windows Update 800B0100 Error code. Sure enough Microsoft had this in their knowledge base (at this link). However, performing those tasks did not resolve the problem.

For comparison and just so you also have an idea if we both have the same error, I get below screenshot of the Windows Update window.

800B0100 Windows Update Error

Googling the issue brings up countless other users who experienced the same issue. One after the other, the solutions and suggestions presented failed and failed. The only other probable solution that I have yet to perform is the re-install which I'd like to avoid as much as possible.

Before heading down this path, I decided to phone a friend -- a phone call which turned out to be one of the most valuable phone calls I will ever make. To cut it short, this procedure resolved the issue.

[1] Turn off Windows Update (execute "sc stop wuauserv" on a privileged command prompt). This temporarily disables Windows Update, but is not permanent and does not survive reboots.

[2] Browse the directory %WINDIR%\SoftwareDistribution\Download and delete all contents of this folder. NOTE: Delete the contents only, not the folder.

[3] Likewise, browse the directory %WINDIR%\SoftwareDistribution\DataStore. Under this directory there is a file called "DataStore.edb". Delete this file.

[4] Under the directory %WINDIR%\SoftwareDistribution\DataStore\Logs, delete all files. NOTE: Again, delete the contents only, not the folder.

[5] Download the Microsoft FixIt Update Repair tool (http://go.microsoft.com/?linkid=9665683). This fixit solution has both Default and Aggressive modes. Try Default mode first. Then reboot.

[6] Manually run Windows Update and see if the update error is gone. If not, re-run the procedure above and on step #5, run the tool in Aggressive mode. Then reboot.

In my experience, I had to run the fixit Update Repair Tool in aggressive mode before the problem went away.
Share:

FAQ: Resolve Windows Photo Viewer Rotation Error

So you got a smart phone.. What's cool about this gadget is the built in high resolution camera that can take pictures. Indeed, it is rare to find phones without these cameras built in. Smart phones have founds its niche in everyone's life, that one can't leave home without it.

The data inside them is useless without the ability to upload them to a computer, or a storage device for archiving or permanent storing. However, one could be taken by surprise to find pictures upside down. This is true for an iPhone 4/4S. How then does one rotate the uploaded photos when the built-in tool to rotate shows an error.

The Windows Photo Viewer that is built into Windows 7 could rotate pictures, but this is a hit or miss thing. About 50% of the time it will work as designed, but what about when it presents "Windows Photo Viewer can't save the changes to this picture because there's a problem with the picture's file properties." (see snapshot below)


There's nothing you can do about Windows Photo Viewer to force it to save the photo or picture. You have to use a third party utility to do this. The JPEG Lossless Rotator can do this job for you without any fuss. In fact, there are other utilities that can do the same, but I found this tool the easiest to use. It can also integrate with Explorer and you can simply right click on an image to rotate it.

This way once pictures are uploaded to the computer, just launch the JPEG Lossless Rotator application and browse to the folder containing the uploaded pictures and rotate away.


The application can also do it by batches. And you can see the thumbnails of each photo as they appear. Or click them one by one from Windows Explorer.

With the rotation issues resolved, go ahead and take pictures with that iPhone and rotate them after uploading.
Share:

FAQ: clock_gettime Error Compiling Xymon Client

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q. I recently received an email from a previous colleague asking for help regarding errors in compiling XYmon client on a machine running Fedora 13. Yes, the host is a bit old but since the application running is mission critical downtime is not acceptable and putting it under the microscope with a xymon client is a well-thought move.

To give you a better picture of the error, here are a few lines of the xymon client compile, after running "make -s".

(other lines snipped for brevity)
...
timefunc.c: In function âtimespec_textâ:
timefunc.c:140: warning: pointer targets in assignment differ in signedness
timefunc.c:187: warning: pointer targets in passing argument 2 of âaddtobufferâ differ in signedness
/var/tmp/xymon-4.3.7/include/../lib/strfunc.h:16: note: expected âchar *â but argument is of type âunsigned char *â
../lib/xymonclient.a(timefunc-client.o): In function `getntimer':
/var/tmp/xymon-4.3.7/lib/timefunc.c:67: undefined reference to `clock_gettime'
../lib/xymonclient.a(timefunc-client.o): In function `gettimer':
/var/tmp/xymon-4.3.7/lib/timefunc.c:55: undefined reference to `clock_gettime'
collect2: ld returned 1 exit statustfc
make[1]: *** [../client/xymon] Error 1
make: *** [common-client] Error 2

So as you can see, the error is fatal and compilation will not complete successfully. I have been through this error before and made notes of the things done to resolve.

A. Xymon was built to take into account regular expressions on things being monitored -- log files, directory sizes, etc, etc. These files can be monitored by classes and/or pattern matches that can be defined by regular expressions. And for xymon to function properly, the pcre-devel (PERL Compatible Regular Expressions) rpm has to be installed.

So install pcre-devel via yum.

[root@host /var/tmp] yum -y install pcre-devel
Loaded plugins: fastestmirror, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: mirror.cse.iitk.ac.in
 * updates: mirror.cse.iitk.ac.in
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package pcre-devel.i686 0:7.8-3.fc12 set to be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                   Arch         Version             Repository     Size
================================================================================
Installing:
 pcre-devel                i686         7.8-3.fc12          fedora        278 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 278 k
Installed size: 0.9 M
Downloading Packages:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 278 k
(1/1): pcre-devel-7.8-3.fc12.i686.rpm                    | 278 kB     00:02     
--------------------------------------------------------------------------------
Total                                           271 kB/s | 278 kB     00:02     

Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : pcre-devel-7.8-3.fc12.i686 [###########################] 1/1

Installed:
  pcre-devel.i686 0:7.8-3.fc12

Complete!

Once pcre-devel is installed, xymon client will compile with a few warnings that can be ignored. Do a "make install" after compile completes. Run the xymon client via "/home/xymon/client/runclient.sh start". The path /home/xymon is the path chosen when running "./configure.client" (or "./configure -client").

This step is optional, but I found that it solves some issues with other versions of Fedora/RedHat based systems. Before running ./configure, define the environment variable LIBRTDEF. Do it with command "export LIBRTDEF=-lrt"

In running xymon client, pcre-devel is more often than not a major dependency. So better install it before doing the compile.

Share:

FAQ: Error Rebuilding sendmail.cf

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Guides on the net suggest that you do not edit sendmail.cf by hand. First, make changes to sendmail.mc then rebuild sendmail.cf using the command: "m4 sendmail.mc > sendmail.cf". However, this command sometimes fails and before you know it you have unknowingly made changes to sendmail.cf -- the file is now 0 bytes. The error message is below:

[root@host mail]# m4 sendmail.mc > sendmail.cf
sendmail.mc:10: m4: cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory

Things are pretty simple if you look at the error.. but it is very deceiving. Take a look at your sendmail.cf.

[root@host mail]# ls -la sendmail.cf
-rw-r--r-- 1 root root 0 Feb 18 10:02 sendmail.cf
Ooppss.. sendmail.cf is now zero bytes. You can rebuild sendmail.cf from sendmail.mc using m4, but you just executed the exact command to re-generate sendmail.cf ending in errors. Re-starting sendmail will make things worse. Sendmail will still work as it read sendmail.cf before the error. Restarting it will re-read the zeroed out sendmail.cf file.

I got stuck in this error before. And a colleague got stuck in it just recently.

The guides either forgot to mention that or assumed that it is installed and you will need to have installed the sendmail-cf rpm. How do you know that sendmail-cf is the required rpm? Take a closer look at the first few lines of sendmail.mc.

[root@host mail]# head sendmail.mc
divert(-1)dnl
dnl #
dnl # This is the sendmail macro config file for m4. If you make changes to
dnl # /etc/mail/sendmail.mc, you will need to regenerate the
dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is
dnl # installed and then performing a
dnl #
dnl #     make -C /etc/mail
dnl #

So what you can do now is install sendmail-cf rpm.

[root@host mail]# yum -y install sendmail-cf
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.web.com.ph
 * extras: mirror.web.com.ph
 * updates: mirror.web.com.ph
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package sendmail-cf.x86_64 0:8.13.8-8.1.el5_7 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch          Version                  Repository      Size
================================================================================
Installing:
 sendmail-cf        x86_64        8.13.8-8.1.el5_7         updates        306 k

Transaction Summary
================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 306 k
Downloading Packages:
sendmail-cf-8.13.8-8.1.el5_7.x86_64.rpm                  | 306 kB     00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : sendmail-cf                                              1/1

Installed:
  sendmail-cf.x86_64 0:8.13.8-8.1.el5_7

Complete!

Now re-run "m4 sendmail.mc > sendmail.cf" and it will be error free. You can safely make changes to sendmail.mc and generate sendmail.cf from that.

Share:

FAQ: BartPE/WinPE On USB Error

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

While trying to build BartPE earlier this week, I was perplexed at the problem that got me stuck. I know I had encountered this before, and not having to work with Windows for quite a while, I could no longer recall what I did in the past. This seems to be a common problem on forums and I have helped a lot of people stuck in this problem before.

To give you a better picture, I built BartPE for USB using PE2USB. After being successful at building the USB, I plugged it on the computer to be cloned and.. ERROR!

Remove disks or other media. 
Press any key to restart.

The USB device seems to be ok, as I tried it with other computers. So I rebuilt the BartPE using PE Builder. Same result. The same error results regardless of whether the source is Windows XP Pro SP3 or Windows Server 2003 SP1.

It seems that the common denominator is the Windows 7 on the Thinkpad and the Windows 7 on the desktop. So I tried the build on a VirtualBox Windows XP Pro SP3. The same exact procedure I followed to build resulted in success.

And it hit me -- the bootsectors or boot code written by Windows 7 is different from Windows XP. When using Windows 7 on your machine and building BartPE or WinPE 1.x, you have to write a version 5 boot code (NTLDR) on the USB flash drive. Native Windows 7 format utilities default to version 6 (BOOTMGR) boot code. And this results in errors when booting an XP-based WinPE/BartPE.

BartPE WinPE on USB Error

As seen above, the bootsect.exe was able to write version 5 bootcode to the USB flash drive and I was able to boot to BartPE without errors.

The reverse applies to Windows XP machines creating WinPE version 2 or version 3. You will have to run bootsect.exe to put version 6 boot code to the USB flash drive to properly boot.

The standalone file bootsect.exe can be downloaded from here. Don't worry it is virus-free and runs regardless of whether your version of Windows is 32-bit or 64-bit.

Share:

FAQ: Error Resizing a Logical Volume in AIX

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

The beauty of a volume manager is that the backing device, or meta device as what other operating systems would call it, is made independent from the operating system. The storage device itself is controlled by another layer that is put in place by the volume manager. Thereby, the operating system does not have direct control over this storage. This way the volume group and its underlying logical volumes can be resized on demand.

Several operating systems implement this kind of obscurity including but not limited to Linux and Unix. Today we take a look at this functionality in AIX. However, resizing volumes sometimes has its own set of headaches and we need to be prepared to get around the configuration and the issues encountered each time.

Q. A colleague was trying to resize a logical volume since the application has demanded increased disk space and more breathing room. However, what he thought was a simple change to execute resulted in an error. And thus opened additional learning opportunities for us both. The change and its error was below:

root@host:/root => chfs -a size=+24G /dev/appdata01lv
0516-787 extendlv: Maximum allocation for logical volume appdata01lv
        is 3804.
root@host:/root => lslv appdata01lv
LOGICAL VOLUME:     appdata01lv            VOLUME GROUP:   appvg
LV IDENTIFIER:      00c175f4004c00635401257a0b3fe3.9 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       opened/syncd
TYPE:               jfs2                   WRITE VERIFY:   off
MAX LPs:            3804                   PP SIZE:        32 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                3804                   PPs:            3804
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       maximum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    1024
MOUNT POINT:        /mount/point/info      LABEL:          /label/has/been/hidden
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO
DEVICESUBTYPE : DS_LVZ
COPY 1 MIRROR POOL: None
COPY 2 MIRROR POOL: None
COPY 3 MIRROR POOL: None

A. This change can be done online without losing data nor incurring any downtime. And that is the beauty of a volume manager.

As seen from the output of the commands above, he was trying to add 24GB of space to an existing volume "appdatal01lv" but the logical volume itself seems to deny the adding of additional space to it saying that the "Maximum allocation for logical volume appdata01lv" has been hit.

He got a bit stuck here for a bit, while I was reviewing my notes from changes that I executed before. I knew I had hit this roadblock before.

From a previous change I implemented, I modified the property "MAX LPs" for the target logical volume before adding space to that volume. That step, though sometimes no longer necessary, was missing in his procedure and this time it is not optional.

We implemented the additional step to his procedure and it executed with success.

root@host:/root => chlv -x 7500 appdata01lv
root@host:/root => chfs -a size=+24G /dev/appdata01lv
Filesystem size changed to 299630592
root@host:/root => lslv appdata01lv
LOGICAL VOLUME:     appdata01lv            VOLUME GROUP:   appvg
LV IDENTIFIER:      00c175f4004c00635401257a0b3fe3.9 PERMISSION:     read/write
VG STATE:           active/complete        LV STATE:       opened/syncd
TYPE:               jfs2                   WRITE VERIFY:   off
MAX LPs:            7500                   PP SIZE:        32 megabyte(s)
COPIES:             1                      SCHED POLICY:   parallel
LPs:                4572                   PPs:            4572
STALE PPs:          0                      BB POLICY:      relocatable
INTER-POLICY:       maximum                RELOCATABLE:    yes
INTRA-POLICY:       middle                 UPPER BOUND:    1024
MOUNT POINT:        /mount/point/info      LABEL:          /label/has/been/hidden
MIRROR WRITE CONSISTENCY: on/ACTIVE
EACH LP COPY ON A SEPARATE PV ?: yes
Serialize IO ?:     NO
DEVICESUBTYPE : DS_LVZ
COPY 1 MIRROR POOL: None
COPY 2 MIRROR POOL: None
COPY 3 MIRROR POOL: None

To change the "MAX LPs" property, chfs -x NEW_VALUE has to be executed to the logical volume.

For this particular error message, the solution is to modify "MAX LPs" to cater to the additional storage requirement. You can check the current allocation from the value of "LPs" just another line below "MAX LPs". The change should not make the value of LPs go over its set MAX.

If you have changes involving increase in disk space using the AIX volume manager, better check for the value of "MAX LPs" before executing the change. Or you can note the additional step above so when implementation time comes, it will proceed without further delays.

Share:

FAQ: Mouse Randomly Freezing on Windows 7

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q. I recently encountered something that was both weird and quite disappointing -- my mouse started freezing randomly and it did so at times when it mattered the most. This can be annoying at times. Searching for solutions on the internet was a bit futile and I also learned that a lot of people have been complaining about this problem for years now. Their petitions to Microsoft seem to have fallen on deaf ears.

A. The only other alternative was to use a PS/2 mouse, which I don't have. I remember having a USB to PS/2 converter packaged with my Logitech MX518 Optical Mouse but since I bought it years ago I can't recall where that adapter is now.

I have to make this mouse work without having to resort to buying another one. I know it works since I tested in on my notebook (running on XP) and it doesn't exhibit the same random freezing.

A friend recently gave me this tip for me to try out. It involves making changes to the registry. Before proceeding heed this warning. WARNING: Changes to the registry can render your system unusable. Be warned that changes to the registry can be harmful to your system. But when done right, you can fix the random freezing of your mouse.

Now that you have been warned, open the registry editor Start -> Run.. -> regedit. Browse over to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID. Under this branch of the registry you will see keys starting with VID, which we can't comprehend.

To make life easier, right click on HID and select Find. You will see a similar window as the screenshot below.

Mouse Randomly Freezing on Windows 7

Look for the entry "Mouse". You will find it under VID branch having a key that starts with "6&XXXXX" (see below). This string might be different on your machine. This screenshot is for my Logitech MX518 Optical Mouse. If you have the same mouse, the key could be the same -- 6&c111417&1&0000.

Mouse Randomly Freezing on Windows 7

Under the 6&XXXXX branch is another key "Device Parameters". Under this key add as DWORD "HScrollHighResolutionDisable" and give it a value of "1". Add another DWORD "VScrollHighResolutionDisable" and similarly give it a value of "1".

Mouse Randomly Freezing on Windows 7

Close the registry editor and reboot. Then check if this solves the random freezing of your USB mouse. You may consider looking for other values of "Mouse" on the HID registry key and repeat the process. On my desktop, the "Mouse" entry appeared only once. For a week now, my mouse has been freeze-free.

Share:

FAQ: Error Running 64bit Commands

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q. I recently encountered an error that made me scratch my head. I knew I had encountered it before and had resolved the problem. Unfortunately, my notes were not available at work due to the security policies in place. But when I got home, the putty logs that I saved from before proved really useful.

Encountering weird errors like this one really makes its mark on your memory. To give you an idea what it is, see below. Simple commands like uptime will return errors, and will not run. In fact, all 64-bit executables refuse to run and will give the same error as below.

user@host > uptime
exec(): 0509-036 Cannot load program uptime because of the following errors:
        0509-033 Cannot run a 64-bit program until the 64-bit
        environment has been configured. See the system administrator.

A. Fortunately, I enabled logging on my putty and saved them for future review. And the time for reaping the benefits of that move paid out.

This was how I resolved that problem above. The command to run is "smitty load64bit" or "smit load64bit" (should be executed as root or a privileged user). After smit loads, select "Enable Now".

Once executed, 64bit commands will now run without hitch. No need to reboot the machine.

To my curiosity, I checked the output of smit.log and below is how it looks.

user@host > cat smit.log

[Apr 28 2010, 07:31:21]
    Starting SMIT

(Menu screen selected as FastPath,
        id          = "system",
        id_seq_num  = "220",
        next_id     = "load64bit",
        title       = "Enable 64-bit Application Environment".)

(Menu screen selected,
        FastPath    = "load64bit",
        id_seq_num  = "220",
        next_id     = "load64bit",
        title       = "Enable 64-bit Application Environment".)

(Dialogue screen selected,
        FastPath    = "run64now",
        id          = "run64now",
        title       = "".)

[Apr 28 2010, 07:31:33]

    Command_to_Execute follows below:
>> /etc/methods/cfg64


    Output from Command_to_Execute follows below:

---- start ----


---- end ----

[Apr 28 2010, 07:31:37]
    Exiting SMIT


From the output of smit.log above, you can deduce that if you will not be using smit you can instead use "/etc/methods/cfg64" to accomplish the same results.

Share:

FAQ: Powermt Returns Initialization Error

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q. I was working on an AIX host when I encountered "Initialization Error." when running "powermt display". This error is present when running as sudo. But I tried running as root, hoping things would be different as super-user but that was not the case. The errors I encountered are below.
user@host > sudo powermt display
Initialization error.
user@host > su
Password:
root@host > powermt display
Initialization error.

A. This puzzled me even more. Even as the super-user "root", the error was persistent. I'm not that very well versed with AIX, so I tried using a command that was always useful in Solaris -- truss. I then hit jackpot!

This is the output of the command.

root@host > truss powermt display

execve("/usr/sbin/powermt", 0x2FF22C94, 0x2000FB38)  argc: 2
__loadx(0x03480000, 0x2FF22A70, 0x00000140, 0x10000000, 0x2000033D) = 0x00000000
__loadx(0x0C000000, 0xF020AABC, 0x00000000, 0xF0317004, 0xF020A460) = 0x00000000
thread_init(0x0000000000000000, 0x00000000D0117CCC) = 
sbrk(0x00000000)                                = 0x20018404
vmgetinfo(0x2FF22978, 7, 16)                    = 0
sbrk(0x00000000)                                = 0x20018404
vmgetinfo(0x2FF22440, 7, 16)                    = 0
sbrk(0x00000000)                                = 0x20018404
sbrk(0x0000000C)                                = 0x20018404
__libc_sbrk(0x00000000)                         = 0x20018410
getrpid(-1, -1, -265185236)                     = 253984
_getpid()                                       = 253984
getprocs(0x20018ED8, 920, 0x00000000, 0, 0xF03173B0, 1) = 1
appulimit(1005, 0)                              = 0x20029000
_thread_self()                                  = 610395
thread_setmystate(0x00000000, 0x2FF225D0)       = 0
thread_setmystate(0x2FF222C0, 0x2FF225C8)       = 0
_sigaction(3, 0x2FF228F8, 0x2FF22908)           = 0
_sigaction(4, 0x2FF228F8, 0x2FF22908)           = 0
_sigaction(5, 0x2FF228F8, 0x2FF22908)           = 0
_sigaction(6, 0x2FF228F8, 0x2FF22908)           = 0
_sigaction(7, 0x2FF228F8, 0x2FF22908)           = 0
_sigaction(8, 0x2FF228F8, 0x2FF22908)           = 0
_sigaction(10, 0x2FF228F8, 0x2FF22908)          = 0
_sigaction(11, 0x2FF228F8, 0x2FF22908)          = 0
_sigaction(12, 0x2FF228F8, 0x2FF22908)          = 0
_sigaction(36, 0x2FF228F8, 0x2FF22908)          = 0
_sigaction(39, 0x2FF228F8, 0x2FF22908)          = 0
open("/unix", O_RDONLY|O_LARGEFILE)             = 3
kioctl(3, 22528, 0x00000000, 0x00000000)        Err#25 ENOTTY
kioctl(3, 22528, 0x00000000, 0x00000000)        Err#25 ENOTTY
kread(3, "01F7\005 IFC aE6\0\0\0\0".., 4096)    = 4096
klseek(3, 0, 0, 0x00000001)                     = 0
klseek(3, 0, 13942134, 0x00000000)              = 0
kread(3, "\0\0\0\0\0\0 1\0\0\0\004".., 4096)    = 4096
klseek(3, 0, 0, 0x00000001)                     = 0
klseek(3, 0, 0, 0x00000001)                     = 0
klseek(3, 0, 15041308, 0x00000000)              = 0
kread(3, " _ _ m u l h\0 _ _ m u l".., 4096)    = 4096
klseek(3, 0, 0, 0x00000001)                     = 0
klseek(3, 0, 13942170, 0x00000000)              = 0
kread(3, "\0\0\0\0\0\0 180\0\0\0\v".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 XF1B8\0\0028E".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 XF5 H\0\0\tE6".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 XF8D8\0\0028E".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 XFC h\0\00F12".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 XFFF8\0\0028E".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 Y0388\0\0149F".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 Y0718\0\0028E".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 Y\nA8\0\0028E".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 Y0E 8\0\019AC".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 Y11C8\0\01E <".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 Y15 X\0\0 " W".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
kread(3, "\0\0\0\001 Y18E8\0\0 '99".., 4096)    = 4096
klseek(3, 0, 8, 0x00000001)                     = 0
..
(some output omitted for brevity..)
..
close(3)                                        = 0
open("/etc/emc/mpaa.lams", O_RDWR|O_CREAT, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) = 3
kfcntl(3, F_SETLKW, 0x2FF224B8)                 = 0
open("/etc/emc/mpaa.lams", O_RDONLY)            = 4
kioctl(4, 22528, 0x00000000, 0x00000000)        Err#25 ENOTTY
kioctl(4, 22528, 0x00000000, 0x00000000)        Err#25 ENOTTY
kread(4, " g l o b a l : v e r s i".., 4096)    = 122
kread(4, " g l o b a l : v e r s i".., 4096)    = 0
close(4)                                        = 0
kfcntl(3, F_SETLK, 0x2FF224B8)                  = 0
close(3)                                        = 0
open("/etc/emcp_registration", O_RDONLY)        = 3
kioctl(3, 22528, 0x00000000, 0x00000000)        Err#25 ENOTTY
kioctl(3, 22528, 0x00000000, 0x00000000)        Err#25 ENOTTY
klseek(3, 0, 0, 0x00000000)                     = 0
close(3)                                        = 0
statx("CuDv", 0x2FF21710, 76, 0)                Err#2  ENOENT
statx("CuDv", 0x2FF21710, 76, 0)                Err#2  ENOENT
open("CuDv", O_RDONLY)                          Err#2  ENOENT
Initialization error.
kwrite(2, " I n i t i a l i z a t i".., 22)     = 22
__loadx(0x04000000, 0x2FF20A50, 0x00002000, 0x00000000, 0x00000000) = 0x00000000
kfcntl(1, F_GETFL, 0x1009505B)                  = 67110914
kfcntl(2, F_GETFL, 0x1009505B)                  = 67110914
_exit(103)
As seen from the error above, powermt was looking for the file "CuDv" which is an ODM object. So I tried a trick that I previously noted in post FAQ: Path Errors on AIX ODM Commands.
root@host > cd /etc/objrepos
root@host > powermt display
Symmetrix logical device count=138
CLARiiON logical device count=0
Hitachi logical device count=0
Invista logical device count=0
HP xp logical device count=0
Ess logical device count=0
HP HSx logical device count=0
==============================================================================
----- Host Bus Adapters ---------  ------ I/O Paths -----  ------ Stats ------
###  HW Path                       Summary   Total   Dead  IO/Sec Q-IOs Errors
==============================================================================
   0 fscsi0                        optimal     138      0       -     0      0
   1 fscsi2                        optimal     138      0       -     0      0

This was deja vu all over again. But I now know that when facing these errors, it is useful to just change directory to /etc/objrepos before executing the privileged commands.
Share:

FAQ: Path Errors on AIX ODM Commands

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q. I was working on an AIX host when I encountered weird errors when invoking commands involving the ODM (short for Object Data Manager). The errors I encountered are below.
root@host > bootlist -m normal -o
-
-
root@host > bootlist -m normal hdisk0 hdisk2
0514-209 bootlist: Was not able to access the CuDv object class
root@host > bootlist -m normal hdisk0
0514-209 bootlist: Was not able to access the CuDv object class
root@host > odmget -q attribute=TCB_STATE PdAt 
0518-506 odmget: Cannot open object class PdAt
Check path name and permissions.
root@host > rmlv dump02
0518-506 odmget: Cannot open object class PdAt
Check path name and permissions.
Warning, all data contained on logical volume dump02 will be destroyed.
rmlv: Do you wish to continue? y(es) n(o)? y
0518-506 odmget: Cannot open object class SWservAt
Check path name and permissions.

A. To get a background of what ODM is, AIX stores most of the system management information in /etc/objrepos, /usr/lib/objrepos, and /usr/share/lib/objrepos. Files (also referred to as system object classes) in these directories are adminstered by the Object Database Manager which is a set of library routines and programs providing basic object oriented database facilities.

Any changes you make to the configuration reflects or directly changes files on the ODM. Under most circumstances, only SMIT or the commands SMIT call should be used to change the contents of the system object classes. A harmless way to look at the object database is to use odmget <Class> where <Class> is one of the files in /etc/objrepos.

So after taking a look at the environment and checking that the environment ODMDIR correctly points to /etc/objrepos, we got to a dead-end.
root@host > echo $ODMDIR
ODMDIR=/etc/objrepos

To the rescue is a colleague who is very well versed with AIX. In fact, I consider him a guru in AIX. His suggestion was to try excuting the above commands under the /etc/objrepos directory and see if the errors would go away. And we hit paydirt!
root@host > cd /etc/objrepos
root@host > bootlist -m normal -p o
hdisk0 blv=hd5
hdisk2 blv=hd5
root@host > bootlist -m normal hdisk0
root@host > savebase
root@host > bootlist -m normal -o
hdisk0 blv=hd5

The above is a simple workaround to what may seem to be a big problem. Change directory first to /etc/objrepos then execute the commands.

If you have a permanent solution to the problem, share it with us.

Share:

FAQ: Error with Update on Attach of Solaris Zone

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q. A fellow sysad phoned me a couple of days ago to ask if I experienced patching Solaris zones. When he was attaching the local zones to the global zone he got errors. As advised, he detached the local zones from the global zone before patching. This is what I used to call the detach-patch-attach method in patching Solaris hosts with zones. He was indeed very fortunate that I experienced this same error before and below is how we resolved his issue. Just to give a brief background, the error he got when attaching the local zones was:

root@global> zoneadm -z vhost1 attach -u
zoneadm: zone 'vhost1': ERROR: attempt to downgrade package SUNWlur, the source had patch 121430-25 but this system only has 121430-14
zoneadm: zone 'vhost1': ERROR: attempt to downgrade package SUNWluu, the source had patch 121430-25 but this system only has 121430-14
...
(other output truncated)
...

The above scenario happened after he detached the zones from the global zone (zoneadm -z vhost1 detach), then he applied the latest bundle patch for Solaris 10 (in single-user mode). After reboot, he allowed the server to boot to full multi-user mode.

And when he attached the zones with the update flag (zoneadm -z vhost1 attach -u), boom.. Errors!

A. This scenario happened because the package SUNWlur and SUNWluu (packages for Solaris LiveUpgrade) do not get patched by the Solaris patch bundle. Instead it has its own "special" set of patches. And unfortunately for him, the local zones have a more updated patch for LiveUpgrade than the global zone. Thus the attach with update failed.

I got the solution to the problem from a now non-existent forum -- this link. Too bad, that very informative thread has been removed. But I was glad to have gleaned something from it before it was expunged.

The solution is to append the patch IDs of every SUNWlur and SUNWluu package that would fail when trying to attach the local zones.
root@global> echo 121430 >> /usr/lib/brand/native/bad_patches
root@global> tail /usr/lib/brand/native/bad_patches
...
...
121430

After adding every patch ID entry for "special" patches required by LiveUpgrade, the local zones attach with update was successful.
root@global> zoneadm -z vhost1 attach -u
Getting the list of files to remove
Removing 1568 files
Remove 13 of 13 packages
Installing 18014 files
Add 340 of 340 packages
Updating editable files The file </var/sadm/system/logs/update_log> within the zone contains a log of the zone update.

As seen above, the local zone attached and was updated. It booted with the same kernel as the global zone and the had same patch levels. The other zones attached without errors after performing this procedure.

There are other packages that would fail when doing the upgrade on attach, not just packages for Solaris LiveUpgrade. The other ones that I know of are SUNWvts and SUNWvtss. There are others still. And this same solution is applicable to them.

I was surprised to see that the forum where this solution was shared no longer exists. It contained a wealth of information, and it will probably make the job of new sysads a bit toughter without those shared knowledge and other threads on that forum.

Share:

FAQ: Cannot Fork: No Swap Space

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

There are times when you run into uncharted territory, when you least expect it. A host was failing to execute commands, giving a no swap space error even though swap space was only 9% used. Commands fails to execute but work intermitently.

This happened on an IBM server running AIX 5.3.

All of our efforts to resolve this issue failed, so we called the vendor -- IBM. The error manifests itself as:

user@host# uptime 
ksh: cannot fork: no swap space 
user@host# lsps -s 
Total Paging Space   Percent Used 
4096MB               9% 


Here is a solution to the problem as provided from IBM. It is a known issue from APAR IY89941 fixed at 5.3 TL5 (bos.mp 5.3.0.53) and above. The root cause is that you are running out of 64K pages in the VMM and there is code bug when this type of scenario occurs.

The work around is to disable 64K page size support (until upgrade to higher levels of AIX). To disable run command:

root@host# vmo -r -o vmm_mpsize_support=0


This change is not dynamic. A reboot is required after making this change.

Share:

FAQ: PRNG is not SEEDED

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q: I was trying to help out a friend who was in a dilemma he had already resolved. While trying to scp to a host, he got the error message "PRNG is not SEEDED". Only the super-user root was able to scp, but he wanted drill down to the root of the problem. After all, who wants to execute scp as root, right?

He was able to successfully scp on other machines as himself, but on this particular machine he was only able to do it as the super-user, root. It is worthy to note here that ssh works, but scp does not.

A: When trying to run scp and you get an error message "PRNG is not SEEDED", you probably have an issue with the /dev/random and/or /dev/urandom devices on your system. These devices are created by default during system installation.

Check that proper permissions are present on random numbers generators. The correct permissions should be "others" must have "read" access to these devices. Below are the permissions on a working system:
# ls -l /dev/random /dev/urandom
crw-r--r-- 1 root system 39, 0 Jun 22 10:48 /dev/random
crw-r--r-- 1 root system 39, 1 Jun 22 10:48 /dev/urandom

To corrent, change them like below:
# chmod o+r /dev/random /dev/urandom 

Now stop and start the SSH daemon again, and retry if scp works.
# stopsrc -s sshd
# startsrc -s sshd

For unknown reasons, there are times when the files /dev/random and /dev/urandom are missing from the system. If this is the case, you will need to create them. Execute the following commands:
# stopsrc -s sshd
# mknod /dev/random c 39 0
# mknod /dev/urandom c 39 1
# randomctl -l
# ls -ald /dev/random /dev/urandom
# startsrc -s sshd

So far problems with s-commands I have encountered are related to the random generator character devices. I have encountered similar problems while trying to blank a forgotten root password and setting a new one on a Solaris machine.

You may further drill down on the cause of the problem by using strace or truss, whichever is applicable on your *nix system.

Share:

FAQ: uTorrent -- Stopped By User Activity

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

FAQ. A friend recently called me up to ask if I have experienced my torrent suddenly stop. He further described that every torrent in the queue is greyed out. There was a red button in the status bar with an exclamation, follow by a message stopped by user activity. I asked him for a screenshot but he graciously declined for his own security.

I haven't experienced this scenario before so I told him to keep me updated should he come across a solution for it. I later discovered that after a few days that he re-installed Windows just because his torrents won't run. I felt bad for that poor bloke.

I forgot all about this issue until I came to experience it myself. Here is what the utorrent interface looks like with the error.

uTorrent - Stopped By User Activity

Like him, I couldn't do anything. The torrents were started, not stopped but the program just won't download anything.

So I searched for a solution in the net and immediately found one, from none other than the utorrent forum itself.

I followed the procedure outlined and my torrents are back at work.

Preferences > Bandwidth > (untick) Stop transfers on user interaction

uTorrent - Stopped By User Activity

So click on the wheel icon or press [CTRL]+[P] > Bandwidth, and under Global Rate Limit Options untick Stop transfers on user interaction (like the screenshot above). Then accept the change by clicking OK. Once this is done, downloading will resume.

That solution is much much simpler than re-installing Windows.

Share:

FAQ: Execute WDidle3 via Virtual Floppy Drive

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

FAQ. When I published the document regarding Caviar Green W20EARS drives making strange clunk sounds, one of the readers of the post sent me a mail to ask how to execute this mod if he has no floppy drive.

First of all, thanks for your interest in this mod. We are pretty much in the same boat -- I don't have a floppy drive in my desktop as well. Although it is not expensive to obtain, I don't see any use for the floppy anymore, just like you. Besides, for the price of acquiring the floppy drive an equivalent USB flash drive (UFD) can be bought for the same amount but with a larger capacity than a floppy can contain.

The solution to our problem is a virtual floppy. But how do you emulate a virtual floppy on a computer that has not booted yet? Here's the trick.

Before you begin, it is highly recommended that you read through the entire instructions first. As pre-requisites, download the following software:


[1] Format the UFD with FAT or FAT32 file system type. Grub4dos does not support NTFS filesystem so use FAT or FAT32 but the older FAT file system is most recommended. That is the rationale behind the recommended UFD size of 2GB or less.

[2] Extract the grubinst zip file (in this example we will assume directory D:\grubinst. Likewise, extract the grub4dos zip file (in this example we will assume directory D:\grub4dos). Extract the other files as well.

[3] In the directory D:\grubinst, locate grubinst_gui.exe and run it as Administrator. Click on "Run" when shown the security warning.

[4] A Grub4Dos Installer window will be opened. In this window tick Disk and beside that select the disk referring to the UFD. Hit the refresh button if the selection dropdown is empty. You will be able to correctly select the UFD from the dropdown as it reflects the size of the disk.

On the Part List dropdown, Whole disk (MBR) should be selected from the dropdown. For options, tick the Don't search floppy box. Click on Install.


A command prompt will be opened with a message informing you of a successful installation.

[5] Open the MS-DOS 6.22 floppy image in winimage. Expand the overall capacity of the floppy image from 1.4MB to 2.8MB. Then inject the file wd3idle.exe to the root folder of the floppy image. For tutorial purposes, save the new image as WDIDLE3.IMG. Note down where you will save this file as it will be used below.

(NOTE: The filename is case sensitive!)

[6] Now copy the following files to the root of the UFD:
  • grldr (from D:\grub4dos)
  • WDIDLE3.IMG (from step#4 above)

[7] Create a text file menu.lst in notepad. Copy and paste the code below into menu.lst. This directive in grub makes the computer emulate a virtual floppy drive using the WDIDLE3.IMG file as the virtual floppy.

timeout 10
default 0

# boot WDidle3 floppy image
title WDidle3 tool
map --mem (hd0,0)/WDIDLE3.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1
boot

# reboot
title Reboot
reboot

With the UFD having the required files, you can now boot from it and run WDIDLE3 to mod your WD Caviar Green drive. Use wdidle3 /s300 and validate with wdidle3 /r.

Share:

FAQ: Locate's Equivalent Command in AIX

"There’s No Such Thing As A Silly Question" -- does the cliche sound familiar? In this part of pimp-my-rig reloaded, technical questions are answered. Mail them to me and I will post the answers here. If you have a better answer, by all means share it with us.

Q. Just recently I asked a colleague (whom I consider to be a guru of AIX) what the equivalent of the Linux command locate is on this particular operating system. The equivalent Linux and Solaris commands are previously documented here.

A. Unfortunately, his answer was there is none. But the discussion did not end there. He suggested that I use another command that has a similar function and is quite as flexible as locate.

The commands is whereis (and which_fileset). And this whereis is part of the package bos.rte.commands and bos.compat.links. To determine if whereis is installed on the machine, check as outlined below:

On AIX 5.3:
user@host => which_fileset whereis
/usr/ucb/whereis -> /usr/bin/whereis    bos.compat.links 5.3.0.0
/usr/bin/whereis                        bos.rte.commands 5.3.0.0

On AIX 6.1:
user@host => which_fileset whereis
/usr/ucb/whereis -> /usr/bin/whereis    bos.compat.links 6.1.0.0
/usr/bin/whereis                        bos.rte.commands 6.1.0.0

The above command is dependent on another package and without that there will be errors as outlined below.
user@host => which_fileset whereis
The /usr/lpp/bos/AIX_file_list file does not exist.
Please install the "bos.content_list" fileset
and try the "which_fileset" command again.

When all is well. Try it out:
user@host => whereis hosts
hosts: /etc/hosts.allow /etc/hosts.deny /etc/hosts /etc/hosts.bak /usr/share/man/man5/hosts.5.gz

Did I mention the same command works for Solaris and Linux? It does (given the dependent packages are installed), so add this option on those operating systems too!

Share:

Subscribe for Latest Update

Popular Posts

Post Labels

100gb (1) acceleration (1) acrobat (1) adblock (1) advanced (1) ahci (1) airdrop (2) aix (14) angry birds (1) article (21) aster (1) audiodg.exe (1) automatic (2) autorun.inf (1) bartpe (1) battery (2) bigboss (1) binance (1) biometrics (1) bitcoin (3) blackberry (1) book (1) boot-repair (2) calendar (1) ccleaner (3) chrome (5) cloud (1) cluster (1) compatibility (3) CPAN (1) crypto (3) cydia (1) data (3) ddos (1) disable (1) discount (1) DLNA (1) dmidecode (1) dns (7) dracut (1) driver (1) error (10) esxi5 (2) excel (1) facebook (1) faq (36) faucet (1) firefox (17) firewall (2) flash (5) free (3) fun (1) gadgets (4) games (1) garmin (5) gmail (3) google (4) google+ (2) gps (5) grub (2) guide (1) hardware (6) how (1) how-to (45) huawei (1) icloud (1) info (4) iphone (7) IPMP (2) IPV6 (1) iscsi (1) jailbreak (1) java (3) kodi (1) linux (28) locate (1) lshw (1) luci (1) mafia wars (1) malware (1) mapsource (1) memory (2) mikrotik (5) missing (1) mods (10) mouse (1) multipath (1) multitasking (1) NAT (1) netapp (1) nouveau (1) nvidia (1) osmc (1) outlook (2) p2v (2) patch (1) performance (19) perl (1) philippines (1) php (1) pimp-my-rig (9) pldthomedsl (1) plugin (1) popcorn hour (10) power shell (1) process (1) proxy (2) pyspark (1) python (13) qos (1) raspberry pi (7) readyboost (2) reboot (2) recall (1) recovery mode (1) registry (2) rename (1) repository (1) rescue mode (1) review (15) right-click (1) RSS (2) s3cmd (1) salary (1) sanity check (1) security (15) sendmail (1) sickgear (3) software (10) solaris (17) squid (3) SSD (3) SSH (9) swap (1) tip (4) tips (42) top list (3) torrent (5) transmission (1) treewalk (2) tunnel (1) tweak (4) tweaks (41) ubuntu (4) udemy (6) unknown device (1) updates (12) upgrade (1) usb (12) utf8 (1) utility (2) V2V (1) virtual machine (4) VirtualBox (1) vmware (14) vsphere (1) wannacry (1) wifi (4) windows (54) winpe (2) xymon (1) yum (1) zombie (1)

RANDOM POSTS