yast/yast-installation

View on GitHub
doc/README.doit

Summary

Maintainability
Test Coverage
inst_doit documentation
-----------------------

What does 'doit' do ?
---------------------

After collecting the user preferences (i.e. user_settings map),
the 'doit' module performs the actual installation. This documents
gives an overview on the neccessary steps.


- create partitions on target device

    fdisk


- create filesystems on partitions

                    # screen with progressbar for mke2fs ?
    mke2fs for /boot
    mkswap for swap
    mke2fs for /


DONE: use newly created swap

    swapon


DONE: mount newly created partitions

    mount /dev/xxy  /mnt        # / partition
    mkdir /mnt/boot
    mount /dev/xxx    /mnt/boot    # /boot partition


DONE: install packages

    mkdir /mnt/etc            # mkdirs really needed ?
    mkdir /mnt/bin
    mkdir /mnt/sbin
    mkdir /mnt/usr

    mkdir /mnt/var            # mkdirs for rpm
    mkdir /mnt/var/lib
    mkdir /mnt/var/lib/rpm
    mkdir /mnt/var/tmp

    mkdir /mnt/cdrom

    # rpm module

    check for right cd on /dev/cdrom
    mount /dev/cdrom /mnt/cdrom
    rpm --initdb

    # install packages needed by scripts

    rpm -hvU --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/aaa_dir.rpm
    rpm -hvU --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/bash.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/shlibs.rpm
    rpm -hvU --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/aaa_base.rpm
    rpm -hvU --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/perl.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/ncurses.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/sh_utils.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/fileutil.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/textutil.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/base.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/devs.rpm
    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/a1/diff.rpm

    # might be needed if package list is wrong (as in 6.2)

    rpm -hUv --nodeps --root /mnt --noscripts /mnt/cdrom/suse/tcl1/tcl.rpm

    loop over *all* files (including files installed above !) but this
      time with scripts

    rpm -hUv --nodeps --force --root /mnt /cdrom/...


- write lilo

    ask user for floppy if needed    # see lilo flowchart
    collect active partitions
    create lilo.conf labels
        'windows' for active windows partition
        'dos'    for active dos partition
        'normal' (default) if graphic device found (init 3!)
        'text' (make default if no graphic device,
             same as normal in this case, init 2!)

    construct boot.msg explaining the choices
    chroot /mnt lilo -s <mbr_save_file>
    create uninstall disk
    write uninstall disk


- write default files            # done by SuSEconfig ??

    - /etc/HOSTNAME            // does SuSEconfig from rc.config:FQHOSTNAME
    - /etc/DOMAINNAME          // does SuSEconfig from rc.config:FQHOSTNAME
    - /etc/route.conf
    - /etc/hosts            // does SuSEconfig from rc.config:FQHOSTNAME

- write conf.modules

    - with information from libhd


- write /etc/fstab

    <rootpart>     /         ext2     defaults     1 1
    <bootart>     /boot         ext2     defaults     1 2
    <swappart>    swap        swap    defaults    0 0
    none        /proc        proc    defaults    0 0
    none        /dev/pts    devpts    defaults    0 0

    - optionally foreign partitions if existant

    <dospart>    /dos/c        fat    defaults    0 0
    <winpart>    /windows/c    vfat    defaults    0 0


- write setup information to /var/lib/YaST2 of target

    mkdir /mnt/var/lib/YaST2
    - user_settings            # .dumpto agent
    - installation log
    - hwprobe             # .dumpto agent


- write rc.config
    DONE: Some variables

    from user_settings

    and all other files needed by YaST1
      to have a proper setup


DONE: set root password

    passwd                # take PAM into account


DONE: chroot to newly installed system

    umount /mnt
    umount /
    mount /dev/xxy /
    init 1


- run SuSEconfig (in background ? tty8 ?)


- create user account

    useradd                # what else ?
    passwd <user>


- stop X11, console mode


- setup X11

    if (monitor,graphic,mouse) known
        should not use maximal monitor resolution (one below)
        should use 4:3 ratio
        isax    /mnt/var/X11/XF86config
        xvidtune
    else
        sax


- start system

    if (X11 configured)
        init 3            # kdm !
    else
        init 2            # login: