Preseed & debian etch

Bonjour à tous,

Je vais tenter de vous exposer mon soucis de façon claire et détaillée…

Je me suis lancé dans l’installation d’un serveur PXE (sous debian etch) pour l’installation par le réseau afin de me faciliter la tache lors d’installation de machines debian etch à la chaine.

Jusque là pas de problème, j’utilise dhcp3-server, tftpd-hpa et j’ai téléchagargé les fichiers necessaires, tout cela fonctionne parfaitement, j’arrive à faire l’installation sans soucis.

Pour encore plus de facilité, j’ai décidé de mettre en place une installation automatique au maximum, j’ai donc tenter de faire cela avec kickstart, dans un premier temps, puis preseed.

Avec kickstart j’ai généré un fichier de préconfiguration grâce à l’interface graphique proposée par le logiciel.
Avec preseed, j’ai modifié légerement le fichier d’exemple, simplement dans le but de tester le bon fonctionnement de cette méthode…

Malheureusement dans les 2 cas, cela ne fonctionne pas, l’installation de debian etch se fait comme si je n’avais pas spécifié de fichier de préconfiguration… j’ai donc lancé un tcpdump sur la machine qui héberge mes scripts KS.cfg et preseed.cfg afin de voir si une requête pour demander le fichier est envoyée… et je ne constate rien du tout de ce style… Le boot ignore completement ma demande de prendre en compte le fichier de préconfiguration.

J’ai tenté pas mal de choses dans le fichier default de pxelinux.cfg mais voici celui qui est le plus simple et qui me parait cohérent :

[code]DISPLAY debian/etch/boot-screens/boot.txt

F1 debian/etch/boot-screens/f1.txt
F2 debian/etch/boot-screens/f2.txt
F3 debian/etch/boot-screens/f3.txt
F4 debian/etch/boot-screens/f4.txt
F5 debian/etch/boot-screens/f5.txt
F6 debian/etch/boot-screens/f6.txt
F7 debian/etch/boot-screens/f7.txt
F8 debian/etch/boot-screens/f8.txt
F9 debian/etch/boot-screens/f9.txt
F0 debian/etch/boot-screens/f10.txt

DEFAULT install

LABEL install
KERNEL debian/etch/linux
APPEND initrd=debian/etch/initrd.gz ks=http://10.0.27.240/debian/ks.cfg –

PROMPT 1
TIMEOUT 0

[/code]

[code]DISPLAY debian/etch/boot-screens/boot.txt

F1 debian/etch/boot-screens/f1.txt
F2 debian/etch/boot-screens/f2.txt
F3 debian/etch/boot-screens/f3.txt
F4 debian/etch/boot-screens/f4.txt
F5 debian/etch/boot-screens/f5.txt
F6 debian/etch/boot-screens/f6.txt
F7 debian/etch/boot-screens/f7.txt
F8 debian/etch/boot-screens/f8.txt
F9 debian/etch/boot-screens/f9.txt
F0 debian/etch/boot-screens/f10.txt

DEFAULT install

LABEL install
KERNEL debian/etch/linux
APPEND initrd=debian/etch/initrd.gz preseed/url=http://10.0.27.240/debian/preseed.cfg –

PROMPT 1
TIMEOUT 0
[/code]

Dans le /var/log/syslog de la machine en cours d’installation, j’ai bien la ligne APPEND qui apparait et elle ne me retourne aucune erreur.

Voici aussi les fichiers ks.cfg et preseed.cfg :

[code]#Generated by Kickstart Configurator
#platform=x86

#System language
lang fr_FR
#Language modules to install
langsupport fr_FR
#System keyboard
keyboard fr
#System mouse
mouse
#System timezone
timezone Europe/Paris
#Root password
rootpw --iscrypted $1$yo6oTI.T$nTLMFYTZmfwtyjZ075lxb1
#Initial user
user secours --fullname “secours” --iscrypted --password $1$HjAxooKS$f/YYPMOikf7oDpihTt0Er1
#Reboot after installation
reboot
#Install OS instead of upgrade
install
#Use Web installation
url --url http://10.0.27.240/debian/
#System bootloader configuration
bootloader --location=mbr
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel
#Disk partitioning information
part /boot --fstype ext2 --size 600
part / --fstype ext2 --size 10000
part /is --fstype ext2 --size 15000
part /datas00 --fstype ext2 --size 12000
part swap --size 2000
#System authorization infomation
auth --useshadow --enablemd5
#Network information
network --bootproto=static --ip=10.0.27.78 --netmask=255.255.255.0 --gateway=10.0.27.1 --nameserver=213.244.0.15 --device=eth0
#Firewall configuration
firewall --disabled
#Do not configure the X Window System
skipx
[/code]

[code]#### Contents of the preconfiguration file

Localization

Locale sets language and country.

d-i debian-installer/locale string fr_FR

Keyboard selection.

#d-i console-tools/archs select at
d-i console-keymaps-at/keymap select fr

Example for a different keyboard architecture

#d-i console-keymaps-usb/keymap select mac-usb-us

Network configuration

netcfg will choose an interface that has link if possible. This makes it

skip displaying a list if there is more than one interface.

d-i netcfg/choose_interface select auto

To pick a particular interface instead:

#d-i netcfg/choose_interface select eth1

If you have a slow dhcp server and the installer times out waiting for

it, this might be useful.

#d-i netcfg/dhcp_timeout string 60

If you prefer to configure the network manually, uncomment this line and

the static network configuration below.

#d-i netcfg/disable_dhcp boolean true

