Oracle GRID home cloning can be done using  below steps


Steps:

1.Copy source GRID Home to target server.
2.Make sure grid home user and group are properly setup.
3.Set proper .profile or .bash_profile to setup environment variable.
4.Make sure proper inventory location is pointed in /etc/oraInst.loc file.
5.As a grid osuser run below to detach the grid home from oracle inventory, ORACLE_HOME mentioned is the path of grid home itself.
ORACLE_HOME_NAME can be obtained from oracle inventory <$PATH>/oraInventory/ContentsXML/inventory.xml

cd $GRID_HOME/oui/bin or cd $ORACLE_HOME/oui/bin
./runInstaller -silent -detachHome ORACLE_HOME=/u01/app/grid/product/11.2.0/grid ORACLE_HOME_NAME="Ora11g_prod_grid_home"

6.As a grid osuser run below script

cd $GRID_HOME/clone/bin or cd $ORACLE_HOME/clone/bin
perl clone.pl -silent ORACLE_BASE=/u01/app/grid ORACLE_HOME=/u01/app/grid/product/11.2.0/grid ORACLE_HOME_NAME="Ora11g_dev_grid_home" INVENTORY_LOCATION=/u01/app/oraInventory OSDBA_GROUP=OSDBA_privileged_group OSOPER_GROUP=OSOPER_privileged_group


7.Execute root.sh as a root or sudo

/u01/app/grid/product/11.2.0/root.sh

8.De-configure the current HA Service Settings as root by force as below from root or sudo

cd $GRID_HOME/crs/install
./roothas.pl -deconfig -force


9.Execute below as root or sudo.The below command has to be executed in single line.

/u01/app/grid/product/11.2.0/grid/perl/bin/perl -I /u01/app/grid/product/11.2.0/grid/perl/lib -I /u01/app/grid/product/11.2.0/grid/crs/install /u01/app/grid/product/11.2.0/grid/crs/install/roothas.pl

10.Update the inventory, run it from grid. This will be required for nodes that are going to remain part of your cluster.In standalone system its not required.

./runInstaller -updateNodelist ORACLE_HOME=/u01/app/grid/product/11.2.0/grid defaultHomeName CLUSTER_NODES= CRS=TRUE

Value of defaultHomeName='Ora11g_dev_grid_home' in my case.

10.Modify host names in listener.ora of GRID & ORACLE_HOME and verify other details like Oracle home path in listener.ora,sqlnet.ora and tnsnames.ora.

11.Add asm,listener and database(optional else we can see a harmless error in Database alert log.)

srvctl add asm
srvctl add listener
srvctl add database -d DEV -o /u01/app/ora11g/product/11.2.0/dbhome_1

12.Start listener,asm services

srvctl start listener
srvctl start asm

13.Make sure ASMoracle cluster synchronization service domain are running

ps -ef| grep -i css

orgrid   17069     1  0 May04 ?        00:07:00 /u01/app/grid/product/11.2.0/grid/bin/cssdagent
orgrid   17086     1  0 May04 ?        00:01:30 /u01/app/grid/product/11.2.0/grid/bin/ocssd.bin

14. ASM instance would be started up without any disk groups mounted.


Status Check: Run below command
cd $GRID_HOME/bin
./crs_stat -t

Mount Diskgroup
Connect as sysasm from grid osuser
alter system set asm_diskstring='/dev/oracleasm';
alter diskgroup Data01 mount;
alter diskgroup Redo01 mount;
alter diskgroup Redo02 mount;
show parameter disk
select * from v$asm_disk;

15.Modify Oracle database pfile as per environment and correct path for control file, db name, dump locations utl_dir_loc etc...
Perform database recovery and & start DB.