The Wakes installer is divided into 3 phases:
1. wait_disk
2. initial_menu
3. choice_install
The actual installation is made by choice_install
.
create partition
fdisk $disk
create root volume group
pvcreate -ff $sys_part vgcreate rootvg $sys_part lvcreate -l 90%VG rootvg
format root partion
/sbin/mke2fs -j /dev/mapper/rootvg-lvol0
mount root partion
create_dir $rootmnt mount /dev/mapper/rootvg-lvol0 $rootmnt
create root tree
create_dir $rootmnt/sys $rootmnt/dev $rootmnt/proc $rootmnt/tmp \ $rootmnt/var $rootmnt/var/lock $rootmnt/var/run $rootmnt/var/log \ $rootmnt/etc $rootmnt/root $rootmnt/var/tmp $rootmnt/mnt $rootmnt/boot \ $rootmnt/var/wkpkg $rootmnt/var/wkpkg/rep $rootmnt/var/wkpkg/db \ $rootmnt/var/wkpkg/run $rootmnt/var/wkpkg/build \ $rootmnt/var/wkpkg/mnt/cdrom $rootmnt/var/wkpkg/cat $rootmnt/mnt
install packages
for pkg in $pkg_list do /bin/wkpkg -d $rootmnt -i $pkg done
create boot partition
mke2fs -j $boot_part create_dir $rootmnt/boot mount $boot_part $rootmnt/boot
install linux kernel
/bin/wkpkg -d $rootmnt -i linux
install grub
create_dir $rootmnt/boot/grub cp $rootmnt/usr/lib/grub/i386-pc/* $rootmnt/boot/grub cat <<EOF > $rootmnt/boot/grub/menu.lst default 0 timeout 10 title Wakes GNU/Linux, kernel 2.6.30.1 root (hd0,0) kernel /vmlinuz root=/dev/mapper/rootvg-lvol0 ro quiet initrd /initrd boot title Install Wakes GNU/Linux root (hd0,0) kernel /vmlinuz-install boot=install quiet initrd /initrd-install boot EOF
setup grub
grub --no-curses --batch <<EOF > /dev/null 2>&1 root ($gpart) setup ($gdisk) quit EOF
install config files
cp -r /wakes/X11 $rootmnt/etc
create passwd
cat <<EOF > $rootmnt/etc/passwd root:\$1\$8/H0/gjl\$L5QE8vjJw5BTt/QAu41gk/:0:0:root:/root:/bin/ksh nobody:x:99:99:Unprivileged User:/dev/null:/bin/false sshd:x:50:50:sshd PrivSep:/var/lib/sshd:/bin/false rsyncd:x:48:48:rsyncd Daemon:/home/rsync:/bin/false EOF
create group
cat <<EOF > $rootmnt/etc/group root:x:0: bin:x:1: sys:x:2: kmem:x:3: tty:x:4: tape:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: uucp:x:10: audio:x:11: video:x:12: utmp:x:13: usb:x:14: cdrom:x:15: mail:x:34: nogroup:x:99: sshd:x:50: rsyncd:x:48: EOF
create inittab
cat <<EOF > $rootmnt/etc/inittab # Begin /etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/init.d/rc sysinit l0:0:wait:/etc/rc.d/init.d/rc 0 l1:S1:wait:/etc/rc.d/init.d/rc 1 l2:2:wait:/etc/rc.d/init.d/rc 2 l3:3:wait:/etc/rc.d/init.d/rc 3 l4:4:wait:/etc/rc.d/init.d/rc 4 l5:5:wait:/etc/rc.d/init.d/rc 5 l6:6:wait:/etc/rc.d/init.d/rc 6 #ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now su:S016:once:/sbin/sulogin 1:2345:respawn:/sbin/agetty tty1 9600 2:2345:respawn:/sbin/agetty tty2 9600 3:2345:respawn:/sbin/agetty tty3 9600 #4:2345:respawn:/sbin/agetty tty4 9600 #5:2345:respawn:/sbin/agetty tty5 9600 #6:2345:respawn:/sbin/agetty tty6 9600 # Run xdm as a separate service x:5:respawn:/usr/X11R6/bin/xdm -nodaemon # End /etc/inittab EOF
create hosts
cat <<EOF > $rootmnt/etc/hosts 127.0.0.1 localhost EOF
create ld.so.conf
# Begin /etc/ld.so.conf /usr/local/lib /opt/lib # End /etc/ld.so.conf EOF
create resolv.conf
cat <<EOF > $rootmnt/etc/resolv.conf nameserver 89.2.0.1 nameserver 89.2.0.2 EOF
create network
cat <<EOF > $rootmnt/etc/sysconfig/network HOSTNAME=$hostname EOF
create clock
cat <<EOF > $rootmnt/etc/sysconfig/clock # Begin /etc/sysconfig/clock UTC=1 # End /etc/sysconfig/clock EOF
create profile
cat <<EOF > $rootmnt/etc/profile # Begin /etc/profile # Default PATH export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/i686-pc-linux-gnu/bin # For ksh -o vi export EDITOR=vi if [ "\`id -u\`" -eq 0 ] then PS1="\`id -un\`@\`uname -n\` # " else PS1='$ ' fi # End /etc/profile EOF
create nsswitch.conf
cat <<EOF > $rootmnt/etc/nsswitch.conf # Begin /etc/nsswitch.conf passwd: files group: files shadow: files hosts: files dns networks: files protocols: files services: files ethers: files rpc: files # End /etc/nsswitch.conf EOF
create fstab
cat <<EOF > $rootmnt/etc/fstab # Begin /etc/fstab # file system mount-point type options dump fsck # order xxxxxxxxx / ext3 defaults 1 1 yyyyyyyyy /boot ext3 defaults 1 1 #/dev/zzzz swap swap pri=1 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 # End /etc/fstab EOF
create wkpkg.conf
cat <<EOF > $rootmnt/etc/wkpkg.conf # # cat /etc/wkpkg.conf # Default network depot http://www.gnuwales.org/wakes/depot main #usb://depot main #ftp://www.gnuwales.org/wakes/depot main #cdrom://depot main #disk://var/wkpkg/rep main EOF
configure fstab
sed -i "s%xxxxxxxxx %/dev/mapper/rootvg-lvol0 %; s%yyyyyyyyy %$boot_part %" \ $rootmnt/etc/fstab
do some configuration...
cd $rootmnt/usr/bin && ln -s gcc cc && cd / cd $rootmnt && ln -s /usr usr/X11R6 cd $rootmnt && mkdir usr/share/fonts && \ ln -s /usr/lib/X11/fonts/OTF usr/share/fonts/OTF && \ ln -s /usr/lib/X11/fonts/TTF usr/share/fonts/TTF mkdir -p $rootmnt/usr/lib/X11/xdm print "DisplayManager*userPath: /bin:/usr/bin:/sbin:/usr/sbin" \ >> $rootmnt/usr/lib/X11/xdm/xdm-config print "DisplayManager*systemPath: /bin:/usr/bin:/sbin:/usr/sbin" \ >> $rootmnt/usr/lib/X11/xdm/xdm-config [ -f /usr/bin/i686-pc-linux-gnu-gcc-4.1.2 ] && \ ln -s /usr/bin/i686-pc-linux-gnu-gcc-4.1.2 /usr/bin/gcc
confiigure network
cd $rootmnt/etc/sysconfig/network-devices mkdir ifconfig.eth0 cat << EOF > ifconfig.eth0/ipv4 ONBOOT=yes SERVICE=ipv4-static IP=$ip_address GATEWAY=$gateway PREFIX=$prefix EOF
setup Wakes version
print "0.1" > $rootmnt/etc/wakes_version
install root passsword
print -n "Enter root password: " stty -echo read passwd stty echo print "" crypted=$(crypt $passwd) grep -v '^root:' $rootmnt/etc/passwd > $rootmnt/etc/passwd.tmp print "root:$crypted:0:0:root:/root:/bin/ksh" > $rootmnt/etc/passwd cat $rootmnt/etc/passwd.tmp >> $rootmnt/etc/passwd rm $rootmnt/etc/passwd.tmp
umount $rootmnt/boot
umount $rootmnt/boot
create /dev/console
[ -c $rootmnt/dev/console ] || mknod $rootmnt/dev/console c 5 1
reboot
reboot