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:10] – [When things go wrong - unusual/additional questions asked] reword and clarify some things, especially regarding 7.1 problems 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 166: | Line 168: | ||
| d-i grub-installer/ | d-i grub-installer/ | ||
| d-i grub-installer/ | d-i grub-installer/ | ||
| - | d-i grub-installer/ | ||
| ### Finishing up the installation | ### Finishing up the installation | ||
| # 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 187: | 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 214: | Line 214: | ||
| * **netcfg/ | * **netcfg/ | ||
| * **netcfg/ | * **netcfg/ | ||
| + | |||
| + | 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. | ||
| + | |||
| + | |||
| + | ==== 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 ''/ | ||
linux/debian/automatic-installation.1371730204.txt.gz · Last modified: by stybla
