Sunday, November 22, 2009

How to make you PC Dual Boot Linux and windows




For past few years I have been using Linux (Fedora). When I decided to use Linux the first thing came in my mind is how to make my PC dual boot for both windows and Linux. Though one method was simple I allowed the grub loader to install in my MBR (master boot record) and there I chose  lable "other" as default.

Though that was the most simple thing to do but later I faced a problem. When I tried to boot my pc with windows xp bootable CD it did't booted with that. That was because there was grub loader in MBR.

So later I searched for Installing Fedora or other Linux without installing GRUB in MBR. So by default the windows loader NTLDR should detect the linux partion and it should boot your linux with it. The the problem is that you NTLDR can't detect linux partion. So basically you have to copy a file in your windows partion.

There are few methods to do it :-
  • 1# Use dd to copy GRUB stage1 to a binary file:- Install Fedora and choose the boot loader option to install GRUB in the first sector of the Fedora boot partition (see attachment). Fedora will not boot at first. In linux rescue (see attachment), use the dd command to copy GRUB stage1 located in the first sector of the Fedora boot partition to a binary file in the Windows root directory. Then manually edit boot.ini (see attachment) to add a new entry for Fedora to the Windows boot menu to launch the binary file. 
    • After Fedora is installed...
    • Boot with the Fedora DVD into linux rescue.
    • At the command prompt, enter:

      dd if=/dev/sdxy of=fedora.bin bs=512 count=1


    • NOTE: You change x & y to the drive & partition of the Fedora boot partition with stage1. You may also change the name of the output file to whatever you choose.

    • Copy the binary file to a floppy or a partition that Windows can access (see attachment).
    • Exit linux rescue and reboot into Windows.
    • Copy the binary file to C:\ where boot.ini is also located.
    • Edit boot.ini to add a line similar to this:

      Code:
      c:\fedora.bin="Fedora"


    • Reboot.
    • How it looks on paper

      Code:
                                                boot.ini               /--> kernel
                                                          |                 / 
      BIOS --> Partition Loader --> Boot Sector Code --> ntldr --> XP Menu -----> kernel          grub.conf                  /--> kernel
                 (Master Boot        (Volume Boot          |                \                         |                     / 
                    Record)             Record)       ntdetect.com           \--> fedora.bin --> GRUB stage2 --> GRUB Menu -----> kernel
                                                                                 (GRUB stage1)   (/boot/grub)               \ 
                                                                  
       

    • NOTE: This "dd method" sometimes doesn't work if the Fedora boot partition is not on the same drive as Windows. That can result in an incorrect boot drive number being specified in the code of the binary file at offset 40h. The hex values for the boot drive number are first=80h, second=81h, third=82h, and so on. If the value at offset 40h is FFh, that means that the stage1 program gets the boot drive number from BIOS, and that also could be wrong for the physical layout. The binary file can be edited with any hex editor to change the boot drive number when this happens. In the example below, the value for the boot drive number at offset 40h is FFh. The Fedora boot partition was on the second drive, and the binary file did not work to boot the Fedora system. The binary file was edited with ghex to change the boot drive number to 81h, and then it worked to boot the Fedora system.

  •  2# BOOTPART:-
    • Summary

      Install Fedora and choose the boot loader option to install GRUB in the first sector of the Fedora boot partition (see attachment). Fedora will not boot at first. Use BOOTPART in Windows to create a binary file containing code that loads and executes the boot sector code of the Fedora boot partition (stage1). BOOTPART also edits boot.ini to add a new entry for Fedora to the Windows boot menu to launch the binary file. BOOTPART is often useful when the dd-created binary file fails to work.

      The Steps

      After Fedora is installed...
    • Reboot into Windows.
    • Download BOOTPART from the Internet and unzip the files to your Windows Desktop.
    • Open a Windows Command Prompt window. From here on, everything occurs in this window.
    • Change directories to the Windows Desktop...

      Code:
      cd desktop


    • Enter the command bootpart without any options and your partitions will be listed. Example...

      Code:
      C:\Documents and Settings\User\Desktop>bootpart
      
      Physical number of disk 0 : 9590e5ce
       0 : C:* type=b  (Win95 Fat32), size= 2008093 KB, Lba Pos=63
       1 : C:  type=5  (Extended), size= 18000832 KB, Lba Pos=4016250
       2 : C:  type=7  (HPFS/NTFS), size= 18000801 KB, Lba Pos=4016313
      Physical number of disk 1 : b4f03683
       3 : D:* type=7  (HPFS/NTFS), size= 80035798 KB, Lba Pos=63
      Physical number of disk 2 : 9a109a0
       4 : E:* type=83 (Linux native), size= 104391 KB, Lba Pos=63
       5 : E:  type=8e (Linux LVM), size= 38989755 KB, Lba Pos=208845


    • Now enter the command again in this format...

      Code:
      bootpart [partition number] [filename] [title]
      [partition number] Get this from the output of your bootpart command without options in the previous step. In the above example, partition #4 is the Fedora boot partition and is easy to spot since it is listed as type=83 (Linux native) and the other Linux partition is an LVM physical volume. If there had been several type 83 partitions instead of the LVM PV, here are some clues to find the boot partition: a) it is usually the first type 83 Linux partition in the list, b) it is usually about 100000 KB in size, c) it may have an asterisk (*) by it indicating it is the active partition.

      [filename] This is the name to give the binary file to be created in the Windows root directory. It can be anything you want.

      [title] This the title of the Fedora OS in the Windows boot loader menu. It can be anything you want.



    • Continuing with the example from above, the command could be like this...

      Code:
      bootpart 4 C:\fedora.bin "Fedora"


    • Reboot.
