Американец William Hathaway подготовил скрипт для полного апдейта Indiana Preview через создание новых ZFS-разделов и соответствующее обновление vfstab и grub. Бесстрашные могут обновляться "наживую", а осторожные - использовать приведенный ниже скрипт для обновления установленных пакетов. Следует отметить, что общее количество пакетов на pkg.opensolaris.org значительно выросло с момента начала полноценной работы репозитория.
Итак, скрипт:
#!/bin/sh
# Author: William Hathaway
# Version History
# 20071210 0901 - Added pkg install SUNWpkgcmds
# 20071119 1712 - Initial creation
# 20071120 1000 - Fixed missing escape for $ in menu.lst
#
# This script will create a new set of ZFS file systems, updates vfstab and grub
# and uses pkg image-update to update the packages on the new file systems.
# Based off the steps from http://mail.opensolaris.org/pipermail/indiana-discuss/2007-November/003777.html
ZFS_CLONE_TAG=2
MENU_LST=/zpl_slim/boot/grub/menu.lst
TIMESTAMP=`date +%Y%m%d_%H%M`
echo "Creating clones labeled ${ZFS_CLONE_TAG} of zpl_slim/root and zpl_slim/opt"
zfs snapshot zpl_slim/root@${ZFS_CLONE_TAG}
zfs clone zpl_slim/root@${ZFS_CLONE_TAG} zpl_slim/root${ZFS_CLONE_TAG}
zfs set mountpoint=/mnt zpl_slim/root${ZFS_CLONE_TAG}
zfs snapshot zpl_slim/opt@${ZFS_CLONE_TAG}
zfs clone zpl_slim/opt@${ZFS_CLONE_TAG} zpl_slim/opt${ZFS_CLONE_TAG}
zfs set mountpoint=/mnt/opt zpl_slim/opt${ZFS_CLONE_TAG}
echo "Backing up ${MENU_LST} with timestamp ${TIMESTAMP}"
cp -p ${MENU_LST} ${MENU_LST}.${TIMESTAMP}
echo "Creating new ${MENU_LST} with extra entry"
cat > ${MENU_LST} <
splashimage /boot/grub/splash.xpm.gz
timeout 10
default 0
title OpenSolaris Developer Preview snv_75a X86 UPDATED
bootfs zpl_slim/root${ZFS_CLONE_TAG}
kernel\$ /platform/i86pc/kernel/\$ISADIR/unix -B \$ZFS-BOOTFS
module\$ /platform/i86pc/\$ISADIR/boot_archive
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title OpenSolaris Developer Preview snv_75a X86
kernel\$ /platform/i86pc/kernel/\$ISADIR/unix -B \$ZFS-BOOTFS
module\$ /platform/i86pc/\$ISADIR/boot_archive
#---------------------END BOOTADM--------------------
EOF
echo "Adding /opt mount to current /etc/vfstab"
echo "zpl_slim/opt - /opt zfs - yes -" >> /etc/vfstab
echo "Updating /mnt/etc/vfstab to use the cloned filesystems"
perl -pi -e "s|zpl_slim/root|zpl_slim/root${ZFS_CLONE_TAG}|" /mnt/etc/vfstab
echo "zpl_slim/opt${ZFS_CLONE_TAG} - /opt zfs - yes -" >> /mnt/etc/vfstab
echo "Refreshing pkg catalog"
pkg refresh
echo "Installing latest SUNWipkg"
pkg install SUNWipkg
echo "Installing latest pkg commands"
pkg install SUNWpkgcmds
echo "Refreshing pkg catalog on /mnt"
pkg -R /mnt refresh
echo "Upgrading image on /mnt"
pkg -R /mnt image-update
echo "Updating boot archive on /mnt"
bootadm update-archive -R /mnt
echo "Setting zfs mountpoints to legacy"
zfs set mountpoint=legacy zpl_slim/opt${ZFS_CLONE_TAG}
zfs set mountpoint=legacy zpl_slim/root${ZFS_CLONE_TAG}
zfs set mountpoint=legacy zpl_slim/opt