logging pre script to make debug easy - xcat2/xcat-core GitHub Wiki
Currently, the Pre-Installation script for redhat sles and early_command Installation script for ubuntu can't be logging to xcat.log file. Also as a new script getinstdisk was added to determine the install disk. It's necessary to logging the detail information to make debug easy.
This mini-design support the redhat6.7 redhat7 sles11 sles12 ubuntu14 ubuntu15 and the etc...
For redhat
With xcatdebugmode off, only the running result of script will be logged.
With xcatdebugmode on, the running procedure and running result both will be logged.
For sles
The running procedure and running result both will be logged whether xcatdebugmode on or off.
For ubuntu
With xcatdebugmode off, only the running result of script will be logged.
With xcatdebugmode on, the running procedure and running result both will be logged.
For redhat
When using a %pre script, we can simply log the output to a file.
%pre
{
echo "Running Kickstart Pre-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/pre.rh#
} >>/tmp/pre-install.log 2>&1
After Anaconda chrooted to the newly-built filesystem, we can use %include to include the pre-install.log.
%post
mkdir -p /var/log/xcat/
{
cat >> /var/log/xcat/xcat.log << "EOF"
%include /tmp/pre-install.log
EOF
echo "Running Kickstart Post-Installation script..."
#INCLUDE:#ENV:XCATROOT#/share/xcat/install/scripts/post.rh#
} >>/var/log/xcat/xcat.log 2>&1
For sles
When using Pre-Install Script, we can simply log the output to a file.
<pre-scripts config:type="list">
<script>
<filename>foo.sh</filename>
<interpreter>shell</interpreter>
<source>
<![CDATA[
{
...
} >>/tmp/pre-install.log 2>&1
]]>
</source>
</script>
</pre-scripts>
When execute chroot scripts before the installation chroots into the installed system, we can append the pre-install.log to xcat.log.
<chroot-scripts config:type="list">
<script>
<filename>boot.sh</filename>
<interpreter>shell</interpreter>
<source>
<![CDATA[
mkdir -p /mnt/var/log/xcat/
{
cat /tmp/pre-install.log >> /mnt/var/log/xcat/xcat.log
echo "Running AutoYaST Chroot-Installation script..."
...
} >>/mnt/var/log/xcat/xcat.log 2>&1
]]>
</source>
</script>
</chroot-scripts>
For ubuntu
When using d-i preseed/early_command string ... command, we can simply log the output to a file.
d-i preseed/early_command string wget http://`cat /tmp/xcatserver`/install/autoinst/#HOSTNAME#.pre; \
chmod u+x #HOSTNAME#.pre; \
{ \
echo "Running preseeding early_command Installation script..."; \
./#HOSTNAME#.pre; \
} >>/tmp/pre-install.log 2>&1; \
And log the getinstdisk script output.
d-i partman/early_command string \
{ \
#INCLUDE_GET_FIRST_DISK_SCRIPT# \
} >>/tmp/pre-install.log 2>&1; \
debconf-set partman-auto/disk "$(cat /tmp/install_disk)"
When execute d-i preseed/late_command string ... command before the install finishes, there is still a usable /target directory. We can append the pre-install.log to xcat.log.
d-i preseed/late_command string wget http://`cat /tmp/xcatserver`/install/autoinst/#HOSTNAME#.post; \
chmod u+x #HOSTNAME#.post; \
cp ./#HOSTNAME#.post /target/root/post.script; \
mount -o bind /proc /target/proc -t proc; \
mount -o bind /dev /target/dev; \
mount -o bind /dev/pts /target/dev/pts -t devpts; \
mount -o bind /sys /target/sys; \
mkdir -p /target/var/log/xcat/; \
{ \
cat /tmp/pre-install.log >> /target/var/log/xcat/xcat.log; \
echo "Running preseeding late_command Installation script..."; \
chroot /target /root/post.script; \
} >>/target/var/log/xcat/xcat.log 2>&1; \