This is an old revision of the document!
This article contains my personal notes regarding low level configuration of Solaris hosts. Hmm, “low level” is quite unprecise… Well I mean stuff concerning boot loaders, partitioning, mounting partitions, creating file systems…
To restore GRUB (and be able to boot Solaris) when @## someone/something has scratched it, do:
installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0d0s0
NB. installboot is now obsolete.
See more information on BigAdmin.
Solaris cuts partition into slices. Those slices are numbered 0 to 7 and they correspond to the 's' of the device (c0t0d0s3 refers to slice number 3). Slice number 2 is reserved and refers to the entire disk by convention.
Slices of a given partition may be listed with format.
On Solaris 10, use the command 'print' to show the current layout of a given disk.
partition> print Current partition table (unnamed): Total disk cylinders available: 39691 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 unassigned wm 0 - 27046 13.00GB (27047/0/0) 27263376 1 unassigned wm 0 0 (0/0/0) 0 2 backup wu 0 - 39690 19.08GB (39691/0/0) 40008528 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 partition> 3 Part Tag Flag Cylinders Size Blocks 3 unassigned wm 0 0 (0/0/0) 0 Enter partition id tag[unassigned]: Enter partition permission flags[wm]: Enter new starting cyl[0]: 27047 Enter partition size[0b, 0c, 27047e, 0.00mb, 0.00gb]: 39690e partition> print Current partition table (unnamed): Total disk cylinders available: 39691 + 2 (reserved cylinders) Part Tag Flag Cylinders Size Blocks 0 unassigned wm 0 - 27046 13.00GB (27047/0/0) 27263376 1 unassigned wm 0 0 (0/0/0) 0 2 backup wu 0 - 39690 19.08GB (39691/0/0) 40008528 3 unassigned wm 27047 - 39690 6.08GB (12644/0/0) 12745152 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 partition> label Ready to label disk, continue? yes partition> quit format> volname Enter 8-character volume name (remember quotes)[""]:secondar Ready to label disk, continue? yes
On OpenSolaris, use verify.
axelle@boureautic:~# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c3d0 <DEFAULT cyl 6373 alt 2 hd 255 sec 63> /pci@0,0/pci-ide@12/ide@0/cmdk@0,0 Specify disk (enter its number): 0 [...] format> verify Primary label contents: Volume name = < > ascii name = <DEFAULT cyl 6373 alt 2 hd 255 sec 63> pcyl = 6375 ncyl = 6373 acyl = 2 bcyl = 0 nhead = 255 nsect = 63 Part Tag Flag Cylinders Size Blocks 0 root wm 1 - 6371 48.80GB (6371/0/0) 102350115 1 unassigned wm 0 0 (0/0/0) 0 2 backup wu 0 - 6372 48.82GB (6373/0/0) 102382245 3 unassigned wm 0 0 (0/0/0) 0 4 unassigned wm 0 0 (0/0/0) 0 5 unassigned wm 0 0 (0/0/0) 0 6 unassigned wm 0 0 (0/0/0) 0 7 unassigned wm 0 0 (0/0/0) 0 8 boot wu 0 - 0 7.84MB (1/0/0) 16065 9 unassigned wm 0 0 (0/0/0) 0
The good news about ZFS is that it's as great as expected. Storage units may span over partitions: several disks, devices, partitions and even files can be gathered in a single zfs pool, and then, from that pool virtual disk spaces can be provided the way you want.
zpool create -f pool c0d0s6 c0d0s7
Devices can easily be set for mirroring or RAIDZ. It's as simple as adding a keyword to the command. However, make sure mirroring or raidz is what you need. For instance, my c0d0s6 slice has 15G and c0d0s7 has 17G. If I mirror them, I basically “lose” 2G in the second array. That's not something I want at home (at work, the answer might be different).
zpool create -f pool raidz c0d0s6 c0d0s7 zfs list NAME USED AVAIL REFER MOUNTPOINT pool 87K 15,3G 24,5K /pool zfs destroy pool zpool create -f pool c0d0s6 c0d0s7 zfs list NAME USED AVAIL REFER MOUNTPOINT pool 87K 32,5G 24,5K /pool
It's very easy to set compression, quotas
zfs set compression=on pool
This is the configuration I use:
# zpool create -f pool c0d0s6 c0dà s7 # zfs create pool/axelle # zfs create pool/opt # zfs set mountpoint=/opt pool/opt # zfs set compression=on pool # zfs set mountpoint=/export/home/axelle pool/axelle # zfs list NAME USED AVAIL REFER MOUNTPOINT pool 197K 37.3G 24.5K /pool pool/axelle 24.5K 37.3G 24.5K /export/home/axelle pool/opt 24.5K 37.3G 24.5K /opt
Note before creating the pool, the two slices c0d0s6 & c0d0s7 should be backuped, unmounted and removed from /etc/vsftab. Then, once the pool is created, the original content can be restored. Also, mountpoints are acceptable only if they exist: make sure /export/home/axelle exists first.
zfs import -r <poolname>
zfs list -t snapshot
zfs rollback -rRf <name>
To mount existing partitions:
mount -F pcfs /dev/dsk/c0d0pN /mountpoint
However, there's another way to mount that partition: c0d0p0:<letter or number>. The letter ranges from c to z, and the number starts at 1. To select the first FAT partition: c0d0p0:1 or c0d0p0:c will do the trick. To select the second partition: c0d0p0:2 or c0d0p0:d. Note it's always p0. Beware: the letter won't always match the Windows unit drive. If your first unit drive (C:\) is a NTFS, then D:\ is FAT and E:\ is FAT, the first FAT partition is D:\ … but to mount it in Solaris use c0d0p0:1 or c0d0p0:c !
This method is particularly useful to mount partitions located within extended partition, because there's no way to address the partition directly with a c0d0pN.
For automatic mounting, add an entry to /etc/vfstab:
/dev/dsk/c0d0p3 /dev/rdsk/c0d0p3 /mnt/win_e pcfs 3 yes
To mount a file as a filesystem, use lofiadm (loopback file driver). I haven't tried that yet, but see instructions here.
pfexec mount -f smbfs //host/share /mntpoint
To do so, the samba client service must be started:
pfexec svcadm enable svc:/network/smb/client:default
Plug it in, and then check where it has been mounted using df -h. My mobile phone is mounted in /rmdisk/noname .
Plug it in. It automatically mounts in /media/IOMEGA_HDD on my system.
My husband's installed a Solaris Zone containing Linux.
TODO Linux Zone