suggested framework for mass installation w/dapper?

Scott Dier dieman at ringworld.org
Thu Jun 8 15:11:22 BST 2006


I *was* using fai, and have information for it available if you need it, 
but I'd recommend using preseed.  I've attached a santatized file that 
I've been using with Dapper.  It does ask what you want to do with the 
disk (ie: use free space or erase the disk)  You can automate that 
further if you like.   If you look at the alternate installer 
documentation (I believe theres a copy on the CD image, but I don't 
remember) it has information on how to boot with a preseed file.  You'd 
be best off setting up dhcp and providing the information via pxelinux 
(editing the netboot pxelinux conifguration) or booting off a usb stick 
or CD and providing the information to d-i through dhcp.

I'm experimenting with using my mirror to generate new Packages files 
with additional tasks defined in the overrides files. The new Packages 
files would (definately without a doubt) not be in the /ubuntu tree just 
in case anyone is about ready to start hyperventilating.  I'm going to 
have my own local branch of /dists that is stored in another, password 
protected, directory with a symlink to ubuntu -- all of the operations 
being done by a non-related username to the mirroring process so its 
impossible for me to alter the 'official' archive. I don't want to wait 
for launchpad to end up with a similar feature, and anyhow I want it on 
my local mirror. ;)  If I'm successful I'll post details to the wiki on 
how to complete the process.

It may be interesting as a simple command can then be used to update 
packages on remote machines to add new 'systemwide' software rather than 
having to instruct people to install specific packages through synaptic, 
etc.

Theres also a bug in preseeding at the moment (I think still) that 
causes multiline entries to break the installer -- you'll need to 
consolidate them into single line entries.

Thanks,

sean finney wrote:
> hi folks,
> 
> i'll soon be faced with the need of installing a number of (mostly laptop)
> clients with a gnu/linux platform as a "standard client" type image for
> my current $employer.  as dapper just came out, i'd like to base it off
> of this if possible, but for this to be realistic i'll need a certain
> amount of automation and customization support.
> 
> so, i'm wondering who else is doing this and how.  i know of FAI, but the
> wiki docs seem a little dusty (hoary?).  i see there's an "OEM installer",
> which also looks promising but from the description i wonder if there's
> any way to automate the process.   is there perhaps another option i
> don't know of?  is it at all possible to just drop some hooks into one
> of the standard installers?
> 
> 
> thanks,
> 	sean
> 
> 


-- 
Scott Dier <dieman at ringworld.org>
-------------- next part --------------
### Mirror settings
d-i mirror/country string enter information manually
d-i mirror/http/hostname string mirror.cs.umn.edu
d-i mirror/http/directory string /ubuntu
d-i mirror/http/proxy string
d-i apt-setup/security_host string mirror.cs.umn.edu

### Partitioning
# If the system has free space you can choose to only partition that space.
#d-i partman-auto/init_automatically_partition select Use the largest continuous free space

# Alternatively, you can specify a disk to partition. The device name can
# be given in either devfs or traditional non-devfs format.
# For example, to use the first disk devfs knows of:
#d-i partman-auto/disk string /dev/discs/disc0/disc

# If not, you can put an entire recipe the preseed file in one (logical)
# line. This example creates a small /boot partition, suitable swap, and
# uses the rest of the space for the root partition:

d-i partman-auto/expert_recipe string                               boot-root ::                                                          8000 10000 15000 ext3                                                        $primary{ } $bootable{ }                                      method{ format } format{ }                                    use_filesystem{ } filesystem{ ext3 }                          mountpoint{ / }                                   .                                                             100 5000 1000000000 ext3                                             method{ format } format{ }                                    use_filesystem{ } filesystem{ ext3 }                          mountpoint{ /export/scratch }                                       .                                                             64 512 300% linux-swap                                               method{ swap } format{ }                              .

# This makes partman automatically partition without confirmation.
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman/confirm boolean true

### Clock and time zone setup
# Controls whether or not the hardware clock is set to UTC.
d-i clock-setup/utc boolean true

