[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: specifiying a preseed url by dhcp

On Tue, Nov 30, 2004 at 03:12:04AM -0500, Joey Hess wrote:
> Next I looked at the dhcp rfcs. The dhcp options seemed like the obvious
> way to get an url passed from dhcp to d-i. I looked at using option 43,
> the vendor defined option, since its use is quite close to how d-i would
> work. However, at least the debian dhcp package does not allow option-43
> in dhcpd.conf.

> We could pick an option in the 128-254 range and use it, but we might be
> violating rfc2939 by doing so, since it requires that these "MUST NOT be
> defined for use by any publicly distributed DHCP server, client or relay
> agent implementations". I'm not sure how much wiggle room there is in
> "client" -- it's not like d-i's dhcp client would know about the option,
> though d-i would, and we'd have to put something like "request option-nnn" in
> dhclient.conf. There's always the potential that whatever private use
> option number we choose will be used at some installation site for
> something else.

> We could add a boot option to make d-i look at a particular dhcp option
> for preseeding, and leave it up to the admin. preseed/dhcp_opt=128. This
> might still run out of kernel command line space on hppa (it's very
> small) and it's a lot of layers of indirection to get to the preseed
> file.

> We could go through the process to get an option numer assigned by iana.
> I don't have the time or the patience, but if someone does this is
> probably the best way.

       Clients  can be separated into classes, and treated differently depend‐
       ing on what class they are in.   This separation  can  be  done either
       with  a  conditional  statement,  or  with a match statement within the
       class declaration.   It is possible to specify a  limit  on  the total
       number  of  clients within a particular class or subclass that may hold
       leases at one time, and it is possible to specify automatic subclassing
       based on the contents of the client packet.

       To  add  clients  to  classes  based on conditional evaluation, you can
       specify a matching expression in the class statement:

       class "ras‐clients" {
         match if substring (option dhcp‐client‐identifier, 1, 3) = "RAS";

       Note that whether you use matching expressions or  add  statements (or
       both)  to  classify  clients, you must always write a class declaration
       for any class that you use.   If there will be no match  statement and
       no  in‐scope  statements  for a class, the declaration should look like

This provides the means to distinguish PXE boot requests from other DHCP
requests sent by d-i systems looking for preseed information, so that you
can overload next-server/filename for both steps of the install using
different DHCP class configurations.

Steve Langasek
postmodern programmer

Attachment: signature.asc
Description: Digital signature

Reply to: