2026-09-30

Собрать 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