+automatically configure / install linux distributions (generic)
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
parent
11518ecec2
commit
60a890c60a
1 changed files with 93 additions and 0 deletions
|
@ -0,0 +1,93 @@
|
|||
[[!meta title="Generic automatic installation for different Linux distributions"]]
|
||||
|
||||
## Introduction / Motivation
|
||||
|
||||
If you've been a little bit longer active as a sysadmin, you'll have faced
|
||||
different Linux distributions and got used to their pros and cons.
|
||||
|
||||
One thing though that I cannot (and do not) want to get used to, is that
|
||||
every distribution contains its own way of having an automated installation.
|
||||
May it be [kickstart](http://fedoraproject.org/wiki/Anaconda/Kickstart),
|
||||
[preseed](http://wiki.debian.org/DebianInstaller/Preseed) or
|
||||
[aif](http://www.archlinux.org/packages/extra/any/aif/) (or any other
|
||||
I've not mentioned), all contain their own specific settings to do
|
||||
the same again and again.
|
||||
|
||||
Having a lot of discussions with regarding this topic, there is one
|
||||
approach that seems to kick them all, can be automated easily and
|
||||
extended for other distributions (or other Unices) and probably
|
||||
easily developed as well:
|
||||
|
||||
## Unix = collection of files + metadata
|
||||
|
||||
Unices and Linux distributions are just a number of files in some particular
|
||||
filesystem plus some metadata like partitions (or slices), as
|
||||
some other people at [OpenQRM](http://openqrm.com/?q=node/2)
|
||||
have recognised this as well:
|
||||
|
||||
We asked ourself "what is linux ?", it is the kernel, an initrd,
|
||||
some modules and a root-filesystem. Those are all "just" files
|
||||
..... so we should treat them like files by putting and managing
|
||||
them on modern storage-servers.
|
||||
|
||||
But instead of doing the whole infrastructure management stuff,
|
||||
virtualisation (hear the cloud?) and monitoring environment, I'll
|
||||
just focus on the part of the installation.
|
||||
|
||||
## Installation into/from a directory
|
||||
|
||||
Assume the following: Every Linux distribution can somehow be put
|
||||
into a directory. Either by tar'ing an existing installation or
|
||||
by using specific tools like
|
||||
[debootstrap](http://wiki.debian.org/Debootstrap),
|
||||
[febootstrap](http://people.redhat.com/~rjones/febootstrap/) or
|
||||
[archbootstrap](https://wiki.archlinux.org/index.php/Archbootstrap).
|
||||
|
||||
This proces is pretty easy and can be used as a starting point for
|
||||
a generic installation.
|
||||
|
||||
## Add some metadata
|
||||
|
||||
Now take this directory, and put it onto the harddisk. Installation
|
||||
done. Well. almost:
|
||||
|
||||
* Todo before
|
||||
* Create partitions
|
||||
* Create filesystems
|
||||
* Todo after
|
||||
* Adjust /etc/fstab
|
||||
* Add correct boot loader
|
||||
* Configure network + ssh
|
||||
|
||||
After you've created the partitions and the filesystem
|
||||
(which is distribution independent!), you can copy over the files
|
||||
to the target diretory, in which the selected partitions are mounted.
|
||||
|
||||
For post processing, you need to adjust the fstab, so partitions
|
||||
(and swap, do not forget computers with 4 or 8 MiB main memory!)
|
||||
will be used at the right location. Adding a bootloader would be of
|
||||
great help for the boot process (almost distribution independent),
|
||||
though booting from the network
|
||||
via PXE may even get around this.
|
||||
Finally the network configuration (distribution specific!) must be
|
||||
adjusted and ssh should be installed, so the system can be configured
|
||||
remotely (for instace with [[software/cdist]]).
|
||||
|
||||
## Todo
|
||||
|
||||
So the next steps are pretty straight forward:
|
||||
Write something that automatically
|
||||
|
||||
* configures partitions
|
||||
* creates filesystems
|
||||
* mounts the filesystems
|
||||
* copies files from a know location
|
||||
* adjust the operating system
|
||||
* umounts everything and
|
||||
* reboots
|
||||
|
||||
Doesn't sound like very much and so
|
||||
I'll probably give it a try in the next weeks, so stay tuned if you're
|
||||
interested in this topic.
|
||||
|
||||
[[!tag eth unix]]
|
Loading…
Reference in a new issue