Nethence Newdoc Olddoc Lab Your IP BBDock  

Warning: those guides are mostly obsolete, please have a look at the new documentation.


unattended@sf usage and configuration on RHEL5
Update: this guide is considered obsolete, we're now using WinPE (
We don't like unattended@sf, we prefer to use our own scripts ( to install Windows XP automaticly. But here's the guide for using it with RHEL5 anyway.
Applications only
If you only want to install applications on an existing Windows sytem, follow only tose parts:
- Installation
- Scripts
- Samba configuration
then map Z: to \\server\install, add z:\bin to your path, define winlang and run the batch scripts from z:\scripts.
Here's a few hints:
- best is to configure two network interfaces, one on your local network and one for serving PXE separately.
- normally we should configure a dns record so that 'ntinstall' points to the samba share. But you can also skip this step, here we simply force the samba server IP in the PXE configuration (z_path).
- you'll need quite a large mount point store the third-parity install packages (~7GB if you want all of them).
- be careful, depending on your level of automation (see below) you have to be careful to what subnet of yours you'll plug this PXE monster in.
Make sure you've got those available,
rpm -q \
xinetd \
tftp-server \
syslinux \
dhcp \
samba \
samba-client \
perl \
Note. no need for 'named', as mentioned in the introduction here.
Note. we're assuming quite a large moint point at /srv/ (see specifications above).
Fetch Unattended ( and extract the archives,
cd /srv/
ln -sf unattended-4.9 unattended
Make a symlink to easyness,
cd ~/
ln -s /srv/unattended/install
Preparing the i386 folder
Copy the i386 directory from the Windows XP Pro SP2 or SP3 CDrom or ISO to the install/os share,
cd /srv/
cp path/to/share/winxp_pro_fr_sp2.iso .
mkdir -p winxp/
mount -o loop winxp_pro_fr_sp2.iso winxp/
mkdir -p ~/install/os/winxp/
cp -R winxp/i386/ ~/install/os/winxp/
umount winxp/
Unattended provides way to much application scripts (and you feel it when you download the packages) so get rid of everything but Perl,
cd ~/install/
mv scripts/ scripts.dist/
mkdir -p scripts/
cd scripts/
cp ../scripts.dist/perl.bat .
and define precisely the applications you want e.g.,
cp ../scripts.dist/firefox.bat .
cp ../scripts.dist/putty.bat .
cp ../scripts.dist/spybot.bat .
cp ../scripts.dist/thunderbird.bat .
wget -O - \
| sed '/^{{{/d; /^}}}/d; /^==/d' > filezilla.bat
wget -O - \
| sed '/^{{{/d; /^}}}/d; /^==/d' > WinRar.bat
Ref. the last ones come from
Update the scripts you selected (otherwise you might have lots of 404's while fetching them),
cd ~/install/tools/
Now download the language specific (here French) packages for the choosed applications,
cd ~/install/tools/
./prepare FRA
Note. ENU (English) is the default
See if some packages are missing (they shouldn't, since we updated the scripts),
cd ~/install/tools/
./check FRA
Note. ENU (English) is the default
Samba configuration
Configure Samba to share the install folder with login and password 'guest' e.g.,
cd /etc/samba/
mv smb.conf smb.conf.dist
#sed '/^[[:space:]]*#/d; /^[[:space:]]*;/d; /^[[:space:]]*$/d' smb.conf.dist > smb.conf
like (Samba 3.0.33 on RHEL),
server string = Samba Server Version %v
security = SHARE
passdb backend = tdbsam
load printers = No
cups options = raw
comment = unattended
path = /srv/unattended/install
guest only = Yes
guest ok = Yes
Note. 'public = yes' is the same as 'guest ok = yes'
Note. 'security = yes' plus 'guest only = yes' skips authentication (see the smb.conf manual)
Create and setup a password for the guest account,
groupadd guest
useradd -s /sbin/nologin -g guest guest
smbpasswd -a guest
smbpasswd -n guest
Note. we're not using 'username map' (/etc/samba/smbusers)
Start and enable the daemon at boot,
testparm -s
tail -F /var/log/samba/*
service smb restart
service smb status
chkconfig smb on
Check you're able to connect with as guest user,
smbclient -U guest -L
also check from a windows XP host,
start > execute
PXE configuration
Proceed with a usual PXE configuration (,
cd /etc
vi dhcpd.conf
allow bootp;
ddns-update-style none;
allow unknown-clients;
subnet netmask {
filename "pxelinux.0";
Serve the Unattended kernel and initrd. Copy the templates,
cp -R /srv/unattended/linuxboot/tftpboot/* /tftpboot
cd /tftpboot
change the boot options to point directly to your windows share w/o DNS and define your keyboard,
cd /tftpboot/pxelinux.cfg
vi default
default menu.c32
prompt 0
menu title PXE
kbdmap fr.kbd
label unattended
menu label unattended
kernel bzImage
append initrd=initrd z_user=guest z_pass=guest z_path=//
Enable TFTP,
cd /etc/xinetd.d
vi tftp
server_args = -s /tftpboot
disable = no
Unattended configuration
For a fully automated installation, we will simply use untattend.txt for most of the settings, then just for a few other ones.
First unattend.txt,
cd ~/install/site
vi unattend.txt
note. unattend.txt in DOS text format (dos2unix...)
note. it installs various applications : firefox, putty, ... (unattended scripts called with middle=)
note. w/o winamp.bat, it has troubbles removing eMusic
note. w/o winzip.bat, it also has troubbles, using 7-zip instead
note. this examples needs that custom script (called with top=),
cd ~/install/scripts
note. 0custom.bat in DOS text format (dos2unix...)
Manually download missing packages. As for 0.49 with our untattend.txt, PuTTY is missing,
cd ~/install/packages/putty
Then (worgroup doesn't work into untattend.txt, donno why),
cd ~/install/site
mv unattend.csv unattend.csv.dist
$u->{'Identification'}->{'JoinWorkgroup'} = 'WORKGROUP';
$u->{'UserData'}->{'ProductKey'} =
sub {
my $media_obj = Unattend::WinMedia->new ($u->{'_meta'}->{'OS_media'});
my $os_name = $media_obj->name ();
if ($os_name =~ /Windows XP/) {
return 'XP KEY';
elsif ($os_name =~ /Windows Server 2003/) {
return '2K3 KEY';
return undef;
$u->{'UserData'}->{'ProductID'} =
sub {
my $media_obj = Unattend::WinMedia->new ($u->{'_meta'}->{'OS_media'});
my $os_name = $media_obj->name ();
if ($os_name =~ /Windows 2000/) {
return '2K KEY';
elsif (defined $u->{'UserData'}->{'ProductKey'}) {
# It is OK for us to return undef as long as there is a
# ProductKey.
return undef;
die "No ProductKey nor ProductID!";
Note. change XX KEY accordingly
Additional drivers
Add third-parity drivers to your windows installation,
#cd ~/install/tools
#chmod +x
#./ /srv/unattended/install/os/winxp
cd ~/install/os/winxp/I386
mkdir -p \$oem\$/\$1/drivers
cd ..
ln -s I386/\$oem\$/\$1/drivers
mkdir -p drivers/nic
mv ~/nic/Netrtle.inf drivers/nic
mv ~/nic/Rtenic.sys drivers/nic
mv ~/nic/Rtenic64.sys drivers/nic
mv ~/nic/Rtenicxp.sys drivers/nic
mv ~/nic/ drivers/nic
Also edit unattend.txt,
DriverSigningPolicy = Ignore
OemPreinstall = Yes
OemFilesPath = "..\$OEM$"
OemPnPDriversPath = Drivers\NIC
Ready to go
Start and enable the daemons,
service dhcpd restart
service smb restart
service xinetd restart
#service named restart
chkconfig dhcpd on
chkconfig smb on
chkconfig xinetd on
#chkconfig named on
Boot the workstation(s) with PXE -- be careful -- it will automaticly erase everything and install Windows without even asking. Once the installations are finished, don't forget to unplug the PXE server from your network. 
Update procedure
Just like for installation but overwrite the symlink,
cd /srv
ln -sf unttended-new unattended
move the install/os share AND FREE SOME SPACE,
mv unattended-old/install/os/* unattended/install/os
rm -rf unattended-old
and proceed with the script updates.
Update the linuxboot kernel, initrd and syslinux,
cd /tftpboot
rm -f bzImage initrd menu.c32 pxelinux.0
cd /srv/unattended/linuxboot/tftpboot
cp -f bzImage initrd menu.c32 pxelinux.0 /tftpboot
No further changes are required.
References (application only)
References (other)
References (mail archive)
References (M$)

(obsolete, see the new doc)