# You may set this to any valid setting for $TZ; see the contents of
# /usr/share/zoneinfo/ for valid values.
d-i time/zone string US/Central

### Apt setup
# You can choose to install restricted and universe software, or to install
# software from the backports repository.
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i     apt-setup/multiverse    boolean true
#d-i apt-setup/backports boolean true

### Account setup
# Skip creation of a root account (normal user account will be able to
# use sudo). The default is false; preseed this to true if you want to set
# a root password.
d-i passwd/root-login boolean true
# Alternatively, to skip creation of a normal user account.
d-i passwd/make-user boolean false

# Root password, either in clear text
#d-i passwd/root-password password r00tme
#d-i passwd/root-password-again password r00tme
# or encrypted using an MD5 hash.
d-i passwd/root-password-crypted password 

# Alternatively, create a normal user account.
#d-i passwd/user-fullname string Ubuntu User
#d-i passwd/username string ubuntu
# Normal user's password, either in clear text
#d-i passwd/user-password password insecure
#d-i passwd/user-password-again password insecure
# or encrypted using an MD5 hash.
#d-i passwd/user-password-crypted password [MD5 hash]

### Boot loader installation
# Grub is the default boot loader (for x86). If you want lilo installed
# instead, uncomment this:
#d-i grub-installer/skip boolean true

# This is fairly safe to set, it makes grub install automatically to the MBR
# if no other operating system is detected on the machine.
d-i grub-installer/only_debian boolean true

# This one makes grub-installer install to the MBR if if finds some other OS
# too, which is less safe as it might not be able to boot that other OS.
d-i grub-installer/with_other_os boolean true

# Alternatively, if you want to install to a location other than the mbr,
# uncomment and edit these lines:
#d-i grub-installer/bootdev  string (hd0,0)
#d-i grub-installer/only_debian boolean false
#d-i grub-installer/with_other_os boolean false

