On Jun 05 2014, Ady wrote:> > I'm working on a system derived from ARCH linux, running what they > > call version 6.02-4 of the syslinux package (which would be your > > version 6.02 plus their/our patches). I've got a syslinux.cfg > > ArchLinux currently is already using 6.03-pre12 or newer, so I would > suggest for you to update.I want to keep the affected machines more-or-less stable, i.e. we're not tracking arch closely. But we'll happily pick up a fixed version of syslinux, or a specific patch for the problem we've been hitting.> > In my syslinux.cfg I have several menu options, simplified here. > > > > DEFAULT up > > > > LABEL up > > MENU LABEL Generic > > LINUX ../vmlinuz-linux > > APPEND root=/disk/a > > INITRD ../pxe-linux.img > > > > Label updebug > > MENU LABEL Debug > > LINUX ../vmlinuz-linux > > APPEND root=/disk/a debug > > INITRD ../pxe-linux.img > > > > > > So I do $ sudo extlinux --once updebug /boot/syslinux > > > > The file /boot/debug/ldlinux.sys changes, and part of the change is 2 > > copies of the characters u p d e b u g > > I would guess you are not using "/boot/debug/" but actually > "/boot/syslinux/" as installation path, right? Where is your > ldlinux.sys really located?Yes, that was a typo. It's /boot/syslinux/ldlinux.sys> > But when I reboot, it comes up from the first option. And if I sit at > > the console, I see that option showing as gthe default, just as if I > > hadn't been using --once to change it. > > > > However, the modifications _are_ removed from /boot/debug/ldlinux.sys > > So part of the desired effect of --once is happening on boot up > > > > Perhaps I don't understand what is meant by "command" in the man page: > > > > -o, --once=command > > Execute a command once upon boot. > > The command should (better) be label in your cfg file. FWIW, labels > shall not include space characters and shall be unique.Good, that part is right then. Though I see I had another typo above. Label updebug is really LABEL updebug when I look at the actual file on my test machine. I have no spaces in the LABEL lines. I *do* have spaces in the MENU LABEL lines, but I believe that's OK.> According to your report (and you are not the first one), there seems > to be some partial success but the desired result is not achieved. > Have you tried using the "=" sign and the "--install" option too? For > instance: > > $ sudo extlinux --once=updebug --install /boot/syslinux > > where "updebug" is a unique label in your syslinux.cfg file and > "/boot/syslinux/" is the mounted point where SYSLINUX will be > re-installed.Same wrong effect at a gross level - I still boot off the default label, not the one named with --once. Some differences in the effects on ldlinux.sys - the post-boot version is not identical to the one I had in place before running "sudo extlinux --once=updebug --install /boot/syslinux" -- Arlie
> On Jun 05 2014, Ady wrote: > > > > I'm working on a system derived from ARCH linux, running what they > > > call version 6.02-4 of the syslinux package (which would be your > > > version 6.02 plus their/our patches). I've got a syslinux.cfg > > > > ArchLinux currently is already using 6.03-pre12 or newer, so I would > > suggest for you to update. > > I want to keep the affected machines more-or-less stable, i.e. we're > not tracking arch closely. But we'll happily pick up a fixed version > of syslinux, or a specific patch for the problem we've been hitting. >Whichever prior Syslinux 6.xx version you had, we know that the newer one is better. I am not just saying it; in this case at this time this is a completely valid statement. You should update any prior 6.02- version to the newer 6.03 branch.> > > In my syslinux.cfg I have several menu options, simplified here. > > > > > > DEFAULT up > > > > > > LABEL up > > > MENU LABEL Generic > > > LINUX ../vmlinuz-linux > > > APPEND root=/disk/a > > > INITRD ../pxe-linux.img > > > > > > Label updebug > > > MENU LABEL Debug > > > LINUX ../vmlinuz-linux > > > APPEND root=/disk/a debug > > > INITRD ../pxe-linux.img > > > > > > > > > So I do $ sudo extlinux --once updebug /boot/syslinux > > > > > > The file /boot/debug/ldlinux.sys changes, and part of the change is 2 > > > copies of the characters u p d e b u g > > > > I would guess you are not using "/boot/debug/" but actually > > "/boot/syslinux/" as installation path, right? Where is your > > ldlinux.sys really located? > > Yes, that was a typo. It's /boot/syslinux/ldlinux.sys > > > > > But when I reboot, it comes up from the first option. And if I sit at > > > the console, I see that option showing as gthe default, just as if I > > > hadn't been using --once to change it. > > > > > > However, the modifications _are_ removed from /boot/debug/ldlinux.sys > > > So part of the desired effect of --once is happening on boot up > > > > > > Perhaps I don't understand what is meant by "command" in the man page: > > > > > > -o, --once=command > > > Execute a command once upon boot. > > > > The command should (better) be label in your cfg file. FWIW, labels > > shall not include space characters and shall be unique. > > Good, that part is right then. Though I see I had another typo above. > Label updebug > is really > LABEL updebug > when I look at the actual file on my test machine. > > I have no spaces in the LABEL lines. I *do* have spaces in the MENU LABEL > lines, but I believe that's OK.The directives are case-insensitive, and MENU LABELs can indeed include space characters.> > > According to your report (and you are not the first one), there seems > > to be some partial success but the desired result is not achieved. > > Have you tried using the "=" sign and the "--install" option too? For > > instance: > > > > $ sudo extlinux --once=updebug --install /boot/syslinux > > > > where "updebug" is a unique label in your syslinux.cfg file and > > "/boot/syslinux/" is the mounted point where SYSLINUX will be > > re-installed. > > Same wrong effect at a gross level - I still boot off the default > label, not the one named with --once. Some differences in the effects > on ldlinux.sys - the post-boot version is not identical to the one I > had in place before running "sudo extlinux --once=updebug --install /boot/syslinux"What do you mean with the version not being identical? If you include "--install" you re-installed ldlinux.sys (an ldlinux.c32) using the Syslinux package version that you have (installed) in your system. It sounds like you might be mixing Syslinux versions, which could bring all sort of problems. The version of all Syslinux-related files in use, including the c32 modules, needs to match the same (exact) version of the boot loader. To be clear, I am not saying there is no bug - there might be.> > -- > Arlie >Regards, Ady.
> > To be clear, I am not saying there is no bug - there might be. >I performed the following test with several versions of Syslinux: 1_ Execute: 'extlinux --once=non_default_label --install /mnt/sda1' ; 2_ In first reboot, the "non_default_label" should be executed; 3_ In second reboot, the default label should be executed. Results: _ 4.05 to 4.07: OK. _ 5.00-pre1 to 5.00-pre7: fail. _ 5.00-pre8: step #2 OK, step #3 buggy. _ 5.00-pre9 to 5.11-pre9: OK. _ 6.xx and 6.xx-pre*: fail. Considering that the branches were developed simultaneously, I am guessing that at least in one of the merging commits some (sort of) conflict/error migth have pass through without detection. In particular, there are several merging commits after 5.00-pre8, after 5.00-pre9 (both "--once" OK) and 6.00-pre1 ("--once" failure). Some of those merging commits included conflicts, and during the same period there is at least one "Fixup merge botch" commit ( <http://git.zytor.com/?p=syslinux/syslinux.git;a=commit;h=afd28c08dc76 153efcd9f760bcdbeaabda74eb05> ) which happens to be related to libinstaller. It should be noted that there are later commits affecting the ADV too. Additionally, the "efi/adv.c" file in 6.03-pre13 states: *** Core ADV I/O Code consolidated from libinstaller/adv*.c and core/adv.inc with the addition of EFI support *** So although currently the unexpected behavior can be seen under BIOS, there is a chance that the solution might still be under the "efi/" subdirectory. Regards, Ady.