linux:debian:automatic-installation
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
linux:debian:automatic-installation [2013/06/20 07:35] – [Example of parameters passed to kernel] better wording stybla | linux:debian:automatic-installation [2013/06/25 05:06] (current) – finish up - foreword, conclusion and some other stuff stybla | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Debian - Automatic Installation ====== | ====== Debian - Automatic Installation ====== | ||
- | <note warning> | + | ===== Foreword of sorts ===== |
- | **WORK IN PROGRESS** | + | |
- | + | ||
- | * NOTE to myself - preseed file can be supplied by DHCP | + | |
- | * NOTE to myself - preseed generated by CGI script | + | |
- | </ | + | |
As a pretty much any mainstream GNU/Linux distribution, | As a pretty much any mainstream GNU/Linux distribution, | ||
- | system installation. You can either use Preseed or build a custom ramdisk and use debootstrap | + | system installation. You can either use Preseed or a custom |
directly. | directly. | ||
- | No doubt each approach has its own pros and cons. Personally, | + | When I told my friend I'm looking into preseeding Debian he was like: // |
- | most cases and basic OS installation | + | The answer is there is nothing wrong with deboostrap and custom built ramdisk except it's a bit of work. |
- | Ansible/ | + | So why not to use Preseeding if it can do the job? |
- | installation. | + | |
- | You can also run commands | + | No doubt each approach has its pros and cons. I'm positive custom build ramdisk and deboostrap |
+ | will be faster than installer. Also, you can add tools you need, eg. tools for HW RAID, but you | ||
+ | can do a bit of scripting(and magic) as well, eg. assemble HW RAID prior to installation. Ramdisk can be used for | ||
+ | rescue and debugging. As a con I see maintenance - you have to create it, script(automate) it and keep it up-to-date. | ||
+ | |||
+ | Preseeding has pretty much the same capabilities. It allows you to install base Debian which is, in my opinion, | ||
+ | all you need and fine-tune the rest with Ansible/ | ||
+ | packages; support for LVM and Linux SW RAID; run additional commands; what have you. I'd almost forget you | ||
+ | can use Preseed for installation | ||
+ | Now, here are some cons which, despite solveable, are a bit annoying. | ||
+ | |||
+ | ==== Cons of Debian Preseeding ==== | ||
+ | |||
+ | === Things don't always work out-of-the-box === | ||
+ | |||
+ | For example I didn't have much of success with network console. It just kept segfaulting on me at " | ||
+ | You might want to use different kernel, although replacing kernel should be the least warry and quite easy. | ||
+ | Something can be or get broken or there is going to be some sort of regression. | ||
+ | |||
+ | === More than one Preseed configuration might be necessary === | ||
+ | |||
+ | This might be due to the differences in hardware configuration. The thing is, you must specify target drive in case | ||
+ | there is more than one drive present. And I'm sure this isn't uncommon case. However, this can be solved by simple | ||
+ | CGI/script preseed generator which will return correct Preseed configuration file, eg. based on hostname. | ||
+ | |||
+ | === Missing tools === | ||
+ | |||
+ | I believe you could easilly add whatever you want and pretty much modify netboot ramdisk in way you like. | ||
+ | |||
+ | === MD5 sum of Preseed config must be kept up to date === | ||
+ | |||
+ | Yes, this is particularly annoying one. You can solve it in two ways. Don't use MD5 sum, however then you can't be sure | ||
+ | about integrity of preseed file you've just downloaded. Or just integrate it into your script you have for updating TFTP | ||
+ | boot configuration. I don't really think this is a hard one to do. | ||
+ | |||
+ | === Can't be used for rescue and/or debugging === | ||
+ | |||
+ | I'm not entirely sure this is true. I also think with a bit of work and modification it very well could be. | ||
+ | |||
+ | ===== Conclusion of sorts ===== | ||
- | On the other hand, customized | + | I find Debian Preseeding to be enough. It does basic Debian installation which is all I need, because after installation |
- | You can add vendor specific tools, assemble HW RAIDs, debug/fix broken OS, run pre/post install tasks | + | is finished, I hand it over to Ansible/ |
- | via your favourite management tool etc. and create one ramdisk for OS install | + | to install Debian via Installer, although I will look into custom built ramdisk |
+ | curiosity rather than actual need, I guess. As I mentioned, not every time things work out-of-the-box. However, | ||
+ | the same can be said about everything | ||
- | Now, you might argue every server(hardware configuration) is different and requires specific approach. | ||
- | I'd counter-argue it's more about profiling and you end up with only couple profiles. I agree | ||
- | stuff like HW RAID assembly and vendor specific tools to do that might be a problem. However, you can | ||
- | modify Debian' | ||
- | enough to assembly HW RAID? Would installer notice/ | ||
- | I still think rolling with Preseed for basic OS installation is better and easier to maintain way than | ||
- | having to maintain your customized ramdisk. Althouhg, once you automate its [ramdisk] creation, then | ||
- | it won't matter that much. | ||
===== Customized ramdisk and debootstrap ===== | ===== Customized ramdisk and debootstrap ===== | ||
Line 43: | Line 71: | ||
a way it boots into shell instead of installer, add stuff you need want, remove stuff you don't need, | a way it boots into shell instead of installer, add stuff you need want, remove stuff you don't need, | ||
pack it, run with it. | pack it, run with it. | ||
+ | |||
+ | |||
===== Preseeding ===== | ===== Preseeding ===== | ||
Line 48: | Line 78: | ||
* TFTP, DHCP, web server | * TFTP, DHCP, web server | ||
+ | * [[linux: | ||
* time | * time | ||
* patience | * patience | ||
+ | |||
==== Example of preseed file ==== | ==== Example of preseed file ==== | ||
+ | |||
+ | I've removed pretty much all comments. What's below is my preseed file. | ||
+ | Please, see example preseed files/ | ||
+ | and, actually, more. | ||
< | < | ||
- | # Preseeding only locale sets language, country and locale. | + | ### l18n, i18n, keyboard |
d-i debian-installer/ | d-i debian-installer/ | ||
- | # The values can also be preseeded individually for greater flexibility. | ||
d-i debian-installer/ | d-i debian-installer/ | ||
d-i debian-installer/ | d-i debian-installer/ | ||
- | # Keyboard selection. | ||
# keymap is an alias for keyboard-configuration/ | # keymap is an alias for keyboard-configuration/ | ||
d-i keymap select us | d-i keymap select us | ||
### Network configuration | ### Network configuration | ||
- | # netcfg will choose an interface that has link if possible. This makes it | + | # netcfg will choose an interface that has link if possible. |
- | # skip displaying a list if there is more than one interface. | + | |
d-i netcfg/ | d-i netcfg/ | ||
- | # If you have a slow dhcp server | + | # In case of a slow dhcp server |
- | # it, this might be useful. | + | |
d-i netcfg/ | d-i netcfg/ | ||
- | # Any hostname and domain names assigned from dhcp take precedence over | + | # despite defined |
- | # values set here. However, setting the values still prevents the questions | + | |
- | # from being shown, even if values come from dhcp. | + | |
d-i netcfg/ | d-i netcfg/ | ||
d-i netcfg/ | d-i netcfg/ | ||
- | # Disable that annoying WEP key dialog. | + | |
d-i netcfg/ | d-i netcfg/ | ||
- | # If non-free firmware | + | # load non-free firmware without asking |
- | # configure the installer to always try to load it, without | + | |
- | # change to false to disable | + | |
d-i hw-detect/ | d-i hw-detect/ | ||
Line 86: | Line 114: | ||
d-i mirror/ | d-i mirror/ | ||
d-i mirror/ | d-i mirror/ | ||
- | d-i mirror/ | + | d-i mirror/ |
d-i mirror/ | d-i mirror/ | ||
d-i mirror/ | d-i mirror/ | ||
Line 98: | Line 126: | ||
### Clock and time zone setup | ### Clock and time zone setup | ||
- | # Controls whether or not the hardware clock is set to UTC. | ||
d-i clock-setup/ | d-i clock-setup/ | ||
- | # You may set this to any valid setting for $TZ; see the contents of | ||
- | # / | ||
d-i time/zone string UTC | d-i time/zone string UTC | ||
- | # Controls whether to use NTP to set the clock during the install | ||
d-i clock-setup/ | d-i clock-setup/ | ||
- | # NTP server to use. The default is almost always fine here. | ||
d-i clock-setup/ | d-i clock-setup/ | ||
### Partitioning | ### Partitioning | ||
- | ## Partitioning example | + | # this must be set in case you have more than one HDD present |
- | # If the system has free space you can choose to only partition that space. | + | d-i partman-auto/ |
- | # This is only honoured if partman-auto/ | + | # possible values: regular, lvm, crypto |
- | #d-i partman-auto/ | + | |
- | + | ||
- | # Alternatively, | + | |
- | # one disk the installer will default to using that, but otherwise the device | + | |
- | # name must be given in traditional, | + | |
- | # /dev/sda, and not e.g. / | + | |
- | # For example, to use the first SCSI/SATA hard disk: | + | |
- | #d-i partman-auto/ | + | |
- | # In addition, you'll need to specify the method to use. | + | |
- | # The presently available methods are: | + | |
- | # - regular: use the usual partition types for your architecture | + | |
- | # - lvm: use LVM to partition the disk | + | |
- | # - crypto: use LVM within an encrypted partition | + | |
d-i partman-auto/ | d-i partman-auto/ | ||
- | # If one of the disks that are going to be automatically partitioned | + | |
- | # contains an old LVM configuration, | + | |
- | # warning. This can be preseeded away... | + | |
d-i partman-lvm/ | d-i partman-lvm/ | ||
- | # The same applies to pre-existing software RAID array: | ||
d-i partman-md/ | d-i partman-md/ | ||
- | # And the same goes for the confirmation to write the lvm partitions. | ||
d-i partman-lvm/ | d-i partman-lvm/ | ||
d-i partman-lvm/ | d-i partman-lvm/ | ||
- | # You can choose one of the three predefined partitioning recipes: | + | |
- | # - atomic: all files in one partition | + | # possible values |
- | # - home: | + | |
- | # - multi: separate /home, /usr, /var, and /tmp partitions | + | |
d-i partman-auto/ | d-i partman-auto/ | ||
- | # This makes partman automatically partition without confirmation, | + | |
- | # that you told it what to do using one of the methods above. | + | |
d-i partman-partitioning/ | d-i partman-partitioning/ | ||
d-i partman/ | d-i partman/ | ||
d-i partman/ | d-i partman/ | ||
d-i partman/ | d-i partman/ | ||
- | # This makes partman automatically partition without confirmation. | ||
d-i partman-md/ | d-i partman-md/ | ||
d-i partman-partitioning/ | d-i partman-partitioning/ | ||
Line 170: | Line 172: | ||
# Avoid that last message about the install being complete. | # Avoid that last message about the install being complete. | ||
d-i finish-install/ | d-i finish-install/ | ||
- | # This will prevent the installer from ejecting the CD during the reboot, | + | # don't eject CD as there isn't any |
- | # which is useful in some situations. | + | |
d-i cdrom-detect/ | d-i cdrom-detect/ | ||
# Setup SSH keys for root; the last command to be run before reboot | # Setup SSH keys for root; the last command to be run before reboot | ||
- | d-i preseed/ | + | d-i preseed/ |
</ | </ | ||
Line 186: | Line 187: | ||
APPEND initrd=img/ | APPEND initrd=img/ | ||
auto \ | auto \ | ||
- | url=http:// | + | url=http:// |
preseed-md5=299d7a67793464e7e1e013a79660b64e \ | preseed-md5=299d7a67793464e7e1e013a79660b64e \ | ||
fb=false \ | fb=false \ | ||
Line 216: | Line 217: | ||
Turning off Frame Buffer('' | Turning off Frame Buffer('' | ||
However, turning Frame Buffer off means graphics in installer will go wonky from time to time even when running in SDL window. | However, turning Frame Buffer off means graphics in installer will go wonky from time to time even when running in SDL window. | ||
+ | |||
+ | |||
+ | ==== How to configure network-console, | ||
+ | |||
+ | < | ||
+ | ### Network console | ||
+ | # Use the following settings if you wish to make use of the network-console | ||
+ | # component for remote installation over SSH. This only makes sense if you | ||
+ | # intend to perform the remainder of the installation manually. | ||
+ | d-i anna/ | ||
+ | d-i network-console/ | ||
+ | #d-i network-console/ | ||
+ | #d-i network-console/ | ||
+ | </ | ||
+ | |||
+ | This happens before APT repository is configured. You're presented with instructions and I believe as long | ||
+ | as you don't click // | ||
+ | '' | ||
+ | manually, or switch into shell. | ||
+ | |||
+ | Note, however, network-console has segfaulted(Wheezy 7.1) on my on several occasions. The first was when | ||
+ | I attempted to get into shell and second when I've clicked // | ||
+ | via SSH when installation proceeded. | ||
+ | |||
+ | |||
+ | ==== When is '' | ||
+ | |||
+ | Before APT repository is configured. | ||
+ | |||
+ | |||
+ | ==== When is '' | ||
+ | |||
+ | Just before machine is about to be rebooted. However ''/ | ||
+ | |||
==== When things go wrong - unusual/ | ==== When things go wrong - unusual/ |
linux/debian/automatic-installation.1371731752.txt.gz · Last modified: 2013/06/20 07:35 by stybla