This document is part of Unattended, a Windows deployment system.


Introduction

The main Unattended documentation is perpetually out-of-date. It is still mostly accurate, but it is incomplete because we tend to add new features without updating the docs.

Someday I (or somebody) will crack and rewrite the documentation from scratch. Until then, this page will have to suffice. It is partly a Frequently Asked Questions (FAQ) list, and partly just a collection of pointers to bits of wisdom from the unattended-info mailing list.

Did you say "Linux boot disk"?

Why, yes, I did. And if you are using it, you should definitely read this section.

Traditionally, Unattended had you boot to DOS to start the installation of Windows. And most of our documentation was written with this approach in mind.

It works fine, usually, but DOS has certain limitations which we avoid by using Linux.

Starting with Unattended 4.0, we are shipping a Linux boot disk in addition to the DOS boot disk. Note that this is not for installing Linux; we are simply booting a custom diskless Linux system to initiate the installation of Windows. The Linux boot disk is very new and our documentation has not been updated for it, but it works a lot like the DOS boot disk. It runs the same Perl code, in fact, which we think is kind of neat. At present, it only supports booting from CD-ROM (using the linuxboot/linuxboot.iso image) or network (using the linuxboot/tftpboot tree).

You can upgrade a pre-4.0 version of Unattended to use the Linux boot disk by just copying some new stuff to the Z: drive.

If you are booting from the network, you can override the bootdisk defaults (Z: share, username, password) by editing pxelinux.cfg/default or by setting DHCP option 233.

If you are using Samba 3.x as your Unattended server, you probably want to set unix extensions to off. See this message for details.

Is the Linux boot disk actually supposed to work?

Yes, and if it does not work for you, we are very interested in fixing it. The boot disk uses Linux kernel 2.6, which is still maturing.

One common problem is with ACPI support in Linux, which is under very active development. If the boot disk has trouble with your hardware, try booting with ACPI support disabled. Hold down the Shift key while booting, which will present a boot: prompt. Then type unattended acpi=off and press Enter. If this helps, the bug is in the Linux ACPI support and we would like to report it to the Linux developers. (We would disable ACPI by default, but then some hardware would not work at all.)

Also try using noapic or nolapic instead of (or in addition to) acpi=off. These disable the 2.6 kernel's new APIC and "local APIC" support, which may help in rare cases.

If none of these work, perhaps your network or mass storage hardware is not yet supported by our boot disk. Usually, this just means our code to detect hardware and load drivers needs tweaking, since Linux itself has fairly broad hardware support. But we need somebody who actually has the hardware to report a problem and test our fixes, so please let us know.

Another common problem is with case sensitivity, especially if you have RequireSecuritySignature enabled on your file server (as Windows Server 2003 does by default). The usual symptom is that the installation script is unable to find any OS directories, because the files within have names like I386\TXTSETUP.SIF instead of i386\txtsetup.sif. The solution is to rename all of the files on the installation media to lower case. The lower-caseify.pl script automates this.

Is the DOS boot disk supposed to crash?

Not usually.

Starting with version 4.0 of Unattended, we switched from MS-DOS to FreeDOS. Apart from general principles (we like free software), this avoids potential legal issues. But FreeDOS is still under development, and it occasionally has difficulty with some hardware.

The UMB provider in particular can be somewhat touchy. Try editing config.sys to comment out the loading of EMM386.EXE, or to load UMBPCI.SYS instead. Commenting out both is the most reliable path, but it may leave insufficient conventional memory for the Windows installer to run.

Why is the mailing list so slow?

Two reasons. But probably because your message "smells like spam" and got held for manual approval.

The two most common causes are:

  1. Sending HTML (or text+HTML multipart) messages. SpamAssassin prefers simple text.
  2. Not including a full name in the From header. SpamAssassin likes From: "Patrick J. LoPresti" <patl@users.sourceforge.net> and dislikes From: patl@users.sourceforge.net.

I am having trouble mapping the install share.

The install share must be an actual share like \\server\install, not a subfolder like \\server\install\subfolder.

With the DOS boot disk, you must use a NetBIOS (or WINS) name for the server, not a DNS name nor IP address. This is a limitation of the MSCLIENT network stack; if you figure out how to fix it, let us know. (Loading dnr.exe does not seem to help).

With the Linux boot disk, it is the other way around; you must use a DNS name or IP address, not a NetBIOS name. We can change this pretty easily, so let us know if it bothers you.

I get "No system disk or disk error" when I boot from CD-ROM or network using the DOS boot disk.

This usually happens on laptops without a floppy drive. Our CD-ROM (and PXE) DOS boot uses a "virtual floppy" provided by memdisk, so you must enable floppy disk support in your BIOS even if you have no physical drive.

The Toshiba Tecra S1 has an additional problem: You must disable "USB legacy floppy emulation" before memdisk will work. See this thread and this message from the mailing list.

Can I use Cygwin to rebuild the disk images on Windows?

For the DOS boot disk, yes.

For the Linux boot disk, no. Probably not, anyway.

Can I boot from a USB flash drive (memory key)?

