Re: [coreboot] FILO 0.6.0 payload bootloader - Bug Reports!
Maybe a problem is 1TB size of my hard drive? (because FILO doesn't work even with a small /boot partition) FILO uses libpayload storage drivers, and surprisingly - by default, STORAGE_64BIT_LBA option is disabled at ./coreboot/payloads/libpayload/drivers/storage/Kconfig ... config STORAGE_64BIT_LBA bool "Use 64-bit integers to address sectors" depends on STORAGE default n help If this is selected, sectors will be addressed by an 64-bit integer. Select this to support LBA-48 for ATA drives. LBA-48 is must have for the hard drives above 137 GB, why is it still disabled? Looks like nobody using FILO for a long time, thats why no SATA messages and no LBA-48 by default Thank you very much for your workaround about cross-compiling, now I could compile FILO on x86_64 OS. But sadly there is a big new problem, probably related to the updated gcc-6.3.0 (even with coreboot's gcc-6.3.0) : While booting, FILO "freezes" while relocating: ./filo/x86/segment.c , void relocate(void) . After enabling debug configs and inserting some additional print messages, could clearly see that this assembly is a problem: __asm__ __volatile__("rep; movsb\n\t"/* copy everything */ "lgdt %3\n\t" "ljmp %4, $1f\n1:\t" "movw %5, %%ds\n\t" "movw %5, %%es\n\t" "movw %5, %%fs\n\t" "movw %5, %%gs\n\t" "movw %5, %%ss\n":"="(d0), "="(d1), "="(d2) :"m"(gdtarg), "n"(RELOC_CS), "q"((unsigned short) RELOC_DS), "0"(&_start), "1"(new_base), "2"(prog_size)); Initially I thought that maybe my OS version of gcc-6.3.0 compiler compiles this assembly incorrectly. But there is the same problem even when I try using the coreboot's "pure" GCC and other "pure" coreboot's tools Then I thought - maybe a problem is optimization? FILO has -Os optimization, I replaced it with -O0 to disable (also had to remove "inline" for three functions at ./filo/fs/mini_inflate.c . -O0 increases size from previous ~110K to about 460K, but if you use LZMA compression while adding to coreboot - it becomes just ~120K so not problem to use But this does not solve a problem - it still stucks at this assembly, while half year ago - when I compiled it on x86 OS with older compilers it didn't stuck while booting on the same hardware. Sadly I dont have time to find out what is the last compiler version that worked. If everyone uses GRUB and nobody is trying to use FILO except me, I will live without FILO as well :P Best regards, Ivan Ivanov Very interesting, why it is not enabled by default, because L 2017-06-14 1:13 GMT+03:00 Nico Huber: > Hello Ivan, > > On 13.06.2017 23:51, Ivan Ivanov wrote: >> Sadly "filo> kernel hda1:/vmlinuz" doesnt work as well: gives >> Disk read error dev=1 drive=0 sector=0 > > this sounds much like the drive wasn't detected at all, not 100% sure > though. If you enabled the libpayload AHCI driver, it should show > detected drives on the console (only a short moment if you enabled > the GRUB interface). A serial log would help or if that's not pos- > sible, you can disable the GRUB interface to see the output, IIRC. > >> >> Error 15: File not found >> >> My current situation seems like a standard use case: >> 1) ext2 boot partition at /dev/sda1 (or which is called "hda1" in this case), >> size of which is 1GB and it is at DOS-partitioned MBR hard drive > > It could also be the size of the filesystem. IIRC, I've run into pro- > blems with bigger partitions too, but ignored them because our OS uses > small boot partitions. You could try the same partitioning and file > system in QEMU. > >> 2) vmlinuz is at hda1:/vmlinuz , initrd is at hda1:/initrd >> >> But so far I am unable to even load a kernel. >> Either I am doing something very wrong or there is a fundamental >> problem with FILO which makes it useless outside of QEMU and maybe a >> couple of IDE legacy systems which is really sad if indeed the >> case :P >> >> By the way, when I run "probe" command it tells: >> IDE channel 0 not found >> IDE channel 0 not found >> IDE channel 1 not found >> IDE channel 1 not found >> IDE channel 2 not found >> IDE channel 2 not found >> IDE channel 3 not found >> IDE channel 3 not found >> >> No word about SATA, but maybe this is a correct behaviour? or not? > > It is expected behaviour. We've integrated the libpayload storage > driver with little love, it just works for the file-system backend. > > Nico > -- coreboot mailing list: coreboot@coreboot.org https://mail.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] FILO 0.6.0 payload bootloader - Bug Reports!
Hello Ivan, On 13.06.2017 23:51, Ivan Ivanov wrote: > Sadly "filo> kernel hda1:/vmlinuz" doesnt work as well: gives > Disk read error dev=1 drive=0 sector=0 this sounds much like the drive wasn't detected at all, not 100% sure though. If you enabled the libpayload AHCI driver, it should show detected drives on the console (only a short moment if you enabled the GRUB interface). A serial log would help or if that's not pos- sible, you can disable the GRUB interface to see the output, IIRC. > > Error 15: File not found > > My current situation seems like a standard use case: > 1) ext2 boot partition at /dev/sda1 (or which is called "hda1" in this case), > size of which is 1GB and it is at DOS-partitioned MBR hard drive It could also be the size of the filesystem. IIRC, I've run into pro- blems with bigger partitions too, but ignored them because our OS uses small boot partitions. You could try the same partitioning and file system in QEMU. > 2) vmlinuz is at hda1:/vmlinuz , initrd is at hda1:/initrd > > But so far I am unable to even load a kernel. > Either I am doing something very wrong or there is a fundamental > problem with FILO which makes it useless outside of QEMU and maybe a > couple of IDE legacy systems which is really sad if indeed the > case :P > > By the way, when I run "probe" command it tells: > IDE channel 0 not found > IDE channel 0 not found > IDE channel 1 not found > IDE channel 1 not found > IDE channel 2 not found > IDE channel 2 not found > IDE channel 3 not found > IDE channel 3 not found > > No word about SATA, but maybe this is a correct behaviour? or not? It is expected behaviour. We've integrated the libpayload storage driver with little love, it just works for the file-system backend. Nico -- coreboot mailing list: coreboot@coreboot.org https://mail.coreboot.org/mailman/listinfo/coreboot
Re: [coreboot] FILO 0.6.0 payload bootloader - Bug Reports!
Sadly "filo> kernel hda1:/vmlinuz" doesnt work as well: gives Disk read error dev=1 drive=0 sector=0 Error 15: File not found My current situation seems like a standard use case: 1) ext2 boot partition at /dev/sda1 (or which is called "hda1" in this case), size of which is 1GB and it is at DOS-partitioned MBR hard drive 2) vmlinuz is at hda1:/vmlinuz , initrd is at hda1:/initrd But so far I am unable to even load a kernel. Either I am doing something very wrong or there is a fundamental problem with FILO which makes it useless outside of QEMU and maybe a couple of IDE legacy systems which is really sad if indeed the case :P By the way, when I run "probe" command it tells: IDE channel 0 not found IDE channel 0 not found IDE channel 1 not found IDE channel 1 not found IDE channel 2 not found IDE channel 2 not found IDE channel 3 not found IDE channel 3 not found No word about SATA, but maybe this is a correct behaviour? or not? Please tell me what extra info do you need, and I will try my best to extract and provide it Best regards, Ivan Ivanov aka qmastery 2017-06-13 20:40 GMT+03:00 Stefan Reinauer: > > > On Tue, Jun 13, 2017 at 10:33 AM Ivan Ivanov wrote: >> >> === If you have some ideas about one or more of FILO problems, please tell >> === >> >> %%% 1st problem - FILO is impossible to build on the modern x86_64 >> system (Ubuntu 16.04.2 LTS with gcc 5.4.0) : >> ... >> CC build/x86/context.o >> AS build/x86/switch.S.o >> /bin/sh: 1: --32: not found >> Makefile:177: error while executing receipt for target >> «/home/owner/filo/build/x86/switch.S.o» >> make: *** [/home/owner/filo/build/x86/switch.S.o] Error 127 >> >> No matter what crosscompiling stuff I am trying or what edits I do to >> Makefile - it always fails with this error. However it compiles fine >> at the 32-bit version of the same OS with the same versions of >> packages except for a different architecture >> >> FILO is probably the only payload which has this problem - and this is >> indeed a major problem, because all the major Linux distributions are >> abandoning 32-bit soon. To fix this error, most likely the edits of >> Makefile are needed, but sadly looks like my skills are not enough to >> fix it (spent the whole day without a success) ... > > > Look at the xcompile script. It seems to not detect your assembler > correctly. > > Your xcompile output should look like this: > > ~/git/filo/ > sh util/xcompile/xcompile > # x86 TARCH_SEARCH= /git/filo/util/crossgcc/xgcc/bin/i386-elf- > i386-elf- /git/filo/util/crossgcc/xgcc/bin/i386-eabi- i386-eabi- > /git/filo/util/crossgcc/xgcc/bin/x86_64-elf- x86_64-elf- > /git/filo/util/crossgcc/xgcc/bin/x86_64-eabi- x86_64-eabi- > # elf32-i386 toolchain (i386-elf-gcc) > CC_i386:=i386-elf-gcc -Wno-unused-but-set-variable -Wa,--divide > -fno-stack-protector -Wl,--build-id=none -fuse-ld=bfd -march=i686 > AS_i386:=i386-elf-as > LD_i386:=i386-elf-ld.bfd > NM_i386:=i386-elf-nm > OBJCOPY_i386:=i386-elf-objcopy > OBJDUMP_i386:=i386-elf-objdump > READELF_i386:=i386-elf-readelf > STRIP_i386:=i386-elf-strip > AR_i386:=i386-elf-ar > > # arm TARCH_SEARCH= /git/filo/util/crossgcc/xgcc/bin/armv7a-elf- > armv7a-elf- /git/filo/util/crossgcc/xgcc/bin/armv7a-eabi- armv7a-eabi- > Warning: no suitable GCC for arm. > IASL:=iasl > > # native toolchain > HOSTCC:=gcc > > > >> >> %%% 2nd problem: There are only three "tested" SATA controllers in >> FILO built-in "approved" list - and FILO does not even try to >> initialize the not-listed controllers, despite that the attempt could >> have been successful if tried! By default, FILO just outputs "ahci: >> Not using untested SATA controller" message, without any option for a >> user to try forcing its usage... The only currently available >> workaround for this is to manually edit >> *./coreboot/payloads/libpayload/drivers/storage/ahci.c * and remove >> two " #if >> IS_ENABLED(CONFIG_LP_STORAGE_AHCI_ONLY_TESTED) ... #endif " parts, >> > > Just disable CONFIG_LP_STORAGE_AHCI_ONLY_TESTED in your libpayload config. > > >> >> %%% 3rd problem: while trying to access hard drive with commands like >> filo> kernel hda:/vmlinuz I am getting the following errors: >> >> Disk read error dev=1 drive=0 sector=0 >> Disk read error dev=1 drive=0 sector=2 >> Disk read error dev=1 drive=0 sector=2 >> Disk read error dev=1 drive=0 sector=128 >> Disk read error dev=1 drive=0 sector=16 >> Disk read error dev=1 drive=0 sector=64 >> Disk read error dev=1 drive=0 sector=0 >> Disk read error dev=1 drive=0 sector=64 >> Disk read error dev=1 drive=0 sector=0 >> Disk read error dev=1 drive=0 sector=0 >> Unknown filesystem type. >> > >> >> Error 15: File not found. >> >> Is there any workaround for this? Or maybe I am using the wrong >> commands? If so, please tell - what are the correct FILO real-hardware >> commands for trying to boot a Linux kernel thats stored on FAT16 >> partition at the beginning of
Re: [coreboot] FILO 0.6.0 payload bootloader - Bug Reports!
On Tue, Jun 13, 2017 at 10:33 AM Ivan Ivanovwrote: > === If you have some ideas about one or more of FILO problems, please tell > === > > %%% 1st problem - FILO is impossible to build on the modern x86_64 > system (Ubuntu 16.04.2 LTS with gcc 5.4.0) : > ... > CC build/x86/context.o > AS build/x86/switch.S.o > /bin/sh: 1: --32: not found > Makefile:177: error while executing receipt for target > «/home/owner/filo/build/x86/switch.S.o» > make: *** [/home/owner/filo/build/x86/switch.S.o] Error 127 > > No matter what crosscompiling stuff I am trying or what edits I do to > Makefile - it always fails with this error. However it compiles fine > at the 32-bit version of the same OS with the same versions of > packages except for a different architecture > > FILO is probably the only payload which has this problem - and this is > indeed a major problem, because all the major Linux distributions are > abandoning 32-bit soon. To fix this error, most likely the edits of > Makefile are needed, but sadly looks like my skills are not enough to > fix it (spent the whole day without a success) ... > Look at the xcompile script. It seems to not detect your assembler correctly. Your xcompile output should look like this: ~/git/filo/ > sh util/xcompile/xcompile # x86 TARCH_SEARCH= /git/filo/util/crossgcc/xgcc/bin/i386-elf- i386-elf- /git/filo/util/crossgcc/xgcc/bin/i386-eabi- i386-eabi- /git/filo/util/crossgcc/xgcc/bin/x86_64-elf- x86_64-elf- /git/filo/util/crossgcc/xgcc/bin/x86_64-eabi- x86_64-eabi- # elf32-i386 toolchain (i386-elf-gcc) CC_i386:=i386-elf-gcc -Wno-unused-but-set-variable -Wa,--divide -fno-stack-protector -Wl,--build-id=none -fuse-ld=bfd -march=i686 AS_i386:=i386-elf-as LD_i386:=i386-elf-ld.bfd NM_i386:=i386-elf-nm OBJCOPY_i386:=i386-elf-objcopy OBJDUMP_i386:=i386-elf-objdump READELF_i386:=i386-elf-readelf STRIP_i386:=i386-elf-strip AR_i386:=i386-elf-ar # arm TARCH_SEARCH= /git/filo/util/crossgcc/xgcc/bin/armv7a-elf- armv7a-elf- /git/filo/util/crossgcc/xgcc/bin/armv7a-eabi- armv7a-eabi- Warning: no suitable GCC for arm. IASL:=iasl # native toolchain HOSTCC:=gcc > %%% 2nd problem: There are only three "tested" SATA controllers in > FILO built-in "approved" list - and FILO does not even try to > initialize the not-listed controllers, despite that the attempt could > have been successful if tried! By default, FILO just outputs "ahci: > Not using untested SATA controller" message, without any option for a > user to try forcing its usage... The only currently available > workaround for this is to manually edit > *./coreboot/payloads/libpayload/drivers/storage/ahci.c * and remove > two " #if > IS_ENABLED(CONFIG_LP_STORAGE_AHCI_ONLY_TESTED) ... #endif " parts, > > Just disable CONFIG_LP_STORAGE_AHCI_ONLY_TESTED in your libpayload config. > %%% 3rd problem: while trying to access hard drive with commands like > filo> kernel hda:/vmlinuz I am getting the following errors: > > Disk read error dev=1 drive=0 sector=0 > Disk read error dev=1 drive=0 sector=2 > Disk read error dev=1 drive=0 sector=2 > Disk read error dev=1 drive=0 sector=128 > Disk read error dev=1 drive=0 sector=16 > Disk read error dev=1 drive=0 sector=64 > Disk read error dev=1 drive=0 sector=0 > Disk read error dev=1 drive=0 sector=64 > Disk read error dev=1 drive=0 sector=0 > Disk read error dev=1 drive=0 sector=0 > Unknown filesystem type. > > > Error 15: File not found. > > Is there any workaround for this? Or maybe I am using the wrong > commands? If so, please tell - what are the correct FILO real-hardware > commands for trying to boot a Linux kernel thats stored on FAT16 > partition at the beginning of DOS-partitioned MBR hard drive? Or this > is a problem with my hardware? > It seems you would have to look inside of a partition, not just on the raw disk. e.g. hda1:/... > > Best regards, > qmastery > Stefan smime.p7s Description: S/MIME Cryptographic Signature -- coreboot mailing list: coreboot@coreboot.org https://mail.coreboot.org/mailman/listinfo/coreboot
[coreboot] FILO 0.6.0 payload bootloader - Bug Reports!
=== If you have some ideas about one or more of FILO problems, please tell === %%% 1st problem - FILO is impossible to build on the modern x86_64 system (Ubuntu 16.04.2 LTS with gcc 5.4.0) : ... CC build/x86/context.o AS build/x86/switch.S.o /bin/sh: 1: --32: not found Makefile:177: error while executing receipt for target «/home/owner/filo/build/x86/switch.S.o» make: *** [/home/owner/filo/build/x86/switch.S.o] Error 127 No matter what crosscompiling stuff I am trying or what edits I do to Makefile - it always fails with this error. However it compiles fine at the 32-bit version of the same OS with the same versions of packages except for a different architecture FILO is probably the only payload which has this problem - and this is indeed a major problem, because all the major Linux distributions are abandoning 32-bit soon. To fix this error, most likely the edits of Makefile are needed, but sadly looks like my skills are not enough to fix it (spent the whole day without a success) ... %%% 2nd problem: There are only three "tested" SATA controllers in FILO built-in "approved" list - and FILO does not even try to initialize the not-listed controllers, despite that the attempt could have been successful if tried! By default, FILO just outputs "ahci: Not using untested SATA controller" message, without any option for a user to try forcing its usage... The only currently available workaround for this is to manually edit *./coreboot/payloads/libpayload/drivers/storage/ahci.c * and remove two " #if IS_ENABLED(CONFIG_LP_STORAGE_AHCI_ONLY_TESTED) ... #endif " parts, %%% 3rd problem: while trying to access hard drive with commands like filo> kernel hda:/vmlinuz I am getting the following errors: Disk read error dev=1 drive=0 sector=0 Disk read error dev=1 drive=0 sector=2 Disk read error dev=1 drive=0 sector=2 Disk read error dev=1 drive=0 sector=128 Disk read error dev=1 drive=0 sector=16 Disk read error dev=1 drive=0 sector=64 Disk read error dev=1 drive=0 sector=0 Disk read error dev=1 drive=0 sector=64 Disk read error dev=1 drive=0 sector=0 Disk read error dev=1 drive=0 sector=0 Unknown filesystem type. Error 15: File not found. Is there any workaround for this? Or maybe I am using the wrong commands? If so, please tell - what are the correct FILO real-hardware commands for trying to boot a Linux kernel thats stored on FAT16 partition at the beginning of DOS-partitioned MBR hard drive? Or this is a problem with my hardware? Best regards, qmastery -- coreboot mailing list: coreboot@coreboot.org https://mail.coreboot.org/mailman/listinfo/coreboot