summaryrefslogtreecommitdiff
path: root/libre/syslinux
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2014-08-26 07:04:44 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2014-08-26 07:04:44 -0300
commit224ff53c78c2e8df8c6ac3f5b84964a9fd228ee3 (patch)
tree21f0f00d6ca7a856bde8310b4558a527717a6d85 /libre/syslinux
parent317a3b1d822c252c9f341170cf47a85d72cddde6 (diff)
add parabola suffix on some packages
Diffstat (limited to 'libre/syslinux')
-rw-r--r--libre/syslinux/PKGBUILD276
-rw-r--r--libre/syslinux/splash.pngbin11947 -> 0 bytes
-rw-r--r--libre/syslinux/splash.xcfbin30757 -> 0 bytes
-rw-r--r--libre/syslinux/syslinux-6.02-fix-bios-isolinux.patch12
-rw-r--r--libre/syslinux/syslinux-6.02-fix-chainloading.patch47
-rw-r--r--libre/syslinux/syslinux-6.02-fix-efi-ovmf.patch621
-rw-r--r--libre/syslinux/syslinux-install_update453
-rw-r--r--libre/syslinux/syslinux.cfg78
-rw-r--r--libre/syslinux/syslinux.install43
9 files changed, 0 insertions, 1530 deletions
diff --git a/libre/syslinux/PKGBUILD b/libre/syslinux/PKGBUILD
deleted file mode 100644
index 8b3676cca..000000000
--- a/libre/syslinux/PKGBUILD
+++ /dev/null
@@ -1,276 +0,0 @@
-# Maintainer (Arch): Tobias Powalowski <tpowa@archlinux.org>
-# Maintainer (Arch): Thomas Bächler <thomas@archlinux.org>
-# Contributor (Arch): Keshav Amburay <(the ddoott ridikulus ddoott rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
-# Maintainer: André Silva <emulatorman@parabola.nu>
-
-## "1" to enable IA32-EFI build in Arch x86_64, "0" to disable
-_IA32_EFI_IN_ARCH_X64="1"
-
-_VER="6.03-pre19"
-_GIT_TAG="syslinux-${_VER}"
-
-pkgname="syslinux"
-pkgver="${_VER/-/}"
-pkgrel="1"
-arch=('x86_64' 'i686')
-pkgdesc="Collection of boot loaders that boot from FAT, ext2/3/4 and btrfs filesystems, from CDs and via PXE (Parabola rebranded)"
-url="http://syslinux.zytor.com/"
-license=('GPL2')
-options=('!makeflags' '!emptydirs')
-backup=('boot/syslinux/syslinux.cfg'
- 'boot/syslinux/splash.png')
-makedepends=('git' 'python2' 'nasm' 'ncurses')
-if [[ "$CARCH" == "x86_64" ]]; then
- makedepends+=('lib32-glibc')
-fi
-depends=('glibc')
-optdepends=('perl-passwd-md5: For md5pass'
- 'perl-digest-sha1: For sha1pass'
- 'mtools: For mkdiskimage and syslinux support'
- 'gptfdisk: For GPT support'
- 'util-linux: For isohybrid'
- 'efibootmgr: For EFI support'
- 'dosfstools: For EFI support')
-install="${pkgname}.install"
-source=("${pkgname}::git+http://git.zytor.com/syslinux/syslinux.git#tag=${_GIT_TAG}"
- "gnu-efi::git+http://git.code.sf.net/p/gnu-efi/code#commit=3c62e78556aea01e9798380cd46794c6ca09d4bd"
- 'syslinux.cfg'
- 'syslinux-install_update'
- 'splash.png')
-md5sums=('SKIP'
- 'SKIP'
- 'f048880b57e2c5a7017ff8804bfda327'
- '9376f18fa3e42fc36cffa4cff0a84c09'
- 'cb46ca47c6b6323127d908440057d98f')
-
-_pkgver() {
- cd "${srcdir}/${pkgname}/"
- echo "$(git describe --tags)" | sed -e 's|syslinux-||g' -e 's|-pre|pre|g' -e 's|-|.|g'
-}
-
-prepare() {
-
- mv "${srcdir}/${pkgname}" "${srcdir}/${pkgname}-${pkgver}/"
- cd "${srcdir}/${pkgname}-${pkgver}/"
-
- msg "Run git clean"
- git clean -x -d -f
-
- msg "Do not try to build the Windows or DOS installers and DIAG files"
- sed 's|diag libinstaller dos win32 win64 dosutil txt|libinstaller txt|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
- sed 's|win32/syslinux.exe win64/syslinux64.exe||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
- sed 's|dosutil/*.com dosutil/*.sys||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
- sed 's|dos/syslinux.com||g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
- sed 's|INSTALLSUBDIRS = com32 utils dosutil|INSTALLSUBDIRS = com32 utils|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
- sed 's|install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|# install -m 644 -c $(INSTALL_DIAG) $(INSTALLROOT)$(DIAGDIR)|g' -i "${srcdir}/${pkgname}-${pkgver}/Makefile" || true
- sed 's|-include $(MAKEDIR)/devel.mk||g' -i "${srcdir}/${pkgname}-${pkgver}/mk/syslinux.mk" || true
-
- msg "Fix FHS manpage path"
- sed 's|/usr/man|/usr/share/man|g' -i "${srcdir}/${pkgname}-${pkgver}/mk/syslinux.mk" || true
-
- cd "${srcdir}/gnu-efi/"
-
- msg "Run git clean for gnu-efi"
- git clean -x -d -f
-
- msg "Revert gnu-efi Makefile 'make install' problamatic commit"
- git revert --no-commit 06744d69273de4945cf0ffcaa4a6abf7cec707b6
-
- msg "Prepare gnu-efi source"
- cp -r "${srcdir}/gnu-efi/gnu-efi-3.0" "${srcdir}/${pkgname}-${pkgver}/gnu-efi/gnu-efi-3.0"
-
- cd "${srcdir}/${pkgname}-${pkgver}/"
-
-}
-
-_build_syslinux_bios() {
-
- rm -rf "${srcdir}/${pkgname}-${pkgver}-bios/" || true
- cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-bios"
-
- mkdir -p "${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR"
- cd "${srcdir}/${pkgname}-${pkgver}-bios/"
-
- msg "Do not try to compile bios build with our default LDFLAGS, it will fail"
- unset LDFLAGS
-
- msg "Run make bios"
- make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR" bios
-
- msg "Run make bios installer"
- make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR" bios installer
-
-}
-
-_build_syslinux_efi64() {
-
- rm -rf "${srcdir}/${pkgname}-${pkgver}-efi64/" || true
- cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi64"
-
- mkdir -p "${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR/efi64/"
- cd "${srcdir}/${pkgname}-${pkgver}-efi64/gnu-efi/gnu-efi-3.0/"
-
- msg "Unset all compiler FLAGS for gnu-efi efi64 build"
- unset CFLAGS
- unset CPPFLAGS
- unset CXXFLAGS
- unset LDFLAGS
- unset MAKEFLAGS
-
- msg "Run make gnu-efi for syslinux efi64"
- make ARCH="x86_64" -j1
-
- msg "Run make install gnu-efi for syslinux efi64"
- make ARCH="x86_64" PREFIX="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR/efi64/" -j1 install
-
- cd "${srcdir}/${pkgname}-${pkgver}-efi64/"
-
- msg "Unset all compiler FLAGS for efi64 build"
- unset CFLAGS
- unset CPPFLAGS
- unset CXXFLAGS
- unset LDFLAGS
- unset MAKEFLAGS
-
- msg "Run make efi64"
- make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR" efi64
-
- msg "Run make efi64 installer"
- make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR" efi64 installer
-
-}
-
-_build_syslinux_efi32() {
-
- rm -rf "${srcdir}/${pkgname}-${pkgver}-efi32/" || true
- cp -r "${srcdir}/${pkgname}-${pkgver}" "${srcdir}/${pkgname}-${pkgver}-efi32"
-
- mkdir -p "${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR/efi32/"
- cd "${srcdir}/${pkgname}-${pkgver}-efi32/gnu-efi/gnu-efi-3.0/"
-
- msg "Unset all compiler FLAGS for gnu-efi efi32 build"
- unset CFLAGS
- unset CPPFLAGS
- unset CXXFLAGS
- unset LDFLAGS
- unset MAKEFLAGS
-
- msg "Run make gnu-efi for syslinux efi32"
- make ARCH="ia32" -j1
-
- msg "Run make install gnu-efi for syslinux efi32"
- make ARCH="ia32" PREFIX="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR/efi32/" install
-
- cd "${srcdir}/${pkgname}-${pkgver}-efi32/"
-
- msg "Unset all compiler FLAGS for efi32 build"
- unset CFLAGS
- unset CPPFLAGS
- unset CXXFLAGS
- unset LDFLAGS
- unset MAKEFLAGS
-
- msg "Run make efi32"
- make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32
-
- msg "Run make efi32 installer"
- make PYTHON="python2" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32 installer
-
-}
-
-build() {
-
- cd "${srcdir}/${pkgname}-${pkgver}/"
-
- if [[ "${CARCH}" == "x86_64" ]]; then
- msg "Build syslinux efi64"
- _build_syslinux_efi64
-
- if [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then
- msg "Build syslinux efi32"
- _build_syslinux_efi32
- fi
- fi
-
- if [[ "${CARCH}" == "i686" ]]; then
- msg "Build syslinux efi32"
- _build_syslinux_efi32
- fi
-
- msg "Build syslinux bios"
- _build_syslinux_bios
-
-}
-
-_package_syslinux_bios() {
-
- cd "${srcdir}/${pkgname}-${pkgver}-bios/"
-
- msg "Install Syslinux bios"
- make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/bios/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-bios/OBJDIR" bios install
-
- msg "Remove syslinux.exe,syslinux64.exe,syslinux.com and dosutil dir"
- rm "${pkgdir}/usr/lib/syslinux/bios"/syslinux.{com,exe} || true
- rm "${pkgdir}/usr/lib/syslinux/bios/syslinux64.exe" || true
- rm -rf "${pkgdir}/usr/lib/syslinux/bios/dosutil/" || true
-
- msg "Remove com32 and diag dirs"
- rm -rf "${pkgdir}/usr/lib/syslinux/bios/diag/" || true
- rm -rf "${pkgdir}/usr/lib/syslinux/bios/com32/" || true
-
- msg "Move extlinux binary to /usr/bin"
- install -d "${pkgdir}/usr/bin"
- mv "${pkgdir}/sbin/extlinux" "${pkgdir}/usr/bin/extlinux"
- rm -rf "${pkgdir}/sbin/"
-
- msg "Install syslinux docs"
- install -d "${pkgdir}/usr/share/doc"
- cp -ar "${srcdir}/${pkgname}-${pkgver}/doc" "${pkgdir}/usr/share/doc/syslinux"
-
- msg "Install syslinux.cfg"
- install -D -m0644 "${srcdir}/syslinux.cfg" "${pkgdir}/boot/syslinux/syslinux.cfg"
-
- msg "Install the syslinux-install_update script"
- ## This script is maintained at https://gist.github.com/pyther/772138
- ## Script not yet updated for syslinux-efi
- install -D -m0755 "${srcdir}/syslinux-install_update" "${pkgdir}/usr/bin/syslinux-install_update"
-
- msg "Install Parabola splash"
- install -D -m644 "${srcdir}/splash.png" "${pkgdir}/boot/syslinux/splash.png"
-}
-
-_package_syslinux_efi() {
-
- cd "${srcdir}/${pkgname}-${pkgver}/"
-
- if [[ "${CARCH}" == "x86_64" ]]; then
- cd "${srcdir}/${pkgname}-${pkgver}-efi64/"
- msg "Install Syslinux efi64"
- make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi64/OBJDIR" efi64 install
-
- if [[ "${_IA32_EFI_IN_ARCH_X64}" == "1" ]]; then
- cd "${srcdir}/${pkgname}-${pkgver}-efi32/"
- msg "Install Syslinux efi32"
- make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32 install
- fi
- fi
-
- if [[ "${CARCH}" == "i686" ]]; then
- cd "${srcdir}/${pkgname}-${pkgver}-efi32/"
- msg "Install Syslinux efi32"
- make INSTALLROOT="${pkgdir}/" AUXDIR="/usr/lib/syslinux/" OBJDIR="${srcdir}/${pkgname}-${pkgver}-efi32/OBJDIR" efi32 install
- fi
-
-}
-
-package() {
-
- cd "${srcdir}/${pkgname}-${pkgver}/"
-
- msg "Package Syslinux efi"
- _package_syslinux_efi
-
- msg "Package Syslinux bios"
- _package_syslinux_bios
-
-}
diff --git a/libre/syslinux/splash.png b/libre/syslinux/splash.png
deleted file mode 100644
index eac14536b..000000000
--- a/libre/syslinux/splash.png
+++ /dev/null
Binary files differ
diff --git a/libre/syslinux/splash.xcf b/libre/syslinux/splash.xcf
deleted file mode 100644
index c27d04445..000000000
--- a/libre/syslinux/splash.xcf
+++ /dev/null
Binary files differ
diff --git a/libre/syslinux/syslinux-6.02-fix-bios-isolinux.patch b/libre/syslinux/syslinux-6.02-fix-bios-isolinux.patch
deleted file mode 100644
index 48df46f12..000000000
--- a/libre/syslinux/syslinux-6.02-fix-bios-isolinux.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/core/isolinux.asm b/core/isolinux.asm
-index bd4e9556922d..c4db4133e274 100644
---- a/core/isolinux.asm
-+++ b/core/isolinux.asm
-@@ -420,7 +420,7 @@ MaxLMA equ 384*1024 ; Reasonable limit (384K)
- call getlinsec
- pop eax
- pop cx
-- mov dx,cx
-+ movzx edx,cx
- pop bp
- pop bx
diff --git a/libre/syslinux/syslinux-6.02-fix-chainloading.patch b/libre/syslinux/syslinux-6.02-fix-chainloading.patch
deleted file mode 100644
index 6fd7ef4a8..000000000
--- a/libre/syslinux/syslinux-6.02-fix-chainloading.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Reported-by: Dark Raven <drdarkraven at gmail.com>
-Signed-off-by: Raphael S. Carvalho <raphael.scarv at gmail.com>
----
- com32/lib/syslinux/disk.c | 22 ++++++++++++++--------
- 1 files changed, 14 insertions(+), 8 deletions(-)
-
-diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c
-index 0b0c737..47ecb52 100644
---- a/com32/lib/syslinux/disk.c
-+++ b/com32/lib/syslinux/disk.c
-@@ -171,22 +171,28 @@ out:
- static void *ebios_setup(const struct disk_info *const diskinfo, com32sys_t *inreg,
- uint64_t lba, uint8_t count, uint8_t op_code)
- {
-- static __lowmem struct disk_ebios_dapa dapa;
-+ static struct disk_ebios_dapa *dapa = NULL;
- void *buf;
-
-+ if (!dapa) {
-+ dapa = lmalloc(sizeof *dapa);
-+ if (!dapa)
-+ return NULL;
-+ }
-+
- buf = lmalloc(count * diskinfo->bps);
- if (!buf)
- return NULL;
-
-- dapa.len = sizeof(dapa);
-- dapa.count = count;
-- dapa.off = OFFS(buf);
-- dapa.seg = SEG(buf);
-- dapa.lba = lba;
-+ dapa->len = sizeof(*dapa);
-+ dapa->count = count;
-+ dapa->off = OFFS(buf);
-+ dapa->seg = SEG(buf);
-+ dapa->lba = lba;
-
- inreg->eax.b[1] = op_code;
-- inreg->esi.w[0] = OFFS(&dapa);
-- inreg->ds = SEG(&dapa);
-+ inreg->esi.w[0] = OFFS(dapa);
-+ inreg->ds = SEG(dapa);
- inreg->edx.b[0] = diskinfo->disk;
-
- return buf;
diff --git a/libre/syslinux/syslinux-6.02-fix-efi-ovmf.patch b/libre/syslinux/syslinux-6.02-fix-efi-ovmf.patch
deleted file mode 100644
index f33f4c1de..000000000
--- a/libre/syslinux/syslinux-6.02-fix-efi-ovmf.patch
+++ /dev/null
@@ -1,621 +0,0 @@
-The value of the field rva_and_sizes_nr is used by OVMF to check the
-consistency of the PE file with respect to the field optional_hdr_sz. It
-now have the right value.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
- efi/wrapper.c | 6 +++---
- efi/wrapper.h | 28 ++++++++++++++++------------
- 2 files changed, 19 insertions(+), 15 deletions(-)
-
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index 04c895f..ec77271 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -102,7 +102,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- e_hdr.image_sz = total_sz;
- e_hdr.headers_sz = 512;
- e_hdr.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
-- e_hdr.rva_and_sizes_nr = 1;
-+ e_hdr.rva_and_sizes_nr = sizeof(e_hdr.data_directory) / sizeof(__uint64_t);
- fwrite(&e_hdr, sizeof(e_hdr), 1, f);
- }
- else if (class == ELFCLASS64) {
-@@ -130,7 +130,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- e_hdr_pe32p.image_sz = total_sz;
- e_hdr_pe32p.headers_sz = 512;
- e_hdr_pe32p.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
-- e_hdr_pe32p.rva_and_sizes_nr = 1;
-+ e_hdr_pe32p.rva_and_sizes_nr = sizeof(e_hdr_pe32p.data_directory) / sizeof(__uint64_t);
- fwrite(&e_hdr_pe32p, sizeof(e_hdr_pe32p), 1, f);
- }
-
-@@ -237,7 +237,7 @@ int main(int argc, char **argv)
- fprintf(stderr, "Unsupported architecture\n");
- exit(EXIT_FAILURE);
- }
--
-+
- if (id[EI_MAG0] != ELFMAG0 ||
- id[EI_MAG1] != ELFMAG1 ||
- id[EI_MAG2] != ELFMAG2 ||
-diff --git a/efi/wrapper.h b/efi/wrapper.h
-index 4f76991..0e6b38e 100644
---- a/efi/wrapper.h
-+++ b/efi/wrapper.h
-@@ -102,12 +102,14 @@ struct extra_hdr {
- __uint32_t heap_commit_sz;
- __uint32_t loader_flags;
- __uint32_t rva_and_sizes_nr;
-- __uint64_t export_table;
-- __uint64_t import_table;
-- __uint64_t resource_table;
-- __uint64_t exception_table;
-- __uint64_t certification_table;
-- __uint64_t base_relocation_table;
-+ struct {
-+ __uint64_t export_table;
-+ __uint64_t import_table;
-+ __uint64_t resource_table;
-+ __uint64_t exception_table;
-+ __uint64_t certification_table;
-+ __uint64_t base_relocation_table;
-+ } data_directory;
- } __packed;
-
- /* Extra header for PE32+ format
-@@ -136,12 +138,14 @@ struct extra_hdr_pe32p {
- __uint64_t heap_commit_sz;
- __uint32_t loader_flags;
- __uint32_t rva_and_sizes_nr;
-- __uint64_t export_table;
-- __uint64_t import_table;
-- __uint64_t resource_table;
-- __uint64_t exception_table;
-- __uint64_t certification_table;
-- __uint64_t base_relocation_table;
-+ struct {
-+ __uint64_t export_table;
-+ __uint64_t import_table;
-+ __uint64_t resource_table;
-+ __uint64_t exception_table;
-+ __uint64_t certification_table;
-+ __uint64_t base_relocation_table;
-+ } data_directory;
- } __packed;
-
- struct section {
-In the generated PE file, the section header for the .text section used
-to address more than the whole file. Starting at offset 0 (before the
-end of the headers) is illegal and is rejected by OVMF. Giving a size
-greater than the actual file size is also illegal and rejected.
-
-Moreover, the actual data inside the PE file have to be aligned to at
-least 512 bytes. Hence, .text need to be aligned as well.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
- efi/wrapper.c | 44 +++++++++++++++++++++++++-------------------
- 1 file changed, 25 insertions(+), 19 deletions(-)
-
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index ec77271..bd2c175 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -54,11 +54,15 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- struct coff_hdr c_hdr;
- struct header hdr;
- struct coff_reloc c_rel;
-- __uint32_t total_sz = so_size;
-+ __uint32_t total_sz = data_size;
- __uint32_t dummy = 0;
- __uint32_t hdr_sz;
- __uint32_t reloc_start, reloc_end;
-
-+ hdr_sz = 512;
-+ total_sz += hdr_sz;
-+ entry += hdr_sz;
-+
- memset(&hdr, 0, sizeof(hdr));
- hdr.msdos_signature = MSDOS_SIGNATURE;
-
-@@ -77,11 +81,6 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- c_hdr.nr_sections = 2;
- c_hdr.nr_syms = 1;
- if (class == ELFCLASS32) {
-- hdr_sz = sizeof(o_hdr) + sizeof(t_sec) + sizeof(e_hdr) +
-- sizeof(r_sec) + sizeof(c_hdr) + sizeof(hdr) + sizeof(c_rel)
-- + sizeof(dummy);
-- total_sz += hdr_sz;
-- entry += hdr_sz;
- c_hdr.arch = IMAGE_FILE_MACHINE_I386;
- c_hdr.characteristics = IMAGE_FILE_32BIT_MACHINE |
- IMAGE_FILE_DEBUG_STRIPPED | IMAGE_FILE_EXECUTABLE_IMAGE |
-@@ -92,25 +91,20 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- o_hdr.format = PE32_FORMAT;
- o_hdr.major_linker_version = 0x02;
- o_hdr.minor_linker_version = 0x14;
-- o_hdr.code_sz = total_sz;
-+ o_hdr.code_sz = data_size;
- o_hdr.entry_point = entry;
- o_hdr.initialized_data_sz = data_size;
- fwrite(&o_hdr, sizeof(o_hdr), 1, f);
- memset(&e_hdr, 0, sizeof(e_hdr));
- e_hdr.section_align = 4096;
- e_hdr.file_align = 512;
-- e_hdr.image_sz = total_sz;
-- e_hdr.headers_sz = 512;
-+ e_hdr.image_sz = hdr_sz + so_size;
-+ e_hdr.headers_sz = hdr_sz;
- e_hdr.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- e_hdr.rva_and_sizes_nr = sizeof(e_hdr.data_directory) / sizeof(__uint64_t);
- fwrite(&e_hdr, sizeof(e_hdr), 1, f);
- }
- else if (class == ELFCLASS64) {
-- hdr_sz = sizeof(o_hdr_pe32p) + sizeof(t_sec) + sizeof(e_hdr_pe32p) +
-- sizeof(r_sec) + sizeof(c_hdr) + sizeof(hdr) + sizeof(c_rel)
-- + sizeof(dummy);
-- total_sz += hdr_sz;
-- entry += hdr_sz;
- c_hdr.arch = IMAGE_FILE_MACHINE_X86_64;
- c_hdr.characteristics = IMAGE_FILE_DEBUG_STRIPPED | IMAGE_FILE_EXECUTABLE_IMAGE |
- IMAGE_FILE_LINE_NUMBERS_STRIPPED;
-@@ -120,15 +114,15 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- o_hdr_pe32p.format = PE32P_FORMAT;
- o_hdr_pe32p.major_linker_version = 0x02;
- o_hdr_pe32p.minor_linker_version = 0x14;
-- o_hdr_pe32p.code_sz = total_sz;
-+ o_hdr_pe32p.code_sz = data_size;
- o_hdr_pe32p.entry_point = entry;
- o_hdr.initialized_data_sz = data_size;
- fwrite(&o_hdr_pe32p, sizeof(o_hdr_pe32p), 1, f);
- memset(&e_hdr_pe32p, 0, sizeof(e_hdr));
- e_hdr_pe32p.section_align = 4096;
- e_hdr_pe32p.file_align = 512;
-- e_hdr_pe32p.image_sz = total_sz;
-- e_hdr_pe32p.headers_sz = 512;
-+ e_hdr_pe32p.image_sz = hdr_sz + so_size;
-+ e_hdr_pe32p.headers_sz = hdr_sz;
- e_hdr_pe32p.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- e_hdr_pe32p.rva_and_sizes_nr = sizeof(e_hdr_pe32p.data_directory) / sizeof(__uint64_t);
- fwrite(&e_hdr_pe32p, sizeof(e_hdr_pe32p), 1, f);
-@@ -136,8 +130,10 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
-
- memset(&t_sec, 0, sizeof(t_sec));
- strcpy((char *)t_sec.name, ".text");
-- t_sec.virtual_sz = total_sz;
-- t_sec.raw_data_sz = total_sz;
-+ t_sec.virtual_sz = data_size;
-+ t_sec.virtual_address = hdr_sz;
-+ t_sec.raw_data_sz = t_sec.virtual_sz;
-+ t_sec.raw_data = t_sec.virtual_address;
- t_sec.characteristics = IMAGE_SCN_CNT_CODE |
- IMAGE_SCN_ALIGN_16BYTES | IMAGE_SCN_MEM_EXECUTE |
- IMAGE_SCN_MEM_READ;
-@@ -163,6 +159,16 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- fwrite(&c_rel, sizeof(c_rel), 1, f);
- fwrite(&dummy, sizeof(dummy), 1, f);
-
-+ /*
-+ * Add some padding to align the ELF as needed
-+ */
-+ if (ftell(f) > t_sec.virtual_address) {
-+ // A fseek that rewind would be a bug hard to track
-+ fprintf(stderr, "PE+ headers are too large.\n");
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ fseek(f, t_sec.virtual_address, SEEK_SET);
- }
-
- static void usage(char *progname)
-There is no need to have a relocation section that nothing points at.
-The image is still seen as relocatable as long as the Characteristics of
-the FileHeader do not say otherwise.
-
-Moreover, the field base_relocation_table wasn't initialized properly
-leading to unpredictable bugs.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
-
-I'm not 100% positive about the uselessness of the relocation section. However:
-1) it works on my real hardware;
-2) OVMF doesn't check the section headers at all;
-3) all the docs I could find say that the section names are arbitrary;
-4) the only way to make the relocation actually happen is by setting the
-base_relocation_table field of the extra headers to point to this section;
-5) The right way to indicate the image is not relocatable would be by setting
-the characteristics IMAGE_FILE_RELOCS_STRIPPED in the coff header.
-
-Moreover, the relocation entry cannot be inserted before the end of the headers
-(512 bytes), this mean we would have to push everything a few bytes further.
-And I think it's better if it can be avoided. :)
-
- efi/wrapper.c | 28 +++-------------------------
- 1 file changed, 3 insertions(+), 25 deletions(-)
-
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index bd2c175..9652368 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -48,14 +48,12 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- {
- struct optional_hdr o_hdr;
- struct optional_hdr_pe32p o_hdr_pe32p;
-- struct section t_sec, r_sec;
-+ struct section t_sec;
- struct extra_hdr e_hdr;
- struct extra_hdr_pe32p e_hdr_pe32p;
- struct coff_hdr c_hdr;
- struct header hdr;
-- struct coff_reloc c_rel;
- __uint32_t total_sz = data_size;
-- __uint32_t dummy = 0;
- __uint32_t hdr_sz;
- __uint32_t reloc_start, reloc_end;
-
-@@ -78,7 +76,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- fwrite(&hdr, sizeof(hdr), 1, f);
-
- memset(&c_hdr, 0, sizeof(c_hdr));
-- c_hdr.nr_sections = 2;
-+ c_hdr.nr_sections = 1;
- c_hdr.nr_syms = 1;
- if (class == ELFCLASS32) {
- c_hdr.arch = IMAGE_FILE_MACHINE_I386;
-@@ -118,7 +116,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- o_hdr_pe32p.entry_point = entry;
- o_hdr.initialized_data_sz = data_size;
- fwrite(&o_hdr_pe32p, sizeof(o_hdr_pe32p), 1, f);
-- memset(&e_hdr_pe32p, 0, sizeof(e_hdr));
-+ memset(&e_hdr_pe32p, 0, sizeof(e_hdr_pe32p));
- e_hdr_pe32p.section_align = 4096;
- e_hdr_pe32p.file_align = 512;
- e_hdr_pe32p.image_sz = hdr_sz + so_size;
-@@ -140,26 +138,6 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- fwrite(&t_sec, sizeof(t_sec), 1, f);
-
- /*
-- * Write our dummy relocation and reloc section.
-- */
-- memset(&r_sec, 0, sizeof(r_sec));
-- strcpy((char *)r_sec.name, ".reloc");
-- r_sec.virtual_sz = sizeof(c_rel);
-- r_sec.virtual_address = ftell(f) + sizeof(r_sec);
-- r_sec.raw_data_sz = r_sec.virtual_sz;
-- r_sec.raw_data = r_sec.virtual_address;
-- r_sec.characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA |
-- IMAGE_SCN_ALIGN_1BYTES | IMAGE_SCN_MEM_DISCARDABLE |
-- IMAGE_SCN_MEM_READ;
-- fwrite(&r_sec, sizeof(r_sec), 1, f);
--
-- memset(&c_rel, 0, sizeof(c_rel));
-- c_rel.virtual_address = ftell(f) + sizeof(c_rel);
-- c_rel.symtab_index = 10;
-- fwrite(&c_rel, sizeof(c_rel), 1, f);
-- fwrite(&dummy, sizeof(dummy), 1, f);
--
-- /*
- * Add some padding to align the ELF as needed
- */
- if (ftell(f) > t_sec.virtual_address) {
-PE headers code_sz and image_sz indicate more or less, the size of the
-file and the size of the in-memory image. They are now given the right
-value.
-
-In the ELF format, only the program headers are reliable to determine
-the actually needed part of the file and the in-memory size.
-
-The .bss section should always be marked as NOLOAD for ld since its
-content shouldn't be included into the binary file.
-
-Signed-off-by: Celelibi <celelibi at gmail.com>
----
-
-Again, I'm not 100% positive about the semantics of NOLOAD in a linker script.
-However I found this make things work better.
-Actually the file core/fs/fs.o have a .bss16 section that is not empty. If I
-understood correctly, only .bss can be empty in a .o. Thus ld generates the
-zeros that belong to that section in the .o. Then, when merging the section
-.bss16 into the .bss of syslinux.so, ld is forced to generate ALL the zeros
-that belong to the .bss section. Marking this section as NOLOAD make ld to
-ignore its content but still produce a PT_LOAD program header with the right
-memory size, as needed for the bss.
-
- efi/i386/syslinux.ld | 4 +-
- efi/wrapper.c | 138 +++++++++++++++----------------------------------
- efi/x86_64/syslinux.ld | 4 +-
- 3 files changed, 45 insertions(+), 101 deletions(-)
-
-diff --git a/efi/i386/syslinux.ld b/efi/i386/syslinux.ld
-index 523a9b9..bab3fc7 100644
---- a/efi/i386/syslinux.ld
-+++ b/efi/i386/syslinux.ld
-@@ -136,7 +136,7 @@ SECTIONS
- *(.strtab)
- }
-
-- .bss : {
-+ .bss (NOLOAD) : {
- /* the EFI loader doesn't seem to like a .bss section,
- so we stick it all into .data: */
- __bss_start = .;
-@@ -153,7 +153,7 @@ SECTIONS
- __bss_dwords = (__bss_len + 3) >> 2;
-
- . = ALIGN(128);
--
-+
- /* Very large objects which don't need to be zeroed */
-
- .hugebss : {
-diff --git a/efi/wrapper.c b/efi/wrapper.c
-index 9652368..a5247ae 100644
---- a/efi/wrapper.c
-+++ b/efi/wrapper.c
-@@ -35,7 +35,7 @@ typedef Elf64_Addr Elf_Addr;
- #endif
-
- /*
-- * 'so_size' is the file size of the ELF shared object.
-+ * 'so_memsz' is the size of the ELF shared object once loaded.
- * 'data_size' is the size of initialised data in the shared object.
- * 'class' dictates how the header is written
- * For 32bit machines (class == ELFCLASS32), the optional
-@@ -44,7 +44,7 @@ typedef Elf64_Addr Elf_Addr;
- * header includes PE32+header fields
- */
- static void write_header(FILE *f, __uint32_t entry, size_t data_size,
-- __uint32_t so_size, __uint8_t class)
-+ __uint32_t so_memsz, __uint8_t class)
- {
- struct optional_hdr o_hdr;
- struct optional_hdr_pe32p o_hdr_pe32p;
-@@ -96,7 +96,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- memset(&e_hdr, 0, sizeof(e_hdr));
- e_hdr.section_align = 4096;
- e_hdr.file_align = 512;
-- e_hdr.image_sz = hdr_sz + so_size;
-+ e_hdr.image_sz = hdr_sz + so_memsz;
- e_hdr.headers_sz = hdr_sz;
- e_hdr.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- e_hdr.rva_and_sizes_nr = sizeof(e_hdr.data_directory) / sizeof(__uint64_t);
-@@ -119,7 +119,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
- memset(&e_hdr_pe32p, 0, sizeof(e_hdr_pe32p));
- e_hdr_pe32p.section_align = 4096;
- e_hdr_pe32p.file_align = 512;
-- e_hdr_pe32p.image_sz = hdr_sz + so_size;
-+ e_hdr_pe32p.image_sz = hdr_sz + so_memsz;
- e_hdr_pe32p.headers_sz = hdr_sz;
- e_hdr_pe32p.subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
- e_hdr_pe32p.rva_and_sizes_nr = sizeof(e_hdr_pe32p.data_directory) / sizeof(__uint64_t);
-@@ -157,17 +157,16 @@ static void usage(char *progname)
-
- int main(int argc, char **argv)
- {
-- struct stat st;
- Elf32_Ehdr e32_hdr;
- Elf64_Ehdr e64_hdr;
- __uint32_t entry;
- __uint8_t class;
-- __uint64_t shoff;
-- __uint16_t shnum, shentsize, shstrndx;
-+ __uint64_t phoff = 0;
-+ __uint16_t phnum = 0, phentsize = 0;
- unsigned char *id;
- FILE *f_in, *f_out;
- void *buf;
-- size_t datasz, rv;
-+ size_t datasz, memsz, rv;
-
- if (argc < 3) {
- usage(argv[0]);
-@@ -180,11 +179,6 @@ int main(int argc, char **argv)
- exit(EXIT_FAILURE);
- }
-
-- if (stat(argv[1], &st) != 0) {
-- perror("stat");
-- exit(EXIT_FAILURE);
-- }
--
- f_out = fopen(argv[2], "w");
- if (!f_out) {
- perror("fopen");
-@@ -194,15 +188,14 @@ int main(int argc, char **argv)
- /*
- * Parse the ELF header and find the entry point.
- */
-- fread((void *)&e32_hdr, sizeof(e32_hdr), 1, f_in);
-+ fread((void *)&e32_hdr, sizeof(e32_hdr), 1, f_in);
- if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS32) {
- id = e32_hdr.e_ident;
- class = ELFCLASS32;
- entry = e32_hdr.e_entry;
-- shoff = e32_hdr.e_shoff;
-- shnum = e32_hdr.e_shnum;
-- shstrndx = e32_hdr.e_shstrndx;
-- shentsize = e32_hdr.e_shentsize;
-+ phoff = e32_hdr.e_phoff;
-+ phnum = e32_hdr.e_phnum;
-+ phentsize = e32_hdr.e_phentsize;
- }
- else if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS64) {
- /* read the header again for x86_64
-@@ -213,10 +206,9 @@ int main(int argc, char **argv)
- fread((void *)&e64_hdr, sizeof(e64_hdr), 1, f_in);
- id = e64_hdr.e_ident;
- entry = e64_hdr.e_entry;
-- shoff = e64_hdr.e_shoff;
-- shnum = e64_hdr.e_shnum;
-- shstrndx = e64_hdr.e_shstrndx;
-- shentsize = e64_hdr.e_shentsize;
-+ phoff = e64_hdr.e_phoff;
-+ phnum = e64_hdr.e_phnum;
-+ phentsize = e64_hdr.e_phentsize;
- } else {
- fprintf(stderr, "Unsupported architecture\n");
- exit(EXIT_FAILURE);
-@@ -230,98 +222,47 @@ int main(int argc, char **argv)
- exit(EXIT_FAILURE);
- }
-
-- if (!shoff || !shnum || (shstrndx == SHN_UNDEF)) {
-- fprintf(stderr, "Cannot find section table\n");
-+ if (!phoff || !phnum) {
-+ fprintf(stderr, "Cannot find segment table\n");
- exit(EXIT_FAILURE);
- }
-
- /*
-- * Find the beginning of the .bss section. Everything preceding
-- * it is copied verbatim to the output file.
-+ * Find the LOAD program header. Everything in this segment
-+ * is copied verbatim to the output file.
-+ * Although there may be several LOAD program headers, only
-+ * one is currently copied.
- */
- if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS32) {
-- const char *shstrtab, *name;
-- Elf32_Shdr shdr;
-+ Elf32_Phdr phdr;
- int i;
-- void *strtab;
--
-- fseek(f_in, shoff, SEEK_SET);
--
-- /* First find the strtab section */
-- fseek(f_in, shstrndx * shentsize, SEEK_CUR);
-- fread(&shdr, sizeof(shdr), 1, f_in);
-
-- strtab = malloc(shdr.sh_size);
-- if (!strtab) {
-- fprintf(stderr, "Failed to malloc strtab\n");
-- exit(EXIT_FAILURE);
-- }
--
-- fseek(f_in, shdr.sh_offset, SEEK_SET);
-- fread(strtab, shdr.sh_size, 1, f_in);
--
-- /* Now search for the .bss section */
-- fseek(f_in, shoff, SEEK_SET);
-- for (i = 0; i < shnum; i++) {
-- rv = fread(&shdr, sizeof(shdr), 1, f_in);
-- if (!rv) {
-- fprintf(stderr, "Failed to read section table\n");
-- exit(EXIT_FAILURE);
-- }
-+ /* Find the first LOAD program header */
-+ for (i = 0; i < phnum; i++) {
-+ fseek(f_in, phoff + i * phentsize, SEEK_SET);
-+ fread(&phdr, sizeof(phdr), 1, f_in);
-
-- name = strtab + shdr.sh_name;
-- if (!strcmp(name, ".bss"))
-+ if (phdr.p_type == PT_LOAD)
- break;
- }
-
-- if (i == shnum) {
-- fprintf(stderr, "Failed to find .bss section\n");
-- exit(EXIT_FAILURE);
-- }
--
-- datasz = shdr.sh_offset;
-- }
-- else if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS64) {
-- const char *shstrtab, *name;
-- Elf64_Shdr shdr;
-+ datasz = phdr.p_filesz;
-+ memsz = phdr.p_memsz;
-+ } else if (e32_hdr.e_ident[EI_CLASS] == ELFCLASS64) {
-+ Elf64_Phdr phdr;
- int i;
-- void *strtab;
--
-- fseek(f_in, shoff, SEEK_SET);
-
-- /* First find the strtab section */
-- fseek(f_in, shstrndx * shentsize, SEEK_CUR);
-- fread(&shdr, sizeof(shdr), 1, f_in);
--
-- strtab = malloc(shdr.sh_size);
-- if (!strtab) {
-- fprintf(stderr, "Failed to malloc strtab\n");
-- exit(EXIT_FAILURE);
-- }
-+ /* Find the first LOAD program header */
-+ for (i = 0; i < phnum; i++) {
-+ fseek(f_in, phoff + i * phentsize, SEEK_SET);
-+ fread(&phdr, sizeof(phdr), 1, f_in);
-
-- fseek(f_in, shdr.sh_offset, SEEK_SET);
-- fread(strtab, shdr.sh_size, 1, f_in);
--
-- /* Now search for the .bss section */
-- fseek(f_in, shoff, SEEK_SET);
-- for (i = 0; i < shnum; i++) {
-- rv = fread(&shdr, sizeof(shdr), 1, f_in);
-- if (!rv) {
-- fprintf(stderr, "Failed to read section table\n");
-- exit(EXIT_FAILURE);
-- }
--
-- name = strtab + shdr.sh_name;
-- if (!strcmp(name, ".bss"))
-+ if (phdr.p_type == PT_LOAD)
- break;
- }
-
-- if (i == shnum) {
-- fprintf(stderr, "Failed to find .bss section\n");
-- exit(EXIT_FAILURE);
-- }
--
-- datasz = shdr.sh_offset;
-+ datasz = phdr.p_filesz;
-+ memsz = phdr.p_memsz;
- }
-
- buf = malloc(datasz);
-@@ -330,7 +271,7 @@ int main(int argc, char **argv)
- exit(EXIT_FAILURE);
- }
-
-- write_header(f_out, entry, datasz, st.st_size, class);
-+ write_header(f_out, entry, datasz, memsz, class);
-
- /* Write out the entire ELF shared object */
- rewind(f_in);
-@@ -341,5 +282,8 @@ int main(int argc, char **argv)
- }
-
- fwrite(buf, datasz, rv, f_out);
-+ free(buf);
-+ fclose(f_out);
-+ fclose(f_in);
- return 0;
- }
-diff --git a/efi/x86_64/syslinux.ld b/efi/x86_64/syslinux.ld
-index 95160bd..450641c 100644
---- a/efi/x86_64/syslinux.ld
-+++ b/efi/x86_64/syslinux.ld
-@@ -136,7 +136,7 @@ SECTIONS
- *(.strtab)
- }
-
-- .bss : {
-+ .bss (NOLOAD) : {
- /* the EFI loader doesn't seem to like a .bss section,
- so we stick it all into .data: */
- __bss_start = .;
-@@ -153,7 +153,7 @@ SECTIONS
- __bss_dwords = (__bss_len + 3) >> 2;
-
- . = ALIGN(128);
--
-+
- /* Very large objects which don't need to be zeroed */
-
- .hugebss : {
diff --git a/libre/syslinux/syslinux-install_update b/libre/syslinux/syslinux-install_update
deleted file mode 100644
index 3843b5fed..000000000
--- a/libre/syslinux/syslinux-install_update
+++ /dev/null
@@ -1,453 +0,0 @@
-#!/usr/bin/env bash
-#
-# Syslinux Installer / Updater Script (for BIOS only)
-# Copyright (C) 2011-2013 Matthew Gyurgyik <pyther@pyther.net>
-# Copyright (C) 2013 Keshav Padram Amburay <(the) (ddoott) (ridikulus) (ddoott) (rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-#-----------------
-# ChangeLog:
-# 2013-10-23 : Keshav Padram Amburay : Updated script to work with Syslinux 6.02 Arch Linux pkg
-#-----------------
-# Exit Codes:
-# 1 - get_boot_device or other function failed
-# 2 - install/update failed
-# 3 - set_active failed
-# 4 - install_mbr failed
-#-----------------
-
-shopt -s nullglob
-
-bios_libpath="/usr/lib/syslinux/bios"
-bios_bootpath="/boot/syslinux"
-EXTLINUX="/usr/bin/extlinux"
-
-bios_autoupdate_file="/boot/syslinux/SYSLINUX_AUTOUPDATE"
-pciids_file="/usr/share/hwdata/pci.ids"
-
-## Helper functions ##
-# Taken from libui-sh
-# $1 needle
-# $2 set (array) haystack
-check_is_in() {
- local needle="$1" element
- shift
- for element; do
- [[ $element = $needle ]] && return 0
- done
- return 1
-}
-
-# return true when blockdevice is an md raid, otherwise return a unset value
-# get all devices that are part of raid device $1
-device_is_raid() {
- [[ $1 && -f /proc/mdstat ]] || return 1
- local devmajor=$(stat -c %t "$1")
- (( devmajor == 9 ))
-}
-
-mdraid_all_slaves() {
- local slave slaves
- for slave in /sys/class/block/${1##*/}/slaves/*; do
- source "$slave/uevent"
- slaves="$slaves/dev/$DEVNAME "
- unset DEVNAME
- done
- echo $slaves
-}
-
-# Check /sys/block to see if device is partitioned
-# If we have a partitioned block device (sda1) /sys/block/sda1/dev will not exist
-# However, if we have an unpartitioned block device (sda) /sys/block/sda/dev will exist
-dev_is_part() {
- # $1 - blockdevice
- local dev=$1
-
- # If block device uevent file should be found
- # If a partition is passed in path shouldn't exist
- if [[ $dev = *cciss* ]]; then
- [[ -f /sys/block/cciss\!${dev##*/}/dev ]] && return 1
- elif [[ $dev = *ida* ]]; then
- [[ -f /sys/block/ida\!${dev##*/}/dev ]] && return 1
- else
- [[ -f /sys/block/${dev##*/}/dev ]] && return 1
- fi
-
- return 0
-}
-
-# If EFI PART is present in the first 8 bytes then it must be a GPT disk
-device_is_gpt() {
- local partsig=$(dd if="$1" skip=64 bs=8 count=1 2>/dev/null)
- [[ $partsig = "EFI PART" ]]
-}
-
-clear_gpt_attr2() {
- # $1 - Block Device, no partitions
- local disk=$1
-
- # Special Exception for cciss controllers
- if [[ $disk = *cciss* ]]; then
- for part in /dev/cciss/${disk##*/}*p*; do
- local partnum="${part##*[[:alpha:]]}"
- sgdisk "$disk" --attributes="$partnum":clear:2 &>/dev/null
- done
- # Smart 2 Controllers
- elif [[ $disk = *ida* ]]; then
- for part in /dev/ida/${disk##*/}*p*; do
- local partnum="${part##*[[:alpha:]]}"
- sgdisk "$disk" --attributes="$partnum":clear:2 &>/dev/null
- done
- else
- for part in /sys/block/${disk##*/}/${disk##*/}*; do
- local partnum="${part##*[[:alpha:]]}"
- sgdisk "$disk" --attributes="$partnum":clear:2 &>/dev/null
- done
- fi
- return 0
-}
-
-usage() {
-cat << EOF
-usage: $0 options
-
-This script will install or upgrade Syslinux (for BIOS only)
-
-OPTIONS:
- -h Show this message
- -i Install Syslinux
- -u Update Syslinux
- -a Set Boot flag on boot partiton
- -m Install Syslinux MBR
- -s Updates Syslinux if /boot/syslinux/SYSLINUX_AUTOUPDATE exists
-
- Arguments Required:
- -c Chroot install (ex: -c /mnt)
-
-Example Usage: $0 -i -a -m # (install, set boot flag, install mbr)
- $0 -u # (update)
-EOF
-}
-
-# Trys to find the partition that /boot resides on
-# This will either be on /boot or / (root)
-getBoot() {
- if [[ ! -d "$bios_bootpath" ]]; then
- echo "Could not find $bios_bootpath"
- echo "Is boot mounted? Is Syslinux installed?"
- exit 1
- fi
-
- syslinux_fs=(ext2 ext3 ext4 btrfs vfat)
-
- # Use DATA from findmnt see rc.sysint for more info
- if [[ -f /proc/self/mountinfo ]]; then
- read rootdev rootfs < <(findmnt -run -t noautofs -o SOURCE,FSTYPE "$CHROOT/")
- read bootdev bootfs < <(findmnt -run -t noautofs -o SOURCE,FSTYPE "$CHROOT/boot")
- else
- echo "Could not find /proc/self/mountinfo"
- echo "Are you running a kernel greater than 2.6.24?"
- exit 1
- fi
-
- if [[ $bootfs ]]; then
- if ! check_is_in "$bootfs" "${syslinux_fs[@]}"; then
- echo "/boot file system is not supported by Syslinux"
- exit 1
- fi
- boot="boot"
- bootpart="$bootdev"
- elif [[ $rootfs ]]; then
- if ! check_is_in "$rootfs" "${syslinux_fs[@]}"; then
- echo "/ (root) file system is not supported by Syslinux"
- exit 1
- fi
- boot="root"
- bootpart="$rootdev"
- else
- echo "Could not find filesystem on / (root) or /boot."
- exit 1
- fi
-}
-
-# We store the partition table type either gpt or mbr in var ptb
-# In rare cases a user could have one raid disk using mbr and another using gpt
-# In such cases we accept that the output may be incomplete
-
-# Calls get_ptb() for $bootpart or for all device in RAID
-declare -A bootdevs
-get_boot_devices() {
- if device_is_raid "$bootpart"; then
- slaves=$(mdraid_all_slaves "$bootpart")
-
- for slave in ${slaves[@]}; do
- local disk="${slave%%[[:digit:]]*}"
- device_is_gpt "$disk" && local ptb="GPT" || local ptb="MBR"
- bootdevs[$slave]="$ptb"
- done
- else
- local disk="${bootpart%%[[:digit:]]*}"
- device_is_gpt "$disk" && local ptb="GPT" || local ptb="MBR"
- bootdevs[$bootpart]="$ptb"
- fi
-}
-
-# Function Assumes the boot partition should be marked as active
-# All other partitions should not have the boot flag set
-set_active() {
- # If any bootdev is a block device without partitions bail
- # we want to set the boot flag on partitioned disk
- for dev in "${!bootdevs[@]}"; do
- dev_is_part $dev || { echo "$dev - is a block device. Aborting set_active!"; return 1; }
- done
-
- # Clear BIOS Bootable Legacy Attribute for GPT drives
- # In rare cases where a RAID device has slaves on the same block device
- # Attribute 2 will be cleared for each partition multiple times
- for dev in "${!bootdevs[@]}"; do
- local ptb="${bootdevs[$dev]}"
- if [[ "$ptb" = GPT ]]; then
- local disk="${dev%%[[:digit:]]*}" #ex: /dev/sda
- clear_gpt_attr2 "$disk"
- fi
- done
-
- # Set the boot flag on bootdevs (generated from get_boot_devices)
- for part in "${!bootdevs[@]}"; do
- local ptb="${bootdevs[$part]}"
- local partnum="${part##*[[:alpha:]]}"
- case "$part" in
- *[[:digit:]]p[[:digit:]]*)
- local disk="${part%%p$partnum}" # get everything before p1
- ;;
- *)
- local disk="${part%%[[:digit:]]*}"
- ;;
- esac
-
- if [[ "$ptb" = MBR ]]; then
- if sfdisk "$disk" -A "$partnum" &>/dev/null; then
- echo "Boot Flag Set - $part"
- else
- echo "FAILED to Set the boot flag on $part"
- exit 3
- fi
- elif [[ "$ptb" = GPT ]]; then
- if sgdisk "$disk" --attributes="$partnum":set:2 &>/dev/null; then
- echo "Attribute Legacy Bios Bootable Set - $part"
- else
- echo "FAILED to set attribute Legacy BIOS Bootable on $part"
- exit 3
- fi
- fi
- done
- return 0
-}
-
-install_mbr() {
- # If any bootdev is a block device without partitions bail
- # we want to install the mbr to a partitioned disk
- for dev in "${!bootdevs[@]}"; do
- dev_is_part "$dev" || { echo "$dev - is a block device. Aborting MBR install"; return 1; }
- done
-
- for part in "${!bootdevs[@]}"; do
- local partnum="${part##*[[:alpha:]]}"
- case "$part" in
- *[[:digit:]]p[[:digit:]]*)
- local disk="${part%%p$partnum}" # get everything before p1
- ;;
- *)
- local disk="${part%%[[:digit:]]*}"
- ;;
- esac
- local ptb="${bootdevs[$part]}"
-
- # We want to install to the root of the block device
- # If the device is a partition - ABORT!
- dev_is_part "$disk" && \
- { echo "ABORT! MBR installation to partition ($disk)!"; exit 4;}
-
- if [[ "$ptb" = MBR ]]; then
- mbrfile="$bios_libpath/mbr.bin"
- elif [[ "$ptb" = GPT ]]; then
- mbrfile="$bios_libpath/gptmbr.bin"
- fi
-
- if dd bs=440 count=1 conv=notrunc if="$mbrfile" of="$disk" &> /dev/null; then
- echo "Installed MBR ($mbrfile) to $disk"
- else
- echo "Error Installing MBR ($mbrfile) to $disk"
- exit 4
- fi
- done
- return 0
-}
-
-install_modules() {
- # Copy all syslinux *.c32 modules to /boot
- rm "$bios_bootpath"/*.c32 &> /dev/null
- cp "$bios_libpath"/*.c32 "$bios_bootpath"/ &> /dev/null
-
- # Copy / Symlink pci.ids if pci.ids exists on the FS
- if [[ -f "$pciids_file" ]]; then
- rm "$bios_bootpath/pci.ids" &> /dev/null
- cp "$pciids_file" "$bios_bootpath/pci.ids" &> /dev/null
- fi
-}
-
-_install() {
- install_modules
-
- if device_is_raid "$bootpart" ; then
- echo "Detected RAID on /boot - installing Syslinux with --raid"
- "$EXTLINUX" --install "$bios_bootpath" --raid &> /dev/null
- else
- "$EXTLINUX" --install "$bios_bootpath" &> /dev/null
- fi
-
- if (( $? )); then
- echo "Syslinux BIOS install failed"
- exit 2
- else
- echo "Syslinux BIOS install successful"
- fi
-
- touch "$CHROOT/$bios_autoupdate_file"
-}
-
-update() {
- install_modules
-
- if device_is_raid "$bootpart" ; then
- echo "Detected RAID on /boot - updating Syslinux with --raid"
- "$EXTLINUX" --update "$bios_bootpath" --raid &> /dev/null
- else
- "$EXTLINUX" --update "$bios_bootpath" &> /dev/null
- fi
-
- if (($?)); then
- echo "Syslinux BIOS update failed"
- exit 2
- else
- echo "Syslinux BIOS update successful"
- fi
-}
-
-if (( $# == 0 )); then
- usage
- exit 1
-fi
-
-while getopts "c:uihmas" opt; do
- case $opt in
- c)
- CHROOT=$(readlink -e "$OPTARG")
- if [[ -z $CHROOT ]]; then
- echo "error: chroot path ``$OPTARG does not exist";
- exit 1
- fi
- ;;
- h)
- USAGE="True"
- ;;
- i)
- INSTALL="True"
- ;;
- u)
- UPDATE="True"
- ;;
- m)
- MBR="True"
- ;;
- a)
- SET_ACTIVE="True"
- ;;
- s)
- # If AUTOUPDATE_FILE does not exist exit the script
- if [[ -f $bios_autoupdate_file ]]; then
- UPDATE="True"
- else
- exit 0
- fi
- ;;
- *)
- usage
- exit 1
- ;;
- esac
-done
-
-if [[ $USAGE ]]; then
- usage
- exit 0
-fi
-
-# Display Usage Information if both Install and Update are passed
-if [[ $INSTALL && $UPDATE ]]; then
- usage
- exit 1
-fi
-
-# Make sure only root can run our script
-if (( $(id -u) != 0 )); then
- echo "This script must be run as root" 1>&2
- exit 1
-fi
-
-# If a chroot dir is path set variables to reflect chroot
-if [[ "$CHROOT" ]]; then
- bios_libpath="$CHROOT$bios_libpath"
- bios_bootpath="$CHROOT$bios_bootpath"
- EXTLINUX="$CHROOT$EXTLINUX"
-fi
-
-# Exit if no /boot path exists
-if ( f=("$bios_bootpath"/*); (( ! ${#f[@]} )) ); then
- echo "Error: $bios_bootpath is empty!"
- echo "Is /boot mounted?"
- exit 1
-fi
-
-# Get the boot device if any of these options are passed
-if [[ $INSTALL || $UPDATE || $SET_ACTIVE || $MBR ]]; then
- getBoot
-fi
-
-# Install or Update
-if [[ $INSTALL ]]; then
- _install || exit
-elif [[ $UPDATE ]]; then
- update || exit
-fi
-
-
-# SET_ACTIVE and MBR
-if [[ $SET_ACTIVE ]] || [[ $MBR ]]; then
- get_boot_devices
-
- if [[ $SET_ACTIVE ]]; then
- set_active || exit
- fi
-
- if [[ $MBR ]]; then
- install_mbr || exit
- fi
-fi
-
-exit 0
-
-# vim: set et sw=4:
diff --git a/libre/syslinux/syslinux.cfg b/libre/syslinux/syslinux.cfg
deleted file mode 100644
index 0c0c6339a..000000000
--- a/libre/syslinux/syslinux.cfg
+++ /dev/null
@@ -1,78 +0,0 @@
-# Config file for Syslinux -
-# /boot/syslinux/syslinux.cfg
-#
-# Comboot modules:
-# * menu.c32 - provides a text menu
-# * vesamenu.c32 - provides a graphical menu
-# * chain.c32 - chainload MBRs, partition boot sectors, Windows bootloaders
-# * hdt.c32 - hardware detection tool
-# * reboot.c32 - reboots the system
-#
-# To Use: Copy the respective files from /usr/lib/syslinux to /boot/syslinux.
-# If /usr and /boot are on the same file system, symlink the files instead
-# of copying them.
-#
-# If you do not use a menu, a 'boot:' prompt will be shown and the system
-# will boot automatically after 5 seconds.
-#
-# Please review the wiki: https://wiki.archlinux.org/index.php/Syslinux
-# The wiki provides further configuration examples
-
-DEFAULT parabola
-PROMPT 0 # Set to 1 if you always want to display the boot: prompt
-TIMEOUT 50
-# You can create syslinux keymaps with the keytab-lilo tool
-#KBDMAP de.ktl
-
-# Menu Configuration
-# Either menu.c32 or vesamenu32.c32 must be copied to /boot/syslinux
-#UI menu.c32
-UI vesamenu.c32
-
-# Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu
-MENU TITLE Parabola GNU/Linux-libre
-MENU BACKGROUND splash.png
-MENU COLOR border 35;40 #ff777caa #a0000000 std
-MENU COLOR title 1;35;40 #ff777caa #a0000000 std
-MENU COLOR sel 7;35;47 #e0ffffff #20777caa all
-MENU COLOR unsel 35;40 #ff777caa #a0000000 std
-MENU COLOR help 35;40 #c0b2b2b2 #a0000000 std
-MENU COLOR timeout_msg 35;40 #ff777caa #00000000 std
-MENU COLOR timeout 1;35;40 #ff777caa #00000000 std
-MENU COLOR msg07 35;40 #ff777caa #a0000000 std
-MENU COLOR tabmsg 35;40 #ff777caa #00000000 std
-
-# boot sections follow
-#
-# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
-#
-#-*
-
-LABEL parabola
- MENU LABEL Parabola GNU/Linux-libre
- LINUX ../vmlinuz-linux-libre
- APPEND root=/dev/sda3 rw
- INITRD ../initramfs-linux-libre.img
-
-LABEL parabolafallback
- MENU LABEL Parabola GNU/Linux-libre Fallback
- LINUX ../vmlinuz-linux-libre
- APPEND root=/dev/sda3 rw
- INITRD ../initramfs-linux-libre-fallback.img
-
-# If you want Memtest on syslinux, use this LABEL section to launch it (install the memtest86+ package)
-# LABEL memtest
-# MENU LABEL Memtest86+
-# LINUX ../memtest86+/memtest.bin
-
-LABEL hdt
- MENU LABEL HDT (Hardware Detection Tool)
- COM32 hdt.c32
-
-LABEL reboot
- MENU LABEL Reboot
- COM32 reboot.c32
-
-LABEL poweroff
- MENU LABEL Poweroff
- COM32 poweroff.c32
diff --git a/libre/syslinux/syslinux.install b/libre/syslinux/syslinux.install
deleted file mode 100644
index ed8387773..000000000
--- a/libre/syslinux/syslinux.install
+++ /dev/null
@@ -1,43 +0,0 @@
-post_install() {
-
- cat << EOF
-
-==> For setting up Syslinux BIOS using the syslinux-install_update script follow
- https://wiki.parabolagnulinux.org/index.php/Syslinux#Automatic_Install
-EOF
-
- ## Message specific to Syslinux 4.xx (or 5.xx) to 6.xx upgrade
- if [ "$(vercmp $2 6.00)" -lt 0 ]; then
-
- cat << EOF
-
-==> If you are upgrading from Syslinux 4.xx or 5.xx, please re-install
- (not update) Syslinux BIOS manually (not using the install script) once
- by following https://wiki.parabolagnulinux.org/index.php/Syslinux#Manual_install
-
-==> The install script may not properly upgrade Syslinux to 6.xx version
-EOF
-
- fi
-
- cat << EOF
-
-==> For setting up Syslinux EFI follow
- https://wiki.parabolagnulinux.org/index.php/Syslinux#UEFI_Systems
-
-==> The syslinux-install_update script does not currently support EFI install
-
-EOF
-
-}
-
-post_upgrade() {
-
- ## auto-update syslinux if /boot/syslinux/SYSLINUX_AUTOUPDATE exists
- /usr/bin/syslinux-install_update -s
-
- post_install
-
-}
-
-# vim:set ts=2 sw=2 et: