From: Bit Twister on
On Sun, 10 Jan 2010 11:13:20 GMT, Mike Jones wrote:

> Not going to work as I'm including stuff that doesn't appear on the
> default install DVD.

Yep, been there, done that, have the T-shirt.

I always do clean installs on new release.

My solution was to create a new_install script. It installed my basic
extra applications and removed a few default apps, disabled some
daemon/services then started calling install_whatever_app_here scripts
or change_app_here and gets all updates. I reboot and run
install_addons calling the install/change_app scripts.

Then there is install_changes which then loads users into passwd/group
files and makes changes based on node name.

Those scrips would copy the app's config file(s) to
whatever_vorig then modify the app's config file to what I want.

Script checks if whatever_vorig exists, if so, skip install.
If not, make one and install my changes.



$ locate _vorig | wc -l
75

From: Mike Jones on
Responding to Bit Twister:

> On Sun, 10 Jan 2010 11:13:20 GMT, Mike Jones wrote:
>
>> Not going to work as I'm including stuff that doesn't appear on the
>> default install DVD.
>
> Yep, been there, done that, have the T-shirt.
>
> I always do clean installs on new release.
>
> My solution was to create a new_install script. It installed my basic
> extra applications and removed a few default apps, disabled some
> daemon/services then started calling install_whatever_app_here scripts
> or change_app_here and gets all updates. I reboot and run install_addons
> calling the install/change_app scripts.
>
> Then there is install_changes which then loads users into passwd/group
> files and makes changes based on node name.
>
> Those scrips would copy the app's config file(s) to whatever_vorig then
> modify the app's config file to what I want.
>
> Script checks if whatever_vorig exists, if so, skip install. If not,
> make one and install my changes.
>


Thats about where I am right now.

In your experience\opinion, is it worth pursuing hacking the Slackware
install DVD, or is it going to be a more productive option to simply
polish up my post-install modifications package instead?

I'm thinking complexity\time investment over convenience here.

--
*=( http://www.thedailymash.co.uk/
*=( For all your UK news needs.
From: Henrik Carlqvist on
Mike Jones <Not(a)Arizona.Bay> wrote:
> I've already created and deployed a comprehensive post-install
> customisation pack, including new Slack packages, and a list of
> rip-outs, a bunch of custom configs, and so on.

That is very useful when creating your own custom Slackware DVD.

> What I'm looking to do is avoid having to do a post-install thing and
> simply have all this already on my install DVD so it's ready to fly
> after a single install operation.

Yep, all that you otherwise would do after the install could be done by
adding some custom packages of your own.

> I'll also be looking at pre-setting various options, like a UK keyboard,
> time set to Europe-London, and so on.

Again, all that can be done by adding your own packages. Most likely you
also want it to be done automatically without any questions asked from
some script in /var/log/setup. For that reason you make sure that your
custom package overwrites the script asking questions with a script which
does the setting you want. So you could for instance have a package which
replaces /var/log/setup/setup.timeconfig with a script which sets your
time zone to Europe-London without asking any questions.

> My problem is that I can't find\figure out what needs to be customised,
> or how to begin tweaking things. I need a few pointers here.

Only you know what you want to customize. If you don't know what you want
to change you shouldn't change anything. The standard Slackware
installation is supposed to be "one size fits all". If I told you what I
prefer to customize you would get a Slackware insallation that is superb
for me, but you would probably be better off with a standard Slackware
installation DVD.

That said, I prefer an installation which asks as few questions as
possible before starting to install packages and no questions at all after
the packages has been installed. With such an installation DVD I can boot
from the DVD and two minutes later after having answered a few questions
leave the machine. 45 minutes later I can come back to a graphical login
prompt, login to the machine with my NIS password, access my automounted
home directory from the NFS server and print to network printers.

During the installation phase there are also some steps and questions to
be asked. Things like how to partition your drive, which packages to
install. Those steps cannot be avoided by adding packages. If you want to
customize those steps you will instead have to customize the installation
scripts in the initrd.

Creating such an installation DVD involves a lot of work. It is not only
about customizing the Slackware installation, you probably also want to
add a lot of extra software. Maybe I have spent 20-40 hours to get my
installation disc the way I want it, but it pays off when you have a lot
of machines to install.

regards Henrik
--
The address in the header is only to prevent spam. My real address is:
hc3(at)poolhem.se Examples of addresses which go to spammers:
root(a)localhost postmaster(a)localhost

From: Mike Jones on
Responding to Henrik Carlqvist:

> Mike Jones <Not(a)Arizona.Bay> wrote:
>> I've already created and deployed a comprehensive post-install
>> customisation pack, including new Slack packages, and a list of
>> rip-outs, a bunch of custom configs, and so on.
>
> That is very useful when creating your own custom Slackware DVD.
>
>> What I'm looking to do is avoid having to do a post-install thing and
>> simply have all this already on my install DVD so it's ready to fly
>> after a single install operation.
>
> Yep, all that you otherwise would do after the install could be done by
> adding some custom packages of your own.
>
>> I'll also be looking at pre-setting various options, like a UK
>> keyboard, time set to Europe-London, and so on.
>
> Again, all that can be done by adding your own packages. Most likely you
> also want it to be done automatically without any questions asked from
> some script in /var/log/setup. For that reason you make sure that your
> custom package overwrites the script asking questions with a script
> which does the setting you want. So you could for instance have a
> package which replaces /var/log/setup/setup.timeconfig with a script
> which sets your time zone to Europe-London without asking any questions.
>
>> My problem is that I can't find\figure out what needs to be customised,
>> or how to begin tweaking things. I need a few pointers here.
>
> Only you know what you want to customize. If you don't know what you
> want to change you shouldn't change anything. The standard Slackware
> installation is supposed to be "one size fits all". If I told you what I
> prefer to customize you would get a Slackware insallation that is superb
> for me, but you would probably be better off with a standard Slackware
> installation DVD.



A clue or two about where to start, or even just which files I need to
focus on learning about on the install DVD would be useful.



> That said, I prefer an installation which asks as few questions as
> possible before starting to install packages and no questions at all
> after the packages has been installed. With such an installation DVD I
> can boot from the DVD and two minutes later after having answered a few
> questions leave the machine. 45 minutes later I can come back to a
> graphical login prompt, login to the machine with my NIS password,
> access my automounted home directory from the NFS server and print to
> network printers.
>
> During the installation phase there are also some steps and questions to
> be asked. Things like how to partition your drive, which packages to
> install. Those steps cannot be avoided by adding packages. If you want
> to customize those steps you will instead have to customize the
> installation scripts in the initrd.
>
> Creating such an installation DVD involves a lot of work. It is not only
> about customizing the Slackware installation, you probably also want to
> add a lot of extra software. Maybe I have spent 20-40 hours to get my
> installation disc the way I want it, but it pays off when you have a lot
> of machines to install.



So, how d'ya did it then? What didja hack? HOW didja hack it? ;\


--
*=( http://www.thedailymash.co.uk/
*=( For all your UK news needs.
From: Bit Twister on
On Sun, 10 Jan 2010 15:32:35 GMT, Mike Jones wrote:

> In your experience\opinion, is it worth pursuing hacking the Slackware
> install DVD, or is it going to be a more productive option to simply
> polish up my post-install modifications package instead?
>
> I'm thinking complexity\time investment over convenience here.

Think about it, you have to debug the new distribution release/new app
configuration, test, modify the install DVD, verify change, burn new
DVD, do backups.

With script method, it's debug, modify script, test, do backups.
If you support more than one node, DVD is not the way to update an application.

You still have to do the work. My way, I modify script, cut each command
from script paste in terminal to do work and that performs 99% of my
script test. Anytime an update of app config file comes out, I copy new
config file to whatever_vorig, run script with -i, then run script
again to fold in my changes.

We know configuration words change, so do values. In some cases config
file name/location change. With a little thought your script can
manage those fairly easy. For interactive package installs, you can
use expect to do the interactive answers.

Here is an example, I install the dovecot package in my install_addons
script. I run change_dovecot to change 5 configuration lines, and tell
logrotate about the new log file needing compressing.

#******************************************************************
#*
#* dovecot_changes - installs my dovecot configuration changes
#*
#******************************************************************

_exe=$0
_arg1="$1"

echo "
running $_exe
"
.. /local/bin/functions_change

#****************************************
# dovecot changes, if it is installed
#****************************************

_fn=/etc/dovecot.conf
if [ -e $_fn ] ; then
if [ ! -e ${_fn}_vorig ] ; then
echo "fixing $_fn"
mkdir -p /var/log/dovecot
cp_vorig $_fn
/bin/cp /dev/null $_fn
while read -r line ; do
set -- $line
case $1 in
"#log_path") line="log_path = /var/log/dovecot/errors.log" ;;
"#info_log_path") line="log_path = /var/log/dovecot/info.log" ;;
"#mail_location") line="mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u" ;;
"#protocols") line="protocols = imap imaps" ;;
"#mail_privileged_group") line="mail_privileged_group = mail" ;;
*) ;;
esac
echo "$line" >> $_fn
done < ${_fn}_vorig