### Package selection
# The default is:
d-i pkgsel/install-pattern string (~t^ubuntu-standard$|~t^ubuntu-desktop$|~n^xpdf$|~n^xpdf-utils$|~n^avahi-daemon$|~n^gstreamer0.10-fluendo-mp3$|~n^gnumeric$|~n^beagle$|~n^deskbar-applet$|~n^beagle-backend-evolution$|~n^tomboy$|~n^f-spot$|~n^inkscape$|~n^qcad$|~n^sodipodi$|~n^glabels$|~n^kino$|~n^vlc$|~n^xine-ui$|~n^mozilla-mplayer$|~n^sun-java5-jdk$|~n^sun-java5-source$|~n^abiword-gnome$|~n^abiword-help$|~n^build-essential$|~n^anjuta$|~n^aterm$|~n^aumix$|~n^autoconf$|~n^automake$|~n^autotools-dev$|~n^biff$|~n^bison$|~n^bluefish$|~n^calc$|~n^cdda2wav$|~n^cddb$|~n^cdtool$|~n^cflow$|~n^classpath-common$|~n^cvs$|~n^cscope$|~n^ddd$|~n^ddd-doc$|~n^dia-gnome$|~n^dict$|~n^dmalloc$|~n^doc-linux-text$|~n^electric-fence$|~n^enscript$|~n^ethereal$|~n^fftw3-dev$|~n^finger$|~n^flex$|~n^fvwm$|~n^fvwm95$|~n^gawk$|~n^gcombust$|~n^ghex$|~n^gtetrinet$|~n^pan$|~n^regexxer$|~n^seahorse$|~n^gnuplot$|~n^gnus$|~n^groff$|~n^gv$|~n^hfsutils$|~n^iamerican$|~n^wamerican$|~n^spell$|~n^imagemagick$|~n^indent$|~n^iptraf$|~n^joe$|~n^jpilot$|~n^metamail$|~n^minicom$|~n^mlock$|~n^mozilla-browser$|~n^mpage$|~n^mpatrol$|~n^mpg321$|~n^planner$|~n^mtools$|~n^nano$|~n^ncftp$|~n^nmap$|~n^psutils$|~n^rcs$|~n^rxvt$|~n^sox$|~n^snmp$|~n^splint$|~n^tetex-bin$|~n^tetex-extra$|~n^texinfo$|~n^textutils$|~n^ttf-thryomanes$|~n^units$|~n^whois$|~n^workrave$|~n^xemacs21$|~n^xfig$|~n^xlockmore$|~n^xmms$|~n^xplanet$|~n^xplanet-images$|~n^mozilla-thunderbird$|~n^a2ps$|~n^fluxbox$|~n^nethack-gnome$|~n^nvi$|~n^pcregrep$|~n^rstatd$|~n^slib$|~n^libgsl0-dev$|~n^mplayer-fonts$|~n^vim$|~n^vim-gnome$|~n^wine$|~n^xmeter$|~n^rdist$|~n^pidentd$|~n^rsh-client$|~n^rsh-server$|~n^eterm$|~n^mc$|~n^lyx$|~n^nn$|~n^pdksh$|~n^sawfish$|~n^slrn$|~n^tcl8.4$|~n^tk8.4$|~n^nfs-kernel-server$|~n^bin86$|~n^libmailtools-perl$|~n^autofs$|~n^nis$|~n^nfs-common$|~n^cfengine$|~n^pine$|~n^libmikmod2$|~n^g77$|~n^g77-doc$|~n^gcc-doc$|~n^pinfo$|~n^ntp-simple$|~n^doxygen$|~n^doxygen-doc$|~n^doxygen-gui$|~n^graphviz$|~n^tcsh$|~n^classpath$|~n^fakeroot$|~n^gs$|~n^gtk2-engines-crux$|~n^gtk2-engines-lighthouseblue$|~n^jade$|~n^libelfg0-dev$|~n^libpam-passwdqc$|~n^mozilla-psm$|~n^psfontmgr$|~n^pymacs$|~n^tcptraceroute$|~n^twm$|~n^vorbis-tools$|~n^smartmontools$|~n^wmcalclock$|~n^memprof$|~n^mplayer$|~n^acroread$|~n^acroread-plugins$|~n^slrn$|~n^bin86$|~n^openssh-server$|~n^dcraw$|~n^gpdf$|~n^im-switch$|~n^kinoplus$|~n^libtool$|~n^fvwm-icons$|~n^python-beagle$|~n^915resolution$|~n^aspell-bin$|~n^automake1.7$|~n^automake1.8$|~n^automake1.9$|~n^debconf-utils$|~n^debhelper$|~n^dmalloc$|~n^docbook$|~n^docbook-dsssl$|~n^esound-clients$|~n^fetchmail$|~n^freeglut3-dev$|~n^gftp-gtk$|~n^irssi-text$|~n^lprng$|~n^postfix$|~n^libboost-dev$|~n^libboost-date-time-dev$|~n^libboost-filesystem-dev$|~n^libboost-graph-dev$|~n^libboost-regex-dev$|~n^libboost-signals-dev$|~n^libboost-test-dev$|~n^libboost-thread-dev$|~n^libdb1-compat$|~n^libdb2$|~n^libdb4.1$|~n^libdb4.2$|~n^libdb4.2++$|~n^libmotif-dev$|~n^libncurses5-dev$|~n^libgnome2-dev$|~n^libsigc++-1.2-5c102$|~n^libsigc++-2.0-0$|~n^libstdc++6-0$|~n^x-dev$|~n^links$|~n^lsb$|~n^lynx$|~n^mailx$|~n^manpages-dev$|~n^manpages-posix$|~n^manpages-posix-dev^|~n^mozilla-mplayer$|~n^mplayer$|~n^mrproject$|~n^mutt$|~n^netkit-inetd$|~n^perl-doc$|~n^procmail$|~n^pwgen$|~n^python-gdchart$|~n^python-opengl$|~n^python-twisted$|~n^quota$|~n^spim$|~n^subversion$|~n^transfig$|~n^ttf-arphic-bkai00mp$|~n^ttf-arphic-bsmi00lp$|~n^ttf-arphic-gbsn00lp$|~n^ttf-arphic-gkai00mp$|~n^unison$|~n^unison-gtk$|~n^xchat$|~n^zlib1g-dev$)!(~n^cupsys$|~n^cupsys-client$|~n^cupsys-bsd$|~n^cupsys-driver-gimpprint$|~n^update-notifier$|~n^update-manager$|~n^cupsys-driver-gimpprint-data$|~n^hplip$|~n^xlibs$|~n^brltty$|~n^hplip-data$|~n^bluez-cups$|~n^cupsys-driver-gutenprint$|~n^gnome-app-install$|~n^app-install-data$|~n^app-install-data-commercial|~n^brltty$|~n^brltty-x11$|~n^hplip-data$|~n^pcmcia-cs$|~n^ubuntu-desktop$|~n^unattended-upgrades$)