If you want the preconfiguration file to work on systems both with and

without a dhcp server, uncomment these lines and the static network

configuration below.

#d-i netcfg/dhcp_failed note
#d-i netcfg/dhcp_options select Configure network manually

Static network configuration.

#d-i netcfg/get_nameservers string 192.168.1.1
#d-i netcfg/get_ipaddress string 192.168.1.42
#d-i netcfg/get_netmask string 255.255.255.0
#d-i netcfg/get_gateway string 192.168.1.1
#d-i netcfg/confirm_static boolean true

Any hostname and domain names assigned from dhcp take precedence over

values set here. However, setting the values still prevents the questions

from being shown, even if values come from dhcp.

d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

Disable that annoying WEP key dialog.

d-i netcfg/wireless_wep string

The wacky dhcp hostname that some ISPs use as a password of sorts.

#d-i netcfg/dhcp_hostname string radish

Mirror settings

If you select ftp, the mirror/country string does not need to be set.

#d-i mirror/protocol string ftp
d-i mirror/country string enter information manually
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

Suite to install.

#d-i mirror/suite string testing

Suite to use for loading installer components (optional).

#d-i mirror/udeb/suite string testing

Partitioning

If the system has free space you can choose to only partition that space.

Note: this must be preseeded with a localized (translated) value.

#d-i partman-auto/init_automatically_partition \

select Guided - 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:

d-i partman-auto/disk string /dev/discs/disc0/disc

In addition, you’ll need to specify the method to use.

The presently available methods are: “regular”, “lvm” and “crypto”

d-i partman-auto/method string lvm

If one of the disks that are going to be automatically partitioned

contains an old LVM configuration, the user will normally receive a

warning. This can be preseeded away…

d-i partman-auto/purge_lvm_from_device boolean true

And the same goes for the confirmation to write the lvm partitions.

d-i partman-lvm/confirm boolean true

You can choose from any of the predefined partitioning recipes.

Note: this must be preseeded with a localized (translated) value.

d-i partman-auto/choose_recipe
select All files in one partition (recommended for new users)
#d-i partman-auto/choose_recipe \

select Separate /home partition

#d-i partman-auto/choose_recipe \

select Separate /home, /usr, /var, and /tmp partitions

Or provide a recipe of your own…

The recipe format is documented in the file devel/partman-auto-recipe.txt.

If you have a way to get a recipe file into the d-i environment, you can

just point at it.

#d-i partman-auto/expert_recipe_file string /hd-media/recipe

If not, you can put an entire recipe into the preconfiguration 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 :: \

40 50 100 ext3 \

$primary{ } $bootable{ } \

method{ format } format{ } \

use_filesystem{ } filesystem{ ext3 } \

mountpoint{ /boot } \

. \

500 10000 1000000000 ext3 \

method{ format } format{ } \

use_filesystem{ } filesystem{ ext3 } \

mountpoint{ / } \

. \

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/Eastern

Apt setup

You can choose to install non-free and contrib software.

#d-i apt-setup/non-free boolean true
#d-i apt-setup/contrib boolean true

Uncomment this if you don’t want to use a network mirror.

#d-i apt-setup/use_mirror boolean false

Uncomment this to avoid adding security sources, or

add a hostname to use a different server than security.debian.org.

#d-i apt-setup/security_host string

Additional repositories, local[0-9] available

#d-i apt-setup/local0/repository string \

deb http://local.server/debian stable main

#d-i apt-setup/local0/comment string local server

Enable deb-src lines

#d-i apt-setup/local0/source boolean true

URL to the public key of the local repository; you must provide a key or

apt will complain about the unauthenticated repository and so the

sources.list line will be left commented out

#d-i apt-setup/local0/key string http://local.server/key

By default the installer requires that repositories be authenticated

using a known gpg key. This setting can be used to disable that

authentication. Warning: Insecure, not recommended.

#d-i debian-installer/allow_unauthenticated string true

Account setup

Skip creation of a root account (normal user account will be able to

use sudo).

#d-i passwd/root-login boolean false

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 [MD5 hash]

To create a normal user account.

#d-i passwd/user-fullname string Debian User
#d-i passwd/username string debian

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]

Base system installation

Select the initramfs generator used to generate the initrd for 2.6 kernels.

#d-i base-installer/kernel/linux/initramfs-generators string yaird

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 it also finds some other

OS, 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/only_debian boolean false
#d-i grub-installer/with_other_os boolean false
#d-i grub-installer/bootdev string (hd0,0)

To install grub to multiple disks:

#d-i grub-installer/bootdev string (hd0,0) (hd1,0) (hd2,0)

Package selection

tasksel tasksel/first multiselect standard, desktop
#tasksel tasksel/first multiselect standard, web-server
#tasksel tasksel/first multiselect standard, kde-desktop

Individual additional packages to install

#d-i pkgsel/include string openssh-server build-essential

Some versions of the installer can report back on what software you have

installed, and what software you use. The default is not to report back,

but sending reports helps the project determine what software is most

popular and include it on CDs.

#popularity-contest popularity-contest/participate boolean false

Finishing up the first stage install

Avoid that last message about the install being complete.

d-i finish-install/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

Advanced options

Running custom commands during the installation

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

preconfiguration file like this one. Only use preconfiguration 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. You can chroot to /target and use it

directly, or use the apt-install and in-target commands to easily install

packages and run commands in the target system.

#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh

[/code]

A noter que j’ai mis les droits 777 et +x à ces 2 fichiers.

Merci d’avance pour vos réponses

:smt006