[arch-releng] Make archiso PXE & NBD friendly (server and client mode)
Gerardo Exequiel Pozzi
vmlinuz386 at yahoo.com.ar
Mon Mar 15 03:50:47 CET 2010
On 03/14/2010 06:08 PM, Dieter Plaetinck wrote:
> On Sun, 14 Mar 2010 06:39:20 -0300
> Gerardo Exequiel Pozzi<vmlinuz386 at yahoo.com.ar> wrote:
>
>
>> Hello
>>
>> I recently done some changes for archiso, to make it booteable via
>> PXE (Preboot eXecution Environment) and using NBD (Network Block
>> Device). Also a minimal server script can be launched to act as
>> server ;)
>>
> cool.
>
absolutelly :)
> i always wanted support for pxe.
> is there a specific reason to choose nbd over nfs?
>
>
Good question. I chosed NBD instead of NFS because is really simple.
1) [From client side] No changes needed to [archiso] hook. Just add
another hook [nbd]. This hook setup a /dev/archiso pointing to /dev/nbd0
(created via only one command)
I think that doing via NFS requires:
- nfs hook can not be used directly (archiso mount handler will be over
nfs mount handler)
- mounting nfs must be under /bootmnt, and in archiso hook must skip
mouting /dev/archiso if booted from nfs.
2) [From server side] Run only one command to setup the NBD server.
I think that doing via NFS requires:
- setup exports, and other files.
- launch nfs and all daemon required (rpcbind, nfs-common, nfs-server)
>
>> If booted from network, there is a [nbd] hook, (based on [net]), that
>> configures an IP address, then setup a /dev/nbd0 (via nbd-client).
>> (and /dev/archiso will point to this device), all the rest is done by
>> current archiso hook :) (copytoram option can be used)
>> If booted normally, [nbd] hook does nothing. Inside the /root, there
>> is a simple script that launches dnsmasq enabling tftp and dhcp
>> server, finally start the nbd-server that serve the iso file via
>> network.
>>
> i'm confused, this whole thing is meant for clients, right?
> what does the tftp/dhcp server has to do with the client?
>
In other words:
- archiso with [nbd] hook, is capable to boot completelly from ethernet.
- The [nbd] hook detects that if ip= parameter is present, the execute
the needed actions, if no ip= paramter does nothing.
- The ip= parameter is automagically added via IPAPPEND 1 at syslinux
config (retrived from server)
Thats all for archiso.
OK but there is a "bonus", in my custom config (avr-toolchain). I added
two aditional files (pxelinux.0 pxelinux.cfg/default) and two packages
(dnsmasq nbd) to make this live-media capable to acts as server for archiso.
The "bonus^2" in my live-media there is one dirty script thats execute
dnsmasq and nbd-server.
> also, do you think we could just merge this in archiso and always use
> the nbd hook? (knowing that it won't do anything in 99% of the cases,
> when people do a regular boot)
>
Maybe:
- initramfs image grows from 5M to 8M.
- nbd hooks does nothing in normal process (there is no ip= parameter)
An aditional work can be done if integrated in archiso:
- if copytoram option is used, there is no need to keep nbd-client
connected to the server. Aditional check can be added to disconnect from
the server. So the live-media will be completelly independent. Anyway
this conection is not used at all, but to do the right things ;)
Videos :P
http://www.youtube.com/watch?v=aoeC2ZpGQFQ (booting normal from USB)
http://www.youtube.com/watch?v=inJNXsTQBOA (booting from PXE)
Comments welcomed.
Good week ;)
--
Gerardo Exequiel Pozzi ( djgera )
http://www.djgera.com.ar
KeyID: 0x1B8C330D
Key fingerprint = 0CAA D5D4 CD85 4434 A219 76ED 39AB 221B 1B8C 330D
More information about the arch-releng
mailing list