How it looks on paper
Code:
boot.ini               /--> kernel
                                                    |                 / 
BIOS --> Partition Loader --> Boot Sector Code --> ntldr --> XP Menu -----> kernel                          grub.conf                  /--> kernel
           (Master Boot        (Volume Boot          |                \                                         |                     / 
              Record)             Record)       ntdetect.com           \--> fedora.bin --> GRUB stage1 --> GRUB stage2 --> GRUB Menu -----> kernel
                                                                            (BOOTPART)    (boot sector)    (/boot/grub)               \                                                     
  •  #3: GRUB for DOS(my favorate)
    Summary

    Install Fedora and choose the boot loader option to install GRUB in the first sector of the Fedora boot partition (see attachment). Fedora will not boot at first. This method uses GRUB for DOS (aka GRUB4DOS) which is capable of launching the Fedora kernel directly without using any GNU GRUB stages. Even though Fedora's GRUB stages are not required for this method to work, there is still a benefit from choosing to install GRUB in the first sector of the Fedora boot partition. It causes a grub.conf file to be created for Fedora while still sparing the master boot record from changes. Having a grub.conf file is useful for copying menu commands to the GRUB for DOS menu.lst or for using the configfile menu command to launch Fedora. The stage1 code that is installed in the boot sector causes no harm sitting there unused.

    The Steps

    After Fedora is installed...
  • Reboot into Windows.
  • Download the GRUB4DOS zip file.
  • Unzip the file and copy these files to C:\ (or the Windows root directory):



    1. grldr
    2. menu.lst



  • Edit boot.ini (see attachment) to add a line similar to this:

    Code:
    c:\grldr="Start GRUB"


  • Edit menu.lst to add sections for the Linux systems (and to tidy up for the many examples).
  • Reboot.
How it looks on paper
Code:
boot.ini               /--> kernel
                                                    |                 /
BIOS --> Partition Loader --> Boot Sector Code --> ntldr --> XP Menu -----> kernel                /--> kernel
           (Master Boot        (Volume Boot          |                \                          /
              Record)             Record)       ntdetect.com           \--> grldr --> GRUB Menu -----> kernel
                                                                              |                  \
                                                                           menu.lst               \--> kernel
                                                                      (using configfile)
The usual menu commands all work in the GRUB for DOS menu.lst file. The title, root, kernel, and initrd lines can be copied from another configuration file to directly boot a Linux kernel. Or, the configfile command can be used to reload the menu with the information from another system's GRUB configuration file. And, the chainloader command can be used to launch boot sector code.

Wednesday, November 4, 2009

Star Field Effect in C by writing in VGA memory

For past few time I was working on the 16 Bit version of C compiler namely TurboC++. and was programing in few Graphical libraries. I was keen on writing a program in C to show a similar effect like that of Star field effect in the Windows Screen Saver but writing the routes at low level directly to VGA memory. I designed a library for that form a bit of help form net.
                                  Here I am posting a C program to Create a Star field effect in C.  Also I have well Documented the code so that you can under Stand it well.

download the executable  and source code file form exe form here

Library to enable mouse in 16BIT turboC++ (works upto windows XP)

///////////////////////////////////////////////////////////////
///            MOUSE.H WRITTEN BY RITESH RANJAN        
///            
///         ******************************************    
///            feel free to modify and use it   I would to hear from u abt improvements       
///      ************************************************   
///           ritesh_ranjan007@yahoo.com                 
//////////////////////////////////////////////////////////////////

#include< dos.h >

unsigned int mousex,mousey,mouseb;   // global varialble