# ... but you could choose something different, such as:
#d-i pkgsel/install-pattern string ~t^ubuntu-standard$|~n^openssh-server$

# You can also choose to set this to the empty string, and force the
# installation of a set of packages in some other way.

### Finishing up the first stage install
# Avoid that last message about the install being complete.
d-i prebaseconfig/reboot_in_progress note

# This will prevent the installer from ejecting the CD during the reboot,
# which is useful in some situations.
#d-i cdrom-detect/eject boolean false

### X configuration
# X can detect the right driver for some cards, but if you're preseeding,
# you override whatever it chooses. Still, vesa will work most places.
#xserver-xorg xserver-xorg/config/device/driver select vesa

# A caveat with mouse autodetection is that if it fails, X will retry it
# over and over. So if it's preseeded to be done, there is a possibility of
# an infinite loop if the mouse is not autodetected.
#xserver-xorg xserver-xorg/autodetect_mouse boolean true

# Monitor autodetection is recommended.
xserver-xorg xserver-xorg/autodetect_monitor boolean true
# Uncomment if you have an LCD display.
#xserver-xorg xserver-xorg/config/monitor/lcd boolean true
# X has three configuration paths for the monitor. Here's how to preseed
# the "medium" path, which is always available. The "simple" path may not
# be available, and the "advanced" path asks too many questions.
#xserver-xorg xserver-xorg/config/monitor/selection-method select medium
#xserver-xorg xserver-xorg/config/monitor/mode-list select 1024x768 @ 60 Hz

### Preseeding other packages
# Depending on what software you choose to install, or if things go wrong
# during the installation process, it's possible that other questions may
# be asked. You can preseed those too, of course. To get a list of every
# possible question that could be asked during an install, do an
# installation, and then run these commands:
#   debconf-get-selections --installer > file
#   debconf-get-selections >> file

slrn shared/mailname string cs.umn.edu
slrn shared/news/server string newsstand.tc.umn.edu
nis nis/domain string 
sun-java5-jdk   shared/accepted-sun-dlj-v1-1    boolean true
sun-java5-jre   shared/accepted-sun-dlj-v1-1    boolean true

#### Advanced options
### Shell commands
# d-i preseeding is inherently not secure. Nothing in the installer checks
# for attempts at buffer overflows or other exploits of the values of a
# preseed file like this one. Only use preseed files from trusted
# locations! To drive that home, and because it's generally useful, here's
# a way to run any shell command you'd like inside the installer,
# automatically.

# This first command is run as early as possible, just after
# preseeding is read.
#d-i preseed/early_command string anna-install some-udeb

# This command is run just before the install finishes, but when there is
# still a usable /target directory.
#d-i preseed/late_command string echo foo > /target/etc/bar

di preseed/late_command string [commands go here, generally chrooted in /target]

# remember to fixperms/ownership/etc
# fix resolv.conf search path?

# This command is run just as base-config is starting up.
#base-config base-config/early_command string echo hi mom

# This command is run after base-config is done, just before the login:
# prompt. This is a good way to install a set of packages you want, or to
# tweak the configuration of the system.
#base-config base-config/late_command \
#      string apt-get install zsh; chsh -s /bin/zsh



More information about the ubuntu-devel mailing list