################################################################ ### Installing the Packages ################################################################ PKG_IMG_PATH=/media/mint/DATA/build/pkg_image BA_BUILD=/media/mint/DATA/build/boot_archive BA_BUILD64=/media/mint/DATA/build/boot_archive-amd64 BA_BUILD32=/media/mint/DATA/build/boot_archive-x86 TMP_DIR=/media/mint/DATA/build/tmp MEDIA_DIR=/media/mint/DATA/build/media mkdir -p $PKG_IMG_PATH mkdir -p $BA_BUILD mkdir -p $BA_BUILD64 mkdir -p $BA_BUILD32 mkdir -p $TMP_DIR mkdir -p $MEDIA_DIR # PKG_REPO=http://pkg.openindiana.org/dev PKG_REPO=http://pkg.openindiana.org/hipster # Image Area Creation pkg image-create -F -p openindiana.org=$PKG_REPO $PKG_IMG_PATH # Settings Repository pkg -R $PKG_IMG_PATH set-property flush-content-cache-on-success True TEXT_PKGS='pkg:/entire pkg:/server_install pkg:/system/install/text-install pkg:/system/install/media/internal' DEL_PKGS='pkg:/server_install' # Verifying the contents of the IPS repository pkg -R $PKG_IMG_PATH list -a $TEXT_PKGS # Installing the Designated Packages pkg -R $PKG_IMG_PATH install --no-index --accept $TEXT_PKGS # Uninstalling the Designated Packages pkg -R $PKG_IMG_PATH uninstall --no-index $DEL_PKGS # Setting post-install preferred publisher pkg -R $PKG_IMG_PATH set-publisher -P -O $PKG_REPO --no-refresh openindiana.org pkg -R $PKG_IMG_PATH set-publisher -O $PKG_REPO --no-refresh openindiana.org pkg -R $PKG_IMG_PATH purge-history # Create image_info cd $PKG_IMG_PATH python > /dev/null << EOF from osol_install.install_utils import dir_size image_size = int(round((dir_size(".") / 1024), 0)) image_file = open(".image_info", "w+") image_file.write("IMAGE_SIZE=" + str(image_size) + "\n") image_file.close() EOF ################################################################ ### Settings Root Password ################################################################ # root_passwd_text = openindiana cd $PKG_IMG_PATH python > /dev/null << EOF from osol_install.install_utils import encrypt_password from pkg.cfgfiles import PasswordFile root_passwd_text = "openindiana" pkg_img_path = "." encrypted_root_passwd = encrypt_password(root_passwd_text, alt_root=pkg_img_path) pfile = PasswordFile(pkg_img_path) root_entry = pfile.getuser("root") root_entry["password"] = encrypted_root_passwd pfile.setvalue(root_entry) pfile.writefile() EOF ################################################################ ### Text mode Image area Modifications ################################################################ mkdir -p $PKG_IMG_PATH/save/etc cp -p $PKG_IMG_PATH/etc/system $PKG_IMG_PATH/save/etc/ cat <>$PKG_IMG_PATH/etc/system set zfs:zfs_arc_max=0x4002000 set zfs:zfs_vdev_cache_size=0 EOF chroot $PKG_IMG_PATH /usr/bin/sh /lib/svc/method/svc-cacert start ################################################################ ### Boot archive initialization ################################################################ cd $PKG_IMG_PATH find ./kernel | cpio -pdum $BA_BUILD find ./boot | cpio -pdum $BA_BUILD find ./platform | cpio -pdum $BA_BUILD find ./system | cpio -pdum $BA_BUILD find ./lib | cpio -pdum $BA_BUILD find ./sbin | cpio -pdum $BA_BUILD find ./dev | cpio -pdum $BA_BUILD find ./devices | cpio -pdum $BA_BUILD find ./usr/lib/devfsadm/linkmod | cpio -pdum $BA_BUILD find ./root | cpio -pdum $BA_BUILD find ./jack | cpio -pdum $BA_BUILD find ./var/svc/manifest | cpio -pdum $BA_BUILD find ./var/svc/profile | cpio -pdum $BA_BUILD find ./var/sadm | grep -v var/sadm/pkg | cpio -pdum $BA_BUILD find ./etc | grep -v etc/gconf | grep -v etc/brltty | grep -v etc/gtk-2.0 | grep -v etc/notices | cpio -pdum $BA_BUILD find ./var ! -type f | cpio -pdum $BA_BUILD find ./etc ! -type f | cpio -pdum $BA_BUILD find ./usr/bin/nawk | cpio -pdum $BA_BUILD find ./usr/bin/mkdir | cpio -pdum $BA_BUILD find ./usr/bin/cp | cpio -pdum $BA_BUILD find ./usr/bin/sed | cpio -pdum $BA_BUILD find ./usr/bin/sort | cpio -pdum $BA_BUILD find ./usr/bin/amd64/sort | cpio -pdum $BA_BUILD find ./usr/bin/i86/sort | cpio -pdum $BA_BUILD find ./usr/bin/pkill | cpio -pdum $BA_BUILD find ./usr/sbin/svcadm | cpio -pdum $BA_BUILD find ./usr/sbin/svccfg | cpio -pdum $BA_BUILD find ./usr/sbin/prtconf | cpio -pdum $BA_BUILD find ./usr/sbin/amd64/prtconf | cpio -pdum $BA_BUILD find ./usr/sbin/i86/prtconf | cpio -pdum $BA_BUILD find ./usr/sbin/nwamcfg | cpio -pdum $BA_BUILD find ./usr/sbin/nwamadm | cpio -pdum $BA_BUILD find ./usr/lib/libsmbios.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libtecla.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libl.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libexacct.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libpool.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libidmap.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libldap.so.5 | cpio -pdum $BA_BUILD find ./usr/lib/libldap.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libadutils.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libsasl.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/mps/libnspr4.so | cpio -pdum $BA_BUILD find ./usr/lib/mps/libplc4.so | cpio -pdum $BA_BUILD find ./usr/lib/mps/libnss3.so | cpio -pdum $BA_BUILD find ./usr/lib/mps/libssl3.so | cpio -pdum $BA_BUILD find ./usr/lib/mps/libnssutil3.so | cpio -pdum $BA_BUILD find ./usr/lib/mps/libplds4.so | cpio -pdum $BA_BUILD find ./usr/sbin/pmadm | cpio -pdum $BA_BUILD find ./usr/sbin/lofiadm | cpio -pdum $BA_BUILD find ./usr/sbin/devfsadm | cpio -pdum $BA_BUILD find ./usr/sbin/modload | cpio -pdum $BA_BUILD find ./usr/sbin/i86/modload | cpio -pdum $BA_BUILD find ./usr/sbin/mount | cpio -pdum $BA_BUILD find ./usr/sbin/hostconfig | cpio -pdum $BA_BUILD find ./usr/sbin/chroot | cpio -pdum $BA_BUILD find ./usr/sbin/syslogd | cpio -pdum $BA_BUILD find ./usr/bin/coreadm | cpio -pdum $BA_BUILD find ./usr/bin/bash | cpio -pdum $BA_BUILD find ./usr/bin/ksh | cpio -pdum $BA_BUILD find ./usr/bin/cat | cpio -pdum $BA_BUILD find ./usr/bin/echo | cpio -pdum $BA_BUILD find ./usr/bin/false | cpio -pdum $BA_BUILD find ./usr/bin/grep | cpio -pdum $BA_BUILD find ./usr/bin/ls | cpio -pdum $BA_BUILD find ./usr/bin/rm | cpio -pdum $BA_BUILD find ./usr/bin/svcprop | cpio -pdum $BA_BUILD find ./usr/bin/true | cpio -pdum $BA_BUILD find ./usr/bin/cd | cpio -pdum $BA_BUILD find ./usr/bin/test | cpio -pdum $BA_BUILD find ./usr/bin/sleep | cpio -pdum $BA_BUILD find ./usr/bin/expr | cpio -pdum $BA_BUILD find ./usr/bin/vi | cpio -pdum $BA_BUILD find ./usr/has/bin/vi | cpio -pdum $BA_BUILD find ./usr/lib/fs/hsfs/fstyp | cpio -pdum $BA_BUILD find ./usr/lib/fs/hsfs/fstyp.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/fs/hsfs/mount | cpio -pdum $BA_BUILD find ./usr/lib/fs/ufs/fstyp | cpio -pdum $BA_BUILD find ./usr/lib/fs/ufs/fstyp.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/fs/ufs/mount | cpio -pdum $BA_BUILD find ./usr/lib/libfstyp.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/platexec | cpio -pdum $BA_BUILD find ./usr/lib/devfsadm/devfsadmd | cpio -pdum $BA_BUILD find ./usr/lib/libm.so.2 | cpio -pdum $BA_BUILD find ./usr/lib/libm.so | cpio -pdum $BA_BUILD find ./usr/lib/libfstyp.so | cpio -pdum $BA_BUILD find ./usr/lib/libz.so | cpio -pdum $BA_BUILD find ./usr/lib/libz.so.1 | cpio -pdum $BA_BUILD find ./usr/bin/i86/ksh93 | cpio -pdum $BA_BUILD find ./usr/lib/isaexec | cpio -pdum $BA_BUILD find ./usr/lib/libast.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libcmd.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libdll.so.1 | cpio -pdum $BA_BUILD find ./usr/lib/libshell.so.1 | cpio -pdum $BA_BUILD find ./usr/share/lib/xml/dtd/service_bundle.dtd.1 | cpio -pdum $BA_BUILD find ./var/sadm/install/admin/default | cpio -pdum $BA_BUILD find ./var/sadm/system/admin/default_java | cpio -pdum $BA_BUILD find ./var/sadm/install/contents | cpio -pdum $BA_BUILD find ./var/adm/utmpx | cpio -pdum $BA_BUILD find ./var/adm/wtmpx | cpio -pdum $BA_BUILD find ./var/adm/aculog | cpio -pdum $BA_BUILD find ./var/lib/postrun/postrun-runq | cpio -pdum $BA_BUILD find ./var/lib/postrun/postrun | cpio -pdum $BA_BUILD find ./var/log/postrun.log | cpio -pdum $BA_BUILD find ./var/log/authlog | cpio -pdum $BA_BUILD find ./var/log/syslog | cpio -pdum $BA_BUILD find ./var/saf/zsmon/log | cpio -pdum $BA_BUILD find ./var/spool/cron/crontabs/adm | cpio -pdum $BA_BUILD find ./var/spool/cron/crontabs/root | cpio -pdum $BA_BUILD find ./var/nis/NIS+LDAPmapping.template | cpio -pdum $BA_BUILD find ./var/yp/aliases | cpio -pdum $BA_BUILD find ./var/yp/nicknames | cpio -pdum $BA_BUILD cd $BA_BUILD mkdir tmp && chmod -R 01777 tmp mkdir proc && chmod -R 0555 proc mkdir mnt && chmod -R 0755 mnt ################################################################ ### Boot archive configuration ################################################################ # Configure devices $BA_BUILD/usr/sbin/devfsadm -r $BA_BUILD touch $BA_BUILD/reconfigure cat << \COREADM_CONF_EOF > $BA_BUILD/etc/coreadm.conf # # coreadm.conf # # Parameters for system core file configuration. # Do NOT edit this file by hand -- use coreadm(1) instead. # COREADM_GLOB_PATTERN=/tmp/core COREADM_GLOB_CONTENT=default COREADM_INIT_PATTERN=core COREADM_INIT_CONTENT=default COREADM_GLOB_ENABLED=no COREADM_PROC_ENABLED=yes COREADM_GLOB_SETID_ENABLED=no COREADM_PROC_SETID_ENABLED=no COREADM_GLOB_LOG_ENABLED=no COREADM_CONF_EOF cat << \RTC_CONFIG_EOF > $BA_BUILD/etc/rtc_config # # This file (/etc/rtc_config) contains information used to manage the # x86 real time clock hardware. The hardware is kept in # the machine's local time for compatibility with other x86 # operating systems. This file is read by the kernel at # boot time. It is set and updated by the /usr/sbin/rtc # command. The 'zone_info' field designates the local # time zone. The 'zone_lag' field indicates the number # of seconds between local time and Greenwich Mean Time. # zone_info=GMT zone_lag=0 RTC_CONFIG_EOF printf "/^TZ=.*/\ns/^TZ=.*/TZ=GMT/\nw" | ed -s $BA_BUILD/etc/default/init > /dev/null echo "openindiana" > $BA_BUILD/etc/nodename sed "s/127.*$/& ${HOSTNAME}/" $BA_BUILD/etc/inet/hosts > $TMP_DIR/hosts.mod cp $TMP_DIR/hosts.mod $BA_BUILD/etc/inet/hosts rm $TMP_DIR/hosts.mod # Preloading SMF repository /usr/share/distro_const/mkrepo $BA_BUILD $PKG_IMG_PATH export SVCCFG_REPOSITORY=$BA_BUILD/etc/svc/repository.db export LD_LIBRARY_PATH=$PKG_IMG_PATH/lib:$PKG_IMG_PATH/usr/lib:$LD_LIBRARY_PATH export SVCCFG_DTD=$BA_BUILD/usr/share/lib/xml/dtd/service_bundle.dtd.1 $PKG_IMG_PATH/usr/sbin/svccfg apply $PKG_IMG_PATH//etc/svc/profile/generic_limited_net.xml export SVCCFG_DTD=//usr/share/lib/xml/dtd/service_bundle.dtd.1 $PKG_IMG_PATH/usr/sbin/svccfg apply /usr/share/distro_const/generic_live.xml export SVCCFG_DTD=//usr/share/lib/xml/dtd/service_bundle.dtd.1 $PKG_IMG_PATH/usr/sbin/svccfg apply /usr/share/distro_const/text_install/text_live.xml export SVCCFG_DTD=$BA_BUILD/usr/share/lib/xml/dtd/service_bundle.dtd.1 $PKG_IMG_PATH/usr/sbin/svccfg apply $PKG_IMG_PATH/etc/svc/profile/ns_files.xml cd $BA_BUILD ln -s ./usr/bin mkdir mnt/misc chmod 0755 mnt/misc mkdir mnt/pkg chmod 0755 mnt/pkg VOLSETID=$(uuidgen) echo $VOLSETID > .volsetid chmod 0444 .volsetid chown root:root .volsetid touch .textinstall mkdir .cdrom chmod 0755 .cdrom # create a symlink in the boot archive to the opt directory in the misc archive create_sym_links() { PKG_IMG_FILELIST=$1 BOOT_ARCHIVE_FILELIST=$2 MNT_PT=$3 PROC_FILELIST=${TMP_DIR}/plist rm -f ${PROC_FILELIST} $TOUCH ${PROC_FILELIST} while read -r pi_file do /usr/xpg4/bin/grep "^${pi_file}\$" ${PROC_FILELIST} > /dev/null [ $? -eq 0 ] && continue /usr/xpg4/bin/grep "^${pi_file}\$" ${BOOT_ARCHIVE_FILELIST} > /dev/null [ $? -eq 0 ] && continue dir=$(dirname "$pi_file") if [ ! -d $dir ]; then mkdir -p $dir echo $dir >> ${BOOT_ARCHIVE_FILELIST} fi [ -d "${BOOT_ARCHIVE_FILELIST}/${pi_file}" ] && pi_file="${pi_file}"/ ln -sf ${MNT_PT}/"${pi_file}" "${pi_file}" echo "$pi_file" >> ${PROC_FILELIST} done < ${PKG_IMG_FILELIST} } ln -s /mnt/misc/opt opt find * > $TMP_DIR/boot_archive_filelist (cd $PKG_IMG_PATH; find etc var) > $TMP_DIR/mlst create_sym_links $TMP_DIR/mlst $TMP_DIR/boot_archive_filelist "/mnt/misc" ################################################################ ### Boot archive archiving (64-bit) ################################################################ cd $BA_BUILD find . | cpio -pmud $BA_BUILD64 cd $BA_BUILD64 find kernel platform -type f -print | /usr/xpg4/bin/grep -v conf$ | /usr/xpg4/bin/grep -v /amd64/ | xargs rm -f ## Creating ufs filesystem BA_SIZE=$(gdu -sb $BA_BUILD64 | awk '{print $1}') OVERHEAD=$(expr $BA_SIZE / 10 \* 2) C1=$(expr $BA_SIZE + $OVERHEAD) C2=$(expr $C1 / 512 \* 512) BA_IMAGE_SIZE=$(expr $C2 + 26424320) mkfile -n $BA_IMAGE_SIZE $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive DEVS=$(lofiadm -a $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive) RDEVS="${DEVS/lofi/rlofi}" newfs $RDEVS $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive.hash 7za a -tgzip -mx=9 $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive.gz $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive rm $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive mv $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive.gz $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive chmod 0644 $PKG_IMG_PATH/platform/i86pc/amd64/boot_archive ################################################################ ### Boot archive archiving (32-bit) ################################################################ cd $BA_BUILD find . | cpio -pmud $BA_BUILD32 cd $BA_BUILD32 find kernel platform lib -name amd64 | xargs rm -rf ## Creating ufs filesystem BA_SIZE=$(gdu -sb $BA_BUILD32 | awk '{print $1}') OVERHEAD=$(expr $BA_SIZE / 10 \* 2) C1=$(expr $BA_SIZE + $OVERHEAD) C2=$(expr $C1 / 512 \* 512) BA_IMAGE_SIZE=$(expr $C2 + 26424320) mkfile -n $BA_IMAGE_SIZE $PKG_IMG_PATH/platform/i86pc/boot_archive DEVS=$(lofiadm -a $PKG_IMG_PATH/platform/i86pc/boot_archive) RDEVS="${DEVS/lofi/rlofi}" newfs $RDEVS $PKG_IMG_PATH/platform/i86pc/boot_archive.hash 7za a -tgzip -mx=9 $PKG_IMG_PATH/platform/i86pc/boot_archive.gz $PKG_IMG_PATH/platform/i86pc/boot_archive rm $PKG_IMG_PATH/platform/i86pc/boot_archive mv $PKG_IMG_PATH/platform/i86pc/boot_archive.gz $PKG_IMG_PATH/platform/i86pc/boot_archive chmod 0644 $PKG_IMG_PATH/platform/i86pc/boot_archive ################################################################ ### Post boot archive image area custom modification ################################################################ # platform only needs to contain the kernel and boot_archive. cd $PKG_IMG_PATH/platform find . -type f -a ! -name unix -a ! -name boot_archive -a ! -name boot_archive.hash | xargs rm -f # GRUB does not understand symlinks, so make copies cd $PKG_IMG_PATH cp -r $PKG_IMG_PATH/platform $PKG_IMG_PATH/boot/ ################################################################ ## Create solaris.zlib solarismisc.zlib ################################################################ cp $BA_BUILD/.volsetid $PKG_IMG_PATH rm $PKG_IMG_PATH/etc/.pwd.lock # Generating usr filesystem image cd $PKG_IMG_PATH rm -rf sbin kernel lib SORT_OPTION='/usr/share/distro_const/text_install/text_install_x86_iso.sort' mkisofs -o solaris.zlib -sort $SORT_OPTION -quiet -N -l -R \ -U -allow-multidot -no-iso-translate -cache-inodes \ -d -D -V "compress" usr LD_LIBRARY_PATH=$PKG_IMG_PATH/usr/lib /usr/bin/time $PKG_IMG_PATH/usr/sbin/lofiadm \ -C gzip $PKG_IMG_PATH/solaris.zlib >/dev/null 2>&1 # Generating misc filesystem image mkdir -p miscdirs mv opt miscdirs/ mv etc miscdirs/ mv var miscdirs/ mkisofs -o solarismisc.zlib -N -l -R -U -allow-multidot \ -no-iso-translate \ -quiet -cache-inodes -d -D -V "compress" miscdirs LD_LIBRARY_PATH=$PKG_IMG_PATH/usr/lib /usr/bin/time $PKG_IMG_PATH/usr/sbin/lofiadm \ -C lzma $PKG_IMG_PATH/solarismisc.zlib >/dev/null 2>&1 rm -rf $PKG_IMG_PATH/usr rm -rf $PKG_IMG_PATH/miscdirs ################################################################ ## Create ISO image ################################################################ cd $PKG_IMG_PATH # create image content file find . ! \( -name '*.zlib' -o -name .image_info -o -name .livecd-cdrom-content -o -name boot_archive \) -print > .livecd-cdrom-content # looder config cp /usr/share/distro_const/loader/loader.rc.local $PKG_IMG_PATH/boot/ # create efi bootblock dd if=/dev/zero count=4400 bs=1024 of="$PKG_IMG_PATH/boot/efiboot.img" 2> /dev/null LOFIDEV=$(lofiadm -a $PKG_IMG_PATH/boot/efiboot.img) RLOFIDEV="/dev/rlofi/${LOFIDEV##/*/}" mkfs -F pcfs -o nofdisk,size=8800 $RLOFIDEV < /dev/null MDIR=$(/bin/mktemp -d) mount -F pcfs $LOFIDEV $MDIR mkdir -p $MDIR/efi/boot cp $PKG_IMG_PATH/boot/loader.efi $MDIR/efi/boot/bootx64.efi umount $MDIR rmdir $MDIR lofiadm -d $LOFIDEV VOLSETID=$(cat .volsetid) DIST_ISO="OI-hipster-text-$(date +%Y%m%d).iso" DISTRO_NAME=OpenIndiana_Text_X86 cd $PKG_IMG_PATH mkisofs -o $MEDIA_DIR/$DIST_ISO -c .catalog -N -l -R -U \ -allow-multidot -no-iso-translate -cache-inodes -d -D \ -volset "$VOLSETID" -V "$DISTRO_NAME" \ -eltorito-boot boot/cdboot -no-emul-boot -boot-info-table \ -eltorito-alt-boot \ -eltorito-platform efi \ -eltorito-boot boot/efiboot.img -no-emul-boot \ .