[arch-releng] [PATCH 2/3] [archiso] Add archiso_pxe_curl hook

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Thu Nov 24 02:26:00 EST 2011


On 11/23/2011 09:30 PM, Gerardo Exequiel Pozzi wrote:
> On 11/23/2011 07:52 PM, Thomas Bächler wrote:
>> Am 23.11.2011 23:36, schrieb Gerardo Exequiel Pozzi:
>>>>> The releng env is currently set to build every 4 days.  And it should
>>>>> auto-update archiso from git IIRC
>>>> Gerardo didn't push these patches to archiso.git yet. That's why I 
>>>> asked.
>>>>
>>> These patches are waiting for next mkinitcpio + pending RFC patch to 
>>> fix
>>> BASEDIR (Or I can just say "good-bye" to -b BASEDIR and use chroot
>>> mkinitcpio")
>> We could install mkinitcpio-git in the releng environments. Dieter?
>>
>>> Also I want to change a bit the directory structure of the ISO to be
>>> more pxelinux friendly.
>>> This is a change that I want to do long long time ago, but breaks "the
>>> nice scheme" (syslinux only files in one place, kernel/initramfs in
>>> other...).
>>>
>>> [...]
>>>
>>> bah, is still nice...
>>>
>>> is there any objections?
>> I like the old scheme better. I like how the bootloader files are
>> separate from the linux files.
> Yes current scheme is nice.
>>
>>> We can start a TFTP/FTP/HTTP/NFS that points directly to
>>> /run/archiso/bootmnt from the live-enviroment. Or just extract/mount 
>>> the
>>> ISO in a running system ;)
>> Why can't we do that with the current scheme?
>>
>
> Because pxelinux works different compared to other bootloaders (in 
> terms of filesystem).
> While syslinux/isolinux/extlinux you can see all files from the 
> filesystem where is installed. For example extlinux installed on 
> /boot/syslinux/ld-linux.sys from the bootloader you can access to 
> /anyotherdir.
> In pxelinux things works differently, You have it installed on 
> /tftpboot/syslinux/pxelinux.0 and you can not access to files outside 
> "syslinux/" when you reference a file as "/pepito.txt" you are trying 
> to access to /tftpboot/syslinux/pepito.txt (even if tftpd root is set 
> to /tftpboot/).
> Yes sure still can be referenced as tftp:// (or http://)
>
> I tried with change the tftp-prefix with dhcp-option 210 
> (pxelinux.pathprefix) "dnsmasq --dhcp-option-force=210,/" then having 
> this scheme (by default will take syslinux/ as prefix, the directory 
> where pxelinux.0 is found)
>
> /tftpboot/arch/boot/i686/vmlinuz
> /tftpboot/syslinux/with-all-files-here
> /tftpboot/pxelinux.cfg/default
>
> And default file with this content (the same method used in ISO under 
> /isolinux/isolinux.cfg)
>
> ---
> DEFAULT loadconfig
>
> LABEL loadconfig
>   CONFIG /syslinux/syslinux.cfg
>   APPEND /syslinux/
> ---
>
> All things related to syslinux loads OK (c32, splash.png, etc...) but 
> when you try to access to /arch/boot/i686/vmlinuz is not found
>
> boot: cat /arch/pepe.txt
> cat.c32: /arch/pepe.txt: file not found
> boot: cat tftp://192.168.0.77/arch/pepe.txt
> I Am /tftpboot/arch/pepe.txt
> boot: cat pepe.txt
> I Am /tftpboot/syslinux/pepe.txt
> boot: cat /pepe.txt
> I Am /tftpboot/syslinux/pepe.txt
> boot:
>
> -------------
>
> Another alternative directory scheme is
>
> /arch/boot/{i686,x86_64}/{vmlinuz,archiso.img,...}
> /arch/boot/syslinux/*.{cfg,c32,...}
> /arch/boot/pxelinux.cfg/default <- this is a copy of syslinux.cfg (not 
> a "loadconfig" hack) So in the case of dual-iso, we need *.cfg files 
> here.
> /arch/boot/{g,p}xelinux.0
>
>

What do you think about keep scheme like now but...

* Set the dhcp to send that pxeconfig is syslinux/syslinux.cfg (same 
path for all *.cfg)
* Convert all relative path in syslinux.cfg to absolute paths
* Enable IPAPPEND even for non-pxelinux (you only see a non-harm warning 
mesage if you look quickly at screen (I can not see now, maybe newer 
syslinux versions...)). In this way avoid two same files that differs on 
in this directive.
(anyway we can have a nice menu for differents boot options)

In that way we have unified the same directory scheme / config files for 
all syslinux bootloaders.

# mount -o ro /tmp/out/archlinux-2011.11.24-netinstall-i686.iso /mnt/iso

# dnsmasq --port=0 --enable-tftp --tftp-root=/mnt/iso 
--dhcp-boot=/arch/boot/syslinux/gpxelinux.0,192.168.0.77 
--dhcp-range=192.168.0.2,192.168.0.254,8640 
--dhcp-option-force=209,/arch/boot/syslinux/syslinux.cfg 
--dhcp-option-force=210,http://192.168.0.77


or using an embbeded gpxe script
------

#!gpxe

dhcp net0

set 209:string /arch/boot/syslinux/syslinux.cfg

set 210:string http://192.168.0.77

chain ${210:string}/arch/boot/syslinux/gpxelinux.0

boot

-------


Then adding archiso_curl_url=http://192.168.0.77/


# darkhttpd /mnt/iso

darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic.
listening on: http://0.0.0.0:80/
1322117543 192.168.0.219 "GET /arch/boot/syslinux/gpxelinux.0" 200 89814 
"" "gPXE/1.0.1+"

1322117545 192.168.0.219 "GET /arch/boot/syslinux/syslinux.cfg" 200 2112 
"" "gPXE/1.0.0"
1322117545 192.168.0.219 "GET /arch/boot/syslinux/vesamenu.c32" 200 
155894 "" "gPXE/1.0.0"
1322117545 192.168.0.219 "GET /arch/boot/syslinux/syslinux.cfg" 200 2112 
"" "gPXE/1.0.0"
1322117546 192.168.0.219 "GET /arch/boot/syslinux/splash.png" 200 45614 
"" "gPXE/1.0.0"
1322117580 192.168.0.219 "GET /arch/boot/i686/vmlinuz" 200 2947463 "" 
"gPXE/1.0.0"
1322117583 192.168.0.219 "GET /arch/boot/i686/archiso.img" 200 16698712 
"" "gPXE/1.0.0"
1322117586 192.168.0.219 "GET /arch/aitab" 200 668 "" "curl/7.23.1 
(i686-pc-linux-gnu) libcurl/7.23.1 OpenSSL/1.0.0e zlib/1.2.5 libssh2/1.3.0"
1322117586 192.168.0.219 "GET /arch/i686/root-image.fs.sfs" 200 88629485 
"" "curl/7.23.1 (i686-pc-linux-gnu) libcurl/7.23.1 OpenSSL/1.0.0e 
zlib/1.2.5 libssh2/1.3.0"
1322117587 192.168.0.219 "GET /arch/i686/lib-modules.fs.sfs" 200 
35356909 "" "curl/7.23.1 (i686-pc-linux-gnu) libcurl/7.23.1 
OpenSSL/1.0.0e zlib/1.2.5 libssh2/1.3.0"
1322117587 192.168.0.219 "GET /arch/any/usr-share.fs.sfs" 200 55234797 
"" "curl/7.23.1 (i686-pc-linux-gnu) libcurl/7.23.1 OpenSSL/1.0.0e 
zlib/1.2.5 libssh2/1.3.0"


I need to sleep, see later!

-- 
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1



More information about the arch-releng mailing list