Собрать syslinux-4.05 получилось не сразу. В первую очередь пришлось установить необходимые пакеты nasm и perl
tc@box~$ grep -i buildrequires: /tmp/syslinux-4.05/syslinux.spec
BuildRequires: nasm > 2.03, perl
В последствии выяснилось, что отсутствовали также необходимые xz и python, поэтому процесс сборки снова обрывался раз за разом
При сборке нового ядра TCE с python нужно быть внимательнее, необходимо самостоятельно распаковать архив из /usr/local/share/python/files/files.tar.gz в /usr/local/bin/ (см. /usr/local/tce.installed/python)
tc@box~$ cd /tmp/syslinux-4.05
tc@box~$ make -C ./linux
./mk-lba-img < geodsp1s.bin | xz -0f > geodsp1s.img.xz || ( rm -f geodsp1s.img.xz ; false )
xz: invalid option -- '0'
....
make[2]: python: Command not found
После установки необходимых пакетов обнаружилось, что отсутствует заголовочный файл ext2_fs.h
In file included from syslinux.c:50:0:
../libinstaller/linuxioctl.h:22:44: fatal error: linux/ext2_fs.h: No such file or directory
Если закомментировать включение этого заголовочного файла, то компиляция прервется дальше на следующем неправильно оформленом заголовочном файле advconst.h
tc@box~$ grep ext2_fs ./libinstaller/linuxioctl.h
//#include <linux/ext2_fs.h> /* EXT2_IOC_* */
tc@box~$ make -C ./linux
In file included from ../libinstaller/syslinux.h:17:0, from syslinux.c:63:
../libinstaller/advconst.h:1:1: error: expected identifier or '(' before '.' token
Придется править файл вручную
tc@box~$ cat ./libinstaller/advconst.h
#include "../com32/include/syslinux/advconst.h"
Далее снова проблема с отсутствующим ext2_fs.h
../libinstaller/syslxcom.c: In function 'clear_attributes':
../libinstaller/syslxcom.c:124:21: error: 'EXT2_IOC_GETFLAGS' undeclared (first use in this function)
Поиском по содержимому нашелся необходимый заголовочный файл
tc@box~$ find / -type f -exec grep -l EXT2_IOC_GETFLAGS {} \; 2&>/dev/null
/usr/include/ext2fs/ext2_fs.h
Можно просто создать символьную ссылку на него
tc@box~$ sudo ln -s /usr/include/ext2fs/ext2_fs.h ./linux/
./linux/ext2_fs.h -> /usr/include/ext2fs/ext2_fs.h
Нужно также отключить сборку файлов для MS Windows в сценарии ./Makefile
tc@box~$ vi ./Makefile
BOBJECTS = $(BTARGET) \
mbr/*.bin \
core/pxelinux.0 core/isolinux.bin core/isolinux-debug.bin \
gpxe/gpxelinux.0 \
$(MODULES)
#dos/syslinux.com \
#win32/syslinux.exe win64/syslinux64.exe \
#dosutil/*.com dosutil/*.sys \
BSUBDIRS = codepage com32 lzo core memdisk modules mbr memdump gpxe sample \
diag libinstaller
#dos win32 win64 dosutil
Если архив упаковывать только при помощи 7z, то потеряется информация о правах доступа и компиляция будет невозможна, т.к. не будут выполняться некоторые скрипты. Поэтому архив лучше готовить при помощи tar, а сжимать уже другим архиватором
Пример ошибки запуска сценария
/bin/sh: ./util/zbin: Permission denied
Linux-5.4 box 3.8.13-tinycore Web Sep 30 23:43:16 YEKT