void showmouse();
void hidemouse();
void readmouse();
void setmousexy();
void setminmaxx(int ,int);
void setminmaxy(int, int);





//////////////////////////////////////////////////////

void showmouse()
{
   _AX=0x1;
   geninterrupt(0x33);
}
///////////////////////////////////////////////////////
void hidemouse()
{
   _AX=0x2;
   geninterrupt(0x33);
}
//////////////////////////////////////////////////////
void readmouse()
{
  _AX=0x3;
  geninterrupt(0x33);
  mouseb=_BX;
  mousex=_CX;
  mousey=_DX;
}

///////////////// move mouse to x,y /////////////////////
void setmousexy(int x,int y)
{
  _AX=0x4;
  _CX=x;
  _DX=y;
  geninterrupt(0x33);
}
/////////////////// set max min x values /////////////////////////////

void setminmaxx(unsigned int min,unsigned int max)
{
  _AX=0x7;
  _CX=min;
  _DX=max;
  geninterrupt(0x33);
}

////////////////////// set max min y values /////////////////////////

void setminmaxy(unsigned int min,unsigned int max)
{
  _AX=0x8;
  _CX=min;
  _DX=max;
  geninterrupt(0x33);
}
/////////////////////////////////////////////////////////////////

Tuesday, November 3, 2009

Image Processing - Code to filter color in MATLAB

In this post we will learn to how filter color in Matlab. Matlab provide very good Image processing tool box with many ready made functions. Here I have illustrated a very basic method to filter color in Matlab. The concept is- in the 3D matrix of RGB color space, if the value at a particular pixel have more value in Red space than blue or Green, and if it is within a tolerance value then consider that pixel Red.
eg -


  elseif im(i,j,1)>200 & im(i,j,2)<50 & im(i,j,3)<50
            white(i,j)=0;
            green(i,j)=0;
            blue(i,j)=0;
            red(i,j)=1;


Copy this code an save as .m file. then run this file.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ------------------------@author:-  RITESH RANJAN
% -------- visit:-  http://programing-tutorial.blogspot.com/
% ------I have used a simple method. There are many more complex
%--------------- methods too that I will discuss Later
% ------------Just copy it save a .m file run in MATLAB 7 or higher
% ----------------Don't forget to change the name of Image file

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear;
im=imread('image.jpg'); %put image name here
imtool(im);
sz=size(im);

for i=1:sz(1)
    for j=1:sz(2)
        if im(i,j,1)>200 & im(i,j,2)>200 & im(i,j,3)>200
            white(i,j)=1;
            green(i,j)=0;
            blue(i,j)=0;
            red(i,j)=0;
        elseif im(i,j,1)>200 & im(i,j,2)<50 & im(i,j,3)<50
            white(i,j)=0;
            green(i,j)=0;
            blue(i,j)=0;
            red(i,j)=1;
        elseif im(i,j,1)<50 & im(i,j,2)>200 & im(i,j,3)<50
            white(i,j)=0;
            green(i,j)=1;
            blue(i,j)=0;
            red(i,j)=0;
        elseif im(i,j,1)<50 & im(i,j,2)<50 & im(i,j,3)>200
            white(i,j)=0;
            green(i,j)=0;
            blue(i,j)=1;
            red(i,j)=0;
        else 
            white(i,j)=0;
            green(i,j)=0;
            blue(i,j)=0;
            red(i,j)=0;
       end
             end
end


imtool(white);
imtool(green);
imtool(blue);
imtool(red);

Image Proseesing - Extacting Shapes using OpenCV

 // This is a program to find SQUARE shape and Circle shape