#***********************************
#* tell logrotate about dovecot files
#* to compress and rotate
#***********************************

_fn=/etc/logrotate.d/dovecot

echo " /var/log/dovecot/*.log {" > $_fn
echo " weekly" >> $_fn
echo " notifempty" >> $_fn
echo " missingok" >> $_fn
echo " compress" >> $_fn
echo " postrotate" >> $_fn
echo " /usr/bin/killall -HUP dovecot" >> $_fn
echo " endscript" >> $_fn
echo "}" >> $_fn

service dovecot restart
fi # end if [ ! -e ${_fn}_vorig ] ; then

fi

if [ "$_arg1" = "-i" ] ; then
restore_vorig /etc/dovecot.conf
service dovecot restart
fi


echo "
completed $_exe
"
#************************ end dovecot_changes *********************





Here is my functions_change script.

#******************************************************************
#*
#* functions_change - functions for changes scripts
#*
#******************************************************************


function cp_vorig
{
_fn=$1
if [ -z "$_fn" ] ; then
echo "cp_vorig: arg1 is null"
exit 1
fi

if [ -e $_fn ] ; then
if [ ! -e ${_fn}_vorig ] ; then
cp $_fn ${_fn}_vorig
fi
fi
}

function mv_vorig
{
_fn=$1
if [ -z "$_fn" ] ; then
echo "mv_vorig: arg1 is null"
exit 1
fi

if [ -e $_fn ] ; then
if [ ! -e ${_fn}_vorig ] ; then
mv $_fn ${_fn}_vorig
fi
fi
}

function restore_vorig
{
_fn=$1
if [ -z "$_fn" ] ; then
echo "restore_vorig arg1 is null"
exit 1
fi

if [ -e ${_fn}_vorig ] ; then
if [ -e ${_fn}_vorig ] ; then
echo "renamed ${_fn}_vorig $_fn"
/bin/mv ${_fn}_vorig $_fn
fi
fi
}


#************************** end functions_changes ****************