An open API service indexing awesome lists of open source software.

https://github.com/zstyblik/slack-kickstart

Slack-Kickstart provides automatic installation of Slackware and Slackware64 Linux distribution
https://github.com/zstyblik/slack-kickstart

Last synced: over 1 year ago
JSON representation

Slack-Kickstart provides automatic installation of Slackware and Slackware64 Linux distribution

Awesome Lists containing this project

README

          

Slack-Kickstart
---------------

Author: Davide Zito
Fork maintaned by: Zdenek Styblik
Version: trunk

INFO:
-----

Slack-Kickstart provides automatic installation of Slackware and Slackware64
Linux distribution. This is a FORKED version of ORIGINAL Slack-Kickstart which
brings some changes.
First of all, it brings support for instalation of Slackware64 as well as script
for building ramdisks, thus long-term support for future releases. And you can
make ramdisk by yourself. I have made some modifications to scripts as
well - mostly clean ups. And for the last, but not least, some of configuration
parameters got changed - some got added, some became obsolete.

Main goal is to have an effective way of unattended installation of Slackware on
machine with virtual machines in mind especially. Slack-Kickstart might not be
as flexible as Anaconda is.

REQUIREMENTS:
-------------

- A kernel with loopback device support(Slackware standard kernel is OK)
- syslinux(needed to create Iso & PXE images)
- cdrtools(as above)
- openssl(needed to encrypt the root's password)
- busybox(needed to create templates)
- dropbear(needed for SSH access to ramdisk)

LICENSE:
--------

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

For detailed info on license, please, see LICENSE.

QUICKSTART:
-----------

You need to download some kernels into kernels subdir.
You can use original Slackware, or Slackware64, kernels, or any
custom kernel, but if you choose the 'custom'
way you need built-in support for ethernet card and
system disks device.

Kernel images can be stored in any directory layout:

kernels-\
|
[dir] bare.i
| \
| bzImage
|
[dir] scsi.s
| \
| bzImage
|
[dir] adaptec.s
| \
| bzImage
|
[dir] custom
| \
| mykernel1 mykernel2 ...
|
[dir] packaged-kernel
| \
| kernel-x.y.txz modules-x.y.txz

CONFIG FILE:
------------

Unlike Red Hat's Anaconda "recipe", Slack-Kickstart is using one configuration
file. This approach has its advantages(simplicity) and disadvantages(less
flexibility). However it is good enough now.
Copy-cat of Anaconda is being considered for later.

Configuration file is located in '/etc/Kickstart.cfg'.

CONFIG FILE OPTIONS:
--------------------

DISTRO=[SLACKWARE_VERSION]
* eg. DISTRO=slackware64-13.37

HOSTNAME=[string]
* hostname of installed machine/Slack-kickstart
* gets over-riden by hostname received from DHCP server
* can be passed as Kernel parameter

DOMAIN=[string]
* domain of which installed machine is part of
* can be passed as Kernel parameter
* eg. DOMAIN=domain.tld

PACKAGE_SERVER=[ cdrom:|[ftp|http|nfs]:[source] ]
* installation source
* eg. PACKAGE_SERVER=cdrom:
* eg. PACKAGE_SERVER=ftp://domain.tld/
* eg. PACKAGE_SERVER=http://domain.tld/
* eg. PACKAGE_SERVER=nfs:nfshost.domain.tld:/install-directory

TAG=<[ftp|http|nfs|file]:[source]>
* name of TAG list to use for installation
* scripts will use basename to determine the name of taglist and then look in
'./taglist' directory when building initrd image
* it actually is still possible to have tags in Kickstart.cfg
* TAG lists are located in directory 'taglists/'
* TAG list line example: '#@a/findutils: ADD'
* TAG list line example: '#@a/floppy: SKP'
* eg. TAG=http://domain.tld/taglists/slackware64-13.37-mini
* eg. TAG=nfs:1.2.3.4:/taglists/slackware64-13.37-mini
* eg. TAG=file:/etc/slackware64-13.37-mini

PASSWD=[UNECRYPTED_PASSWORD]
* password to be set for root user in Slack-kickstart and installed machine
* password gets encrypted by OpenSSL prior to copy on ramdisk
* use of SSH keys instead of passwords is strongly advised
* eg. PASSWD=secretPassword

KERNEL=[PATH_TO_KERNEL_IMAGE]
* obsolete
* kernel is being installed from packages

KS=<[ftp|http|nfs|script]:[source]>
* Installation program will download Kickstart.cfg from specified location
* This will over-ride Kicstart.cfg file in ramdisk
* Kickstart.cfg must be named as hostname.domain.cfg thus if Hostname is
'darkstar.domain.tld', then installation program will be looking for
'/darkstar.domain.tld.cfg'
* script =~ get another KS file the way you prefer. Result must be saved as
'/tmp/Kickstart.cfg.new'
* It is also possible to pass KS as kernel parameter. Kernel parameter has
higher priority than the one specified in Kickstart.cfg.
* eg. KS=http://domain.tld/kickstart/ ->
* http://domain.tld/kickstart/$HOSTNAME.$DOMAIN.cfg
* http://domain.tld/kickstart/Kickstart.cfg

AUTOUPDATE=[none|slapt-get|swaret|slackpkg]
* in which way, if any, to perform system auto-update

SECURE=[yes|no]
* if set to 'yes', only SSHd will be started after the boot

AUTOSTART=[yes|no]
* automatically start with Slack-kickstart installation
* automatically reboot machine after installation

PREINST=
POSTINST=
* list of pre-installation/post-installation scripts
* comma ',' is used as delimiter
* scripts are located in '/etc/pre-install' resp. '/etc/post-install'
* pre-installation scripts are executed prior to partitioning
* pre-installation scripts are executed without any CWD
* post-installation scripts are executed prior to setup's exit
* post-installation scripts are executed chrooted in the new root('/')

BOOTLOADER=[BOOTDEV=;
[LOCATION=;]
[APPEND=;]]
* BOOTDEV, if not specified, defaults to the first drive found in Kickstart.cfg
* LOCATION=none won't install bootloader
* LOCATION defaults to 'mbr'
* LOCATION=partition is not supported at this time
* spaces in APPEND will be transformed into newlines('\n')

DISK="DEVICE[]=[],[],[,,]"
* % sfdisk; format is used to define partitions
* multiple partitions are supported
* must be specified for each device
* eg. DISK="DEVICE[/dev/vda]=[/],[ext4],[,2750,83];[swap],[swap],[,250,82];"

KEYMAP=[keymap]
* keymap to be used in installer and installed machine
* eg. KEYMAP=qwerty/us.map

HWCLOCK=[localtime|utc]
* eg. HWCLOCK=utc

TIMEZONE=[TZ]
* eg. TIMEZONE=Europe/Prague

NTPHOST=
* FQDN, or IP address, of NTP servers to get current time from
* eg. NTPHOST=ntp.domain.tld

NETWORK=[DEVICE=[IFACE];PROTO=[static|dhcp];]\
\
>
* obsoletes other network options
* must be specified for each device that is supposed to be configured

ETH=[INTERFACE]
* interface name
* eg. ETH=eth0
* obsolete

DHCP=[yes|no]
* use DHCP for $ETH interface
* obsolete

INET=[IP_ADDRESS]
* static IP address configuration for $ETH interface
* obsolete

MASK=[NET_MASK]
* static network mask for $ETH interface
* obsolete

GW=[IP_ADDR_GATEWAY]
* static IP address of gateway for $ETH interface
* obsolete

NS1=[IP_NAMESERVER]
NS2=[IP_NAMESERVER]
* IP addresses of 1st and 2nd nameserver
* obsolete

SLAPTGET=
* URL to get Slaptget

KERNELS:
--------

You can use either kernel image wrapped in Slackware package or kernels from
Slackware DVD/CD or custom built kernel images. Simply put, package wrapping is
not necessary.
In case of kernel wrapped into package, package is unpacked by # explodepkg ; at
first and 'vmlinuz*' is searched for afterwards and used, if found.

As for kernel modules. At first, search for kernel-modules package. If package
is not found, similar search is made on Slackware installation medium.
As to determine which modules to copy, this is handled by script 'modules.sh'
which must be in the same location as the kernel is found. This script must have
function get_kmodules() which handles all copy operations and, actually,
whatever you want. If this script doesn't exist, no kernel modules will be
copied!

SCRIPTS:
--------

MakeInitrd.sh
* creates initrd image based on given template and with given Kickstart.cfg
* you may then use this image to create an ISO or for PXE boot

MakeIso.sh
* creates a bootable Slack-Kickstart ISO image

MakeSlackTemplate.sh
* creates a Slack-Kickstart template which can be used by MakeInitrd.sh script

Tag2List.sh
* converts Slackware's tag lists into one big tag list used by Slack-Kickstart