Yes, using the Linux-based boot disk. (To USB-boot the DOS disk, see Eugene's instructions.)

I got this working on a 256M Sandisk Cruzer Mini, but the procedure should be the same for any USB drive.

I used a Linux machine to prep the drive. You can probably use a Windows machine to do all of this stuff; if you figure it out, feel free to let us know and we will update these instructions.

First, I needed to repartition and reformat the drive, because the original partition table was an unholy mess which confused the boot loader. I plugged the drive into my RedHat 9 Linux machine and used "dmesg" to see that it was autoprobed as /dev/sda. (It may have a different name on your system, especially if you already have SCSI disks.) Then I ran:

    parted /dev/sda mklabel msdos
    # Use double-dash to prevent Parted from treating -0 as a switch
    parted -- /dev/sda mkpartfs primary fat16 0 -0
    parted /dev/sda set 1 boot on

These commands blow away the existing partition table, create and format a new FAT16 partition spanning the entire drive, and mark that partition "active" (bootable), respectively. Obviously, I used Parted; you could presumably use fdisk and mkdosfs instead.

Then I wrote a script (install-mbr.pl) to replace the Master Boot Record. This script is in the linuxboot/tools directory of the Unattended distribution. Just about any MBR should work, but I installed the one from FreeDOS:

    cd .../unattended-4.1/linuxboot
    tools/install-mbr.pl misc/freedos-mbr.bin /dev/sda

Next, I ran the SYSLINUX installer on the drive:

    syslinux /dev/sda1

The SYSLINUX distribution includes an installer which will run under Linux, DOS, and Windows. Well, three different installers, actually... But they do the same thing, which is to install the SYSLINUX boot sector and the LDLINUX.SYS auxiliary file onto the drive.

Finally, I copied bzImage, initrd, and the PXELINUX configuration file from the Linux-based boot disk to the USB stick:

    mount /dev/sda1 /mnt
    cd .../unattended-4.1/linuxboot
    cp tftpboot/{bzImage,initrd} /mnt
    cp tftpboot/pxelinux.cfg/default /mnt/syslinux.cfg
    umount /mnt

The penultimate step renames pxelinux.cfg/default to syslinux.cfg. This is because PXELINUX and SYSLINUX use different names for their configuration files, although the files have essentially the same syntax; see the SYSLINUX documentation for details.

To actually use the bootable USB key, your BIOS must support booting from USB hard drives (not just floppy drives). Generally, desktops from 2003 or later and laptops from 2004 or later have this support, while earlier machines may or may not. Consult your BIOS documentation or ask your system vendor.

Can I use todo.pl to install applications without installing the OS?

Yes, although not as easily as we would like. I use this procedure. See also this thread on the mailing list.

Can I install over a wireless LAN?

Yes, with the help of a commercial product.

Adding wireless support to our (free) DOS boot disk would be difficult, because as far as I know, there are no wireless drivers for DOS.

Adding wireless support to our Linux boot disk is a Simple Matter of Programming, at least for the wireless devices which Linux supports. Call it a "to-do" item. The hard part is designing and implementing an interface to let the user set the wireless parameters (like ESSID). If you would like to help tackle this, subscribe to the unattended-devel mailing list and ask what's up.

Can I install Windows NT?

Not right now. Patches are welcome.

Can I install Windows 95/98/ME?

No, and I think this would be hard. Some interest has been expressed on the mailing list.

Can I use a serial console?

Yes, using either the DOS-based or the Linux-based boot disk.

Can I install from DVD-ROM instead of a network share?

We are interested in adding support for this. See this thread from the mailing list, especially this followup from Pablo Manzanera. Patches are welcome...

Why do you always install IIS?

We have reasons. You can disable it by adding these lines to Z:\site\unattend.txt:

[Components]
    ; Do not install IIS
    iis_common=Off
    iis_inetmgr=Off
    iis_www=Off
    iis_pwmgr=Off
    iis_doc=Off

How do I enable the Windows XP Internet Connection Firewall?

The instructions for this are somewhat confusing, and I have not yet had time to try them myself. The question comes up on the mailing list from time to time.

Searching for [Homenet] and InternetConnectionFirewall on Google Web and Groups turns up some slightly contradictory information.

How do I add a TCP/IP (LPD) printer from a script?

With Windows 2000 and higher, and assuming your printers support it, you can use the Internet Printing Protocol (IPP) instead of LPD. This lets you use an HTTP URL to specify the printer. Most modern network printers support IPP.

I once made a USENET post describing how to configure an HP LaserJet 4050 automatically.

Why do you reboot so many times instead of using QChain?

Because Pat does not trust QChain.

How do I control the volume (disable sound) unattended?

See this thread and this message from the mailing list.

How do I add multiple third-party mass-storage drivers?

This comes up on the mailing list now and then. At the moment, you must have a good understanding of TXTSETUP.OEM files, because you must create one by hand which incorporates all of your drivers. Writing a tool to help automate this is on our to-do list.

Is FAT -> NTFS conversion a bad idea?

As Microsoft describes in "NTFS Preinstallation and Windows XP", FAT -> NTFS conversion normally results in a file system with 512-byte clusters and a fragmented Master File Table (MFT).

With Windows XP, Microsoft provides two tools (OFORMAT and CVTAREA) to address these problems. I asked the FreeDOS folks about running OFORMAT under FreeDOS, and they responded by adding a switch (/a) to FreeDOS FORMAT which does the same thing. Unattended now uses this switch, so we get a 4K cluster size after NTFS conversion, at least on Windows XP and Windows Server 2003.

Using CVTAREA is on our "to-do" list.

That said, I and others have installed hundreds of machines without using OFORMAT nor CVTAREA, and they work fine.


Patrick J. LoPresti patl@users.sourceforge.net