First we list the connected disks in the system.
% cfgadm -s "select=type(disk)"
Ap_Id Type Receptacle Occupant Condition
sata0/0::dsk/c3t0d0 disk connected configured ok
sata0/1::dsk/c3t1d0 disk connected configured ok
So c3t0d0 is disk 0 in rpool and c3t1d0 is disk 1 (the disk we want to mirror)
Now we need to apply a default Solaris fdisk partition to a disk:
% pfexec format (choose disk 1, then run fdisk (here, choose Y to select the 100% Solaris partition))
Alternatively, can do this in 1 step to disk 1 like so:
% pfexec fdisk -B c3t1d0p0 (p0 is the whole disk starting from the MBR)
Now we set up an SMI label with same partitioning as disk 0 on disk 1.
% pfexec prtvtoc /dev/rdsk/c3t0d0s2 | fmthard -s - /dev/rdsk/c3t1d0s2
Now we add the 2nd drive to our rpool by issuing:
% pfexec zpool attach -f rpool c3t0d0s0 c3t1d0s0
Now we wait for the resilver to finish on the 2nd drive (check with zpool status -v rpool).
Now it's time to make the second mirror half bootable.
% pfexec installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c3t1d0s0
Only thing left to do on an x86 system is add disk 1 to the BIOS' list of bootable devices!
OpenIndiana currently ships with older TERMINFO settings (which configures how your console interprets things) than is common with most other OSS unix-like systems. Most users will benefit from adding the line
TERMINFO=/usr/gnu/lib/terminfo; export TERMINFO
to the ~/.profile file, simple use nano or vim to copy that line into the bottom and restart your console, and things should work a little better.
Its likely you already have ncurses installed (which is needed for TERMINFO), but its worth making sure by issueing
sudo pkg install library/ncurses