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

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Wed Nov 23 19:30:42 EST 2011


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


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



More information about the arch-releng mailing list