Quote: "The derived manifest script can run commands to read system attributes. AI runs the script as role aiuser. The aiuser role has all the privileges of a non-privileged user plus the following additional privileges: solaris.network.autoconf.read, solaris.smf.read.*
The aiuser role is non-privileged except that it can read more information from the system than other non-privileged users. The aiuser role cannot change the system."
This is a problem for me since I want to install Solaris on desktop systems which has windows on and may even have Linux installed on the same disk. So, I need a script which examines the disk and then create the Solaris partition in the right location.
This is can easily be found out buy running the "fdisk" command which will show the type of partitions on the disk (7=IFS: NTFS, 191=Solars2)
# fdisk -W - /dev/rdsk/c1t0d0p0So, to get round this I need to give the aiuser permission to run the fdisk command, so I need to alter the solaris boot system which is download as part of the network boot. Solutions:
* /dev/rdsk/c1t0d0p0 default fdisk table
.....
* Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect
7 0 32 33 0 254 63 1023 2048 314572800
191 128 254 63 1023 254 63 1023 314584830 125821080
- Add aiuser to /etc/sudoers - Unable to alter initial boot kernel "kernel/amd64/unix"
- Add more permissions to aiuser - Unable to find the right permission to give them disk access, also not sure how to alter the kernel/amd64/unix
- Alter the permission of "/usr/sbin/fdisk" - Solution provided. After the above kernel is boot into it mounts solaris.zlib (/usr) and "solarismisc.zlib"
- extract "solaris.zlib"
- chmod a+s fdisk
- re-build miniboot "solaris.zlib"
Extract "solaris.zlib"
These are the commands I used to extract the kernel, alter the parts I need and then recreate it.# mount -F hsfs /etc/netboot/solaris11_2_3_4_0-i386/solaris.zlib /mnt
# cd /mnt
# find . -depth -print | cpio -pdm /var/tmp/solaris.zlib
# umount /mnt
# chmod a+s /var/tmp/solaris.zlib/sbin/fdisk
# mkisofs -o /tmp/solaris.zlib -quiet -N -l -R -U -allow-multidot -no-iso-translate -cache-inodes -d -D -V "compress" /var/tmp/solaris.zlib
# cd /etc/netboot/solaris11_2_3_4_0-i386/
# cp -ip solaris.zlib solaris.zlib_orig
# cp /tmp/solaris.zlib /etc/netboot/solaris11_2_3_4_0-i386/solaris.zlib
Then it is just a mater of modifying the derived manifest script to include the fdisk code: .i.e. This section would slot into my previous version.
if [[ $SI_DISKSIZE_1 -gt "256000" ]] ; then typeset -i PARTN_SIZE=61440 mydisk=$SI_DISKNAME_1"p0" count=0 create=0 for part in $(fdisk -W - $mydisk| egrep "^ [1-9]"| awk ' { print $1 } ') do count=$((count + 1)) if [ $part = "191" ]; then # Solaris Partition exists so will overwrite create=$count else # Keep existing partitions /usr/bin/aimanifest add \ /auto_install/ai_instance/target/disk[disk_name@name=\"$SI_DISKNAME_1\"]/partition@name $count /usr/bin/aimanifest set \ /auto_install/ai_instance/target/disk/disk_name@name_type ctd /usr/bin/aimanifest set \ /auto_install/ai_instance/target/disk/partition[@name=$count]@action preserve fi done # Check if any partitions found if [ $count = "0" ]; then print -u2 "fdisk could not be run or no existing partitions" exit $SCRIPT_FAILURE fi # If no Solaris partition found then create if [ $create = "0" ]; then # count equals current partition so we want next partition to be Solaris create=$((count + 1)) fi /usr/bin/aimanifest add \ /auto_install/ai_instance/target/disk[disk_name@name=\"$SI_DISKNAME_1\"]/partition@name $create /usr/bin/aimanifest add \ /auto_install/ai_instance/target/disk/partition[@name=$create]/size@val \ ${PARTN_SIZE}mb /usr/bin/aimanifest set \ /auto_install/ai_instance/target/disk/partition[@name=$create]@action create else print -u2 "System has too smaller disk. $SI_DISKSIZE_1" exit $SCRIPT_FAILURE fi
No comments:
Post a Comment