SAWADA Keiji
card_capto****@users*****
2006年 2月 27日 (月) 02:21:21 JST
Index: dlkit2/sv.setup diff -u dlkit2/sv.setup:1.9 dlkit2/sv.setup:1.10 --- dlkit2/sv.setup:1.9 Mon Feb 27 00:39:10 2006 +++ dlkit2/sv.setup Mon Feb 27 02:21:20 2006 @@ -1,5 +1,5 @@ #!/bin/sh -# sv.setup - setup script starter for server-side +# sv.setup - 1st-stage setup script for server-side # Copyright (c) 2005-2006 SAWADA Keiji <card_capto****@users*****> # # This program is free software; you can redistribute it and/or modify @@ -64,9 +64,13 @@ ) | sh } +copy_hier() { + # copy_hier src dst + src=${1:?}; dst=${2:?} + (cd "$src" && tar cpf - .) | (cd "$dst" && tar xpf -) +} #---------------------------------------------------------------------- -# remove work files remove_work_files() { rm -f .v.* rm -rf $trandir @@ -336,9 +340,9 @@ #---------------------------------------------------------------------- check_tftpboot_newboot() { echon "Checking TFTP accessibility... " - set +e + set +e tftp=`typep tftp` - set -e + set -e #tftp=/bin/true # debug if [ -x "$tftp" ]; then echo "get /boot/grub/pxegrub .v.pxegrub" | $tftp $SV_NAME > /dev/null 2>&1 @@ -452,16 +456,30 @@ backup_distfile $SV_INSTROOT/etc/svc/repository.db rm -f $SV_INSTROOT/etc/svc/repository-boot* + echon ", rtc_config" + rm -f $SV_INSTROOT/etc/rtc_config + echo zone_info=Japan > $SV_INSTROOT/etc/rtc_config + echo zone_lag=-32400 >> $SV_INSTROOT/etc/rtc_config + + backup_distfile $SV_INSTROOT/.tmp_proto/root/boot/solaris/bootenv.rc + backup_distfile $SV_INSTROOT/boot/solaris/bootenv.rc + + echon ", bootenv.rc" + rm -f $SV_INSTROOT/boot/solaris/bootenv.rc + cp -p $SV_INSTROOT/.tmp_proto/root/boot/solaris/bootenv.rc \ + $SV_INSTROOT/boot/solaris/bootenv.rc + echon ", md.conf" + rm -f $SV_INSTROOT/kernel/drv/md.conf + cp -p $SV_INSTROOT/.tmp_proto/root/kernel/drv/md.conf \ + $SV_INSTROOT/kernel/drv/md.conf + echon ", sbpro.conf" + rm -f $SV_INSTROOT/kernel/drv/sbpro.conf + cp -p $SV_INSTROOT/platform/i86pc/kernel/drv/sbpro.conf \ + $SV_INSTROOT/kernel/drv/sbpro.conf + if [ ! -z "$CL_KEYBOARD" ]; then echon ", keyboard type[$CL_KEYBOARD]" - backup_distfile $SV_INSTROOT/.tmp_proto/root/boot/solaris/bootenv.rc - backup_distfile $SV_INSTROOT/boot/solaris/bootenv.rc - (cat $SV_INSTROOT/.tmp_proto/root/boot/solaris/bootenv.rc.dist - echo "setprop kbd-type '$CL_KEYBOARD'" - ) > $SV_INSTROOT/.tmp_proto/root/boot/solaris/bootenv.rc - (cat $SV_INSTROOT/boot/solaris/bootenv.rc.dist - echo "setprop kbd-type '$CL_KEYBOARD'" - ) > $SV_INSTROOT/boot/solaris/bootenv.rc + echo "setprop kbd-type '$CL_KEYBOARD'" >> $SV_INSTROOT/boot/solaris/bootenv.rc fi if [ ! -z "$CL_NFS_CLIENT_VERSION" ]; then @@ -628,84 +646,71 @@ #---------------------------------------------------------------------- create_mininfsroot() { -OSTYPE=`uname -s` + OSTYPE=`uname -s` -if [ ! -d $SV_INSTROOT ]; then + if [ ! -d $SV_INSTROOT ]; then tempdir=/tmp/tmp.$$ rm -rf $tempdir mkdir $tempdir mkdir $tempdir/pnt mkdir $SV_INSTROOT + echon "Extracting original miniroot-image to $SV_INSTROOT ..." gzip -dc $SV_DVDDIR/boot/x86.miniroot > $tempdir/miniroot.extd case "$OSTYPE" in - SunOS) + SunOS) DEVICE=`lofiadm -a $tempdir/miniroot.extd` mount -F ufs -r $DEVICE $tempdir/pnt - # XXX TODO lofiadm -d + copy_hier $tempdir/pnt $SV_INSTROOT + umount $tempdir/pnt + lofiadm -d $DEVICE ;; - Linux) + Linux) mount -o loop -t ufs $tempdir/miniroot.extd $tempdir/pnt + copy_hier $tempdir/pnt $SV_INSTROOT + umount $tempdir/pnt ;; - *) + *) echo "Not inplemented yet" ;; esac - (cd $tempdir/pnt; tar cpf - .)|(cd $SV_INSTROOT; tar xpf -) - umount $tempdir/pnt rm -rf $tempdir echo "done" -fi + fi -if [ ! -d $SV_INSTROOT/a ]; then + if [ ! -d $SV_INSTROOT/a ]; then perror "$SV_INSTROOT/a must be there" -fi - + fi -rsync -au $SV_INSTROOT/.tmp_proto/root/etc $SV_INSTROOT/tmp/root -echon "Creating default rtc_config for boot_archive..." -rm -f $SV_INSTROOT/etc/rtc_config -cat <<EOF>$SV_INSTROOT/etc/rtc_config -zone_info=Japan -zone_lag=-32400 -EOF -echo "done" -rm -f $SV_INSTROOT/boot/solaris/bootenv.rc -cp -p $SV_INSTROOT/.tmp_proto/root/boot/solaris/bootenv.rc $SV_INSTROOT/boot/solaris/bootenv.rc -rm -f $SV_INSTROOT/kernel/drv/md.conf -cp -p $SV_INSTROOT/.tmp_proto/root/kernel/drv/md.conf $SV_INSTROOT/kernel/drv/md.conf -rm -f $SV_INSTROOT/kernel/drv/sbpro.conf -cp -p $SV_INSTROOT/platform/i86pc/kernel/drv/sbpro.conf $SV_INSTROOT/kernel/drv/sbpro.conf + copy_hier $SV_INSTROOT/.tmp_proto/root/etc $SV_INSTROOT/tmp/root/etc } #---------------------------------------------------------------------- create_boot_archive() { -OSTYPE=`uname -s` -tempdir=/tmp/tmp.$$ -case "$OSTYPE" in -SunOS) - ;; -Linux) - rm -rf $tempdir - mkdir $tempdir - pushd $tempdir - files="prtconf lockfs" - for file in $files; do - touch $file; chmod +x $file - done - popd - PATH=${PATH}:$tempdir - export PATH - ;; -*) - echo "Not inplemented yet" - ;; -esac -echo "[creating $SV_PXEBOOTDIR/$BOOT_ARCHIVE_FILE ...]" -${SUN_SCRIPT} ${ALT_ROOT} -rm -rf $tempdir -cp -pf ${ALT_ROOT}/${BOOT_ARCHIVE_SRC} $SV_PXEBOOTDIR/$BOOT_ARCHIVE_FILE -echo "done" + OSTYPE=`uname -s` + tempdir=/tmp/tmp.$$ + case "$OSTYPE" in + SunOS) + ;; + Linux) + rm -rf $tempdir + mkdir $tempdir + files="prtconf lockfs" + for file in $files; do + touch $tempdir/$file; chmod +x $tempdir/$file + done + PATH=${PATH}:$tempdir + export PATH + ;; + *) + echo "Not inplemented yet" + ;; + esac + + echo "Creating $SV_PXEBOOTDIR/$BOOT_ARCHIVE_FILE ..." + ${SUN_SCRIPT} ${ALT_ROOT} + rm -rf $tempdir + cp -pf ${ALT_ROOT}/${BOOT_ARCHIVE_SRC} $SV_PXEBOOTDIR/$BOOT_ARCHIVE_FILE } #---------------------------------------------------------------------- @@ -716,7 +721,8 @@ remove_work_files check_install_type if [ "$INSTALL_TYPE" = "diskless" -a "$BOOT_TYPE" = "newboot" ]; then - ( echo "$SV_PKGDIR"|grep -v "/Tools/Boot">/dev/null ) && create_mininfsroot + # TODO: remove next line + (echo "$SV_INSTROOT" | grep -v "/Tools/Boot" > /dev/null) && create_mininfsroot fi prepare_base_dirs $use_dvddir && enumerate_packages @@ -731,7 +737,8 @@ [ $INSTALL_TYPE = diskless ] && prepare_postinstall_env [ $INSTALL_TYPE = offline ] && prepare_postinstall_env if [ "$INSTALL_TYPE" = "diskless" -a "$BOOT_TYPE" = "newboot" ]; then - ( echo "$SV_PKGDIR"|grep -v "/Tools/Boot">/dev/null ) && create_boot_archive + # TODO: remove next line + (echo "$SV_INSTROOT" | grep -v "/Tools/Boot" > /dev/null) && create_boot_archive fi transfer_installation_script finalize_1st_stage