#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include < math.h >
int main(int argc, char* argv[])
{

    IplImage* img=0;
    IplImage* gray=0;

    CvMemStorage* storage = cvCreateMemStorage(0);
    CvSeq*  contours;

    img=cvLoadImage("shape.jpg");

    if(img==NULL)
    {
        printf("Error in opening image\n");
        return -1;
    }


    cvNamedWindow("win1",1);
    cvNamedWindow("win2",1);

    gray = cvCreateImage( cvSize(img->width, img->height), IPL_DEPTH_8U, 1 );
    cvCvtColor(img,gray,CV_BGR2GRAY );

    uchar *data;
    data=(uchar* )img->imageData;

    uchar *data_gray;
    data_gray=(uchar* )gray->imageData;

    int  step_g=gray->widthStep;
    int  step=img->widthStep;
    int channels=img->nChannels;

   


     for(int i=0;iheight;i=i++)
     {
         for(int j=0;jwidth;j++)
         {
             
             
             /////////////exracting  white
             if( (data[i*step+j*channels+0]>200) && (data[i*step+j*channels+1]>200) && (data[i*step+j*channels+2]>220) )
                 data_gray[i*step_g+j] = 255;


            else
                data_gray[i*step_g+j] = 0;

         }
         
     }

   // find counters in the gray image - object detection
    cvFindContours( gray, storage, &contours, sizeof(CvContour),
                    CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE , cvPoint(0,0) );

   

    double area;
    double p;
    double metric_s,metric_c;

// loop through all counturs   

for( ; contours != 0; contours = contours->h_next )
    {
        area=fabs( cvContourArea(contours,CV_WHOLE_SEQ ) );
        p=fabs( cvArcLength( contours, CV_WHOLE_SEQ, -1) );

        // determine metric for circle
        metric_c=area*4*3.14/(p*p);
        metric_s=area*16/(p*p);

        if(metric_c > 0.75f && metric_s > 1.0f)
            printf(" circle \n");

        else if(metric_s > 0.9f && metric_c < 0.8f )
            printf(" square \n");

        else
            printf(" nothing ");


        printf("area = %lf perimeter=%lf metric_c=%lf metric_s=%lf\n",p,area,metric_c,metric_s);



    }


     cvShowImage("win1",img);
     cvShowImage("win2",gray);

     cvWaitKey(0);
   
    cvDestroyWindow("win1");
    cvDestroyWindow("win2");

    cvReleaseImage(&img);
    cvReleaseImage(&gray);
   
   
   
   
    //printf("Hello World!\n");
    return 0;
}

Sunday, November 1, 2009

Anti virus for free

There are so many people on the net trying to find a final solution to the biggest problem on earth for Window user -- VIRUS. The solution lies in installing a antivirus because of course windows is too lame to protect it self.


Now the biggest problem is which is the best anti-virus.According to the PCWorld the Kaspersky anti-virus stood third on the list of best anti virus. So without wasting any time lets see how we can install Kaspersky anti-virus for free. The biggest problem with the hacked version or craked version is you cannot Update your anti virus .

But using this trick you can not only have a free anti virus but also you can update it and protect your computer.For this we will use KASPERSKY -> Kaspersky 6.0.1.411 becoz it works only in this version. So you will have to down load it form http://kaspersky-antivirus.brothersoft.com/kaspersky-antivirus6.0.1.411


1- go To ( Start ) then ( Run )

2- Type ( regedit ) and press ( OK )

3- Go To ( HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\AVP6\Data ) & Right Click On ( Data ) & Choose ( Permissions )

4- Choose ( Advanced ) From The ( Permissions For Data ) New Window Opened

5- In ( Advanced Security Settings for Data ) Window .. There is a sentence which begin with ( Inherit from parent ... ) click on the nike or check mark to remove it

6- After Removing the check or nike mark you will get a new message .. choose from it ( Remove )

7- Then in ( Advanced Security Settings for Data ) click on ( Apply )

8- After Clicking Apply you will get a new message choose ( Yes )

9- After That Press ( OK ) In ( Advanced Security Settings for Data )

10- After That .. Press ( OK ) In ( Permissions For Data )

11- After That Make An ( Exit ) For ( KasperSky ) .. & Run It Again

12- You Will Notice That The Kaspersky Icon Is Not ( RED ) But Its ( GRAY ) Which means that the program is not activated

13- But if you opened it you will see all things are working perfect 100% Working.

What Happened To The Program After These Steps ?

- You Will update the kaspersky database manually ... no automatic updates.

- The windows security center will tell you that the firewall or\and antivirus is not working ... becoz you made the kaspersky seemed unactiviated. Actually the registry key you have edited stores the information about activation keys and all that. You actually not delected the key but you have prevented the kaspersky form reading it by denying permissions.

Note:- To uninstall you have to undo the steps above. To have to grand all permision to the key above. Also After installing you have to update the Kaspersky before you continue. Because Kaspersky 6 is petty old an you must have a updated version for complete virus protection.

Play Video in Ms Paint, Photoshop, and in MSWord

Yes you can really Play video in Ms paint. But that doesn't mean that MsPaint have a built in player.

This is just a trick that can be played by using VLC. First you have to enable wallpaper mode in VLC .

Just follow these steps  http://programing-tutorial.blogspot.com/2009/10/set-any-video-as-your-desktop-wallpaper.html

Now what you have to do is to press "Print SysRq" to print System Screen.

Now open MsPaint , select new file and press crt+v to paste the clipboard content in msPaint.

---- Now you will see a video playing in the paint.

---DO the same for PHOTOSHOP , select a new file and take a PrintScreen and press crt+v.
-- The same applies for MSWord too. Even where ever you can paste a picture you will see video running.

:) njoy