Jump to content
Read the Funtoo Newsletter: Summer 2023 ×
  • 0

funtoo install illegal instruction


vivekjindal20

Question

Hi,

 

I am trying to install funtoo on my chromebook. I have Intel Celeron 3215.

 

I am also running funtoo on my Linode. I noticed that funtoo wasn't providing the broadwell stage3 tarballs so I decided to use Metro and build a broadwell tarball. (I already tried to use haswell tarball, same problem "Illegal Instruction").

 

Once my broadwell tarball was ready I decided to use that one. I am getting the same error on that one too ("Illegal Instruction"). Did my Metro built tarball came out wrong? Please help.

 

Additional information:

 

file ./bin/bash

 

./bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped

 

objdump -x ./bin/bash
 
./bin/bash:     file format elf64-x86-64
./bin/bash
architecture: i386:x86-64, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0000000000409e80
 
Program Header:
    PHDR off    0x0000000000000040 vaddr 0x0000000000400040 paddr 0x0000000000400040 align 2**3
         filesz 0x00000000000001c0 memsz 0x00000000000001c0 flags r-x
  INTERP off    0x0000000000000200 vaddr 0x0000000000400200 paddr 0x0000000000400200 align 2**0
         filesz 0x000000000000001c memsz 0x000000000000001c flags r--
    LOAD off    0x0000000000000000 vaddr 0x0000000000400000 paddr 0x0000000000400000 align 2**21
         filesz 0x00000000000aa3ac memsz 0x00000000000aa3ac flags r-x
    LOAD off    0x00000000000aa3b0 vaddr 0x00000000006aa3b0 paddr 0x00000000006aa3b0 align 2**21
         filesz 0x0000000000003cec memsz 0x000000000000d4b8 flags rw-
 DYNAMIC off    0x00000000000aa3c8 vaddr 0x00000000006aa3c8 paddr 0x00000000006aa3c8 align 2**3
         filesz 0x00000000000001f0 memsz 0x00000000000001f0 flags rw-
    NOTE off    0x000000000000021c vaddr 0x000000000040021c paddr 0x000000000040021c align 2**2
         filesz 0x0000000000000020 memsz 0x0000000000000020 flags r--
EH_FRAME off    0x00000000000959a0 vaddr 0x00000000004959a0 paddr 0x00000000004959a0 align 2**2
         filesz 0x0000000000002e9c memsz 0x0000000000002e9c flags r--
   STACK off    0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4
         filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
 
Dynamic Section:
  NEEDED               libreadline.so.6
  NEEDED               libncurses.so.5
  NEEDED               libc.so.6
  INIT                 0x0000000000406d18
  FINI                 0x000000000047aac4
  INIT_ARRAY           0x00000000006aa3b0
  INIT_ARRAYSZ         0x0000000000000008
  FINI_ARRAY           0x00000000006aa3b8
  FINI_ARRAYSZ         0x0000000000000008
  HASH                 0x0000000000400240
  STRTAB               0x00000000004035c8
  SYMTAB               0x0000000000401360
  STRSZ                0x000000000000136c
  SYMENT               0x0000000000000018
  DEBUG                0x0000000000000000
  PLTGOT               0x00000000006aa5c0
  PLTRELSZ             0x00000000000019c8
  PLTREL               0x0000000000000007
  JMPREL               0x0000000000405350
  RELA                 0x0000000000404ca8
  RELASZ               0x00000000000006a8
  RELAENT              0x0000000000000018
  VERNEED              0x0000000000404c18
  VERNEEDNUM           0x0000000000000001
  VERSYM               0x0000000000404934
 
Version References:
  required from libc.so.6:
    0x06969191 0x00 09 GLIBC_2.11
    0x06969194 0x00 08 GLIBC_2.14
    0x0d696918 0x00 07 GLIBC_2.8
    0x06969195 0x00 06 GLIBC_2.15
    0x0d696914 0x00 05 GLIBC_2.4
    0x09691974 0x00 04 GLIBC_2.3.4
    0x0d696913 0x00 03 GLIBC_2.3
    0x09691a75 0x00 02 GLIBC_2.2.5
 
Sections:
Idx Name          Size      VMA               LMA               File off  Algn
  0 .interp       0000001c  0000000000400200  0000000000400200  00000200  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .note.ABI-tag 00000020  000000000040021c  000000000040021c  0000021c  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  2 .hash         00001120  0000000000400240  0000000000400240  00000240  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  3 .dynsym       00002268  0000000000401360  0000000000401360  00001360  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  4 .dynstr       0000136c  00000000004035c8  00000000004035c8  000035c8  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .gnu.version  000002de  0000000000404934  0000000000404934  00004934  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .gnu.version_r 00000090  0000000000404c18  0000000000404c18  00004c18  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  7 .rela.dyn     000006a8  0000000000404ca8  0000000000404ca8  00004ca8  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  8 .rela.plt     000019c8  0000000000405350  0000000000405350  00005350  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  9 .init         0000001a  0000000000406d18  0000000000406d18  00006d18  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 10 .plt          00001140  0000000000406d40  0000000000406d40  00006d40  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 11 .text         00072c41  0000000000407e80  0000000000407e80  00007e80  2**4
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 12 .fini         00000009  000000000047aac4  000000000047aac4  0007aac4  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
 13 .rodata       0001aec0  000000000047aae0  000000000047aae0  0007aae0  2**5
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 14 .eh_frame_hdr 00002e9c  00000000004959a0  00000000004959a0  000959a0  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 15 .eh_frame     00011b6c  0000000000498840  0000000000498840  00098840  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
 16 .init_array   00000008  00000000006aa3b0  00000000006aa3b0  000aa3b0  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 17 .fini_array   00000008  00000000006aa3b8  00000000006aa3b8  000aa3b8  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 18 .jcr          00000008  00000000006aa3c0  00000000006aa3c0  000aa3c0  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 19 .dynamic      000001f0  00000000006aa3c8  00000000006aa3c8  000aa3c8  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 20 .got          00000008  00000000006aa5b8  00000000006aa5b8  000aa5b8  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 21 .got.plt      000008b0  00000000006aa5c0  00000000006aa5c0  000aa5c0  2**3
                  CONTENTS, ALLOC, LOAD, DATA
 22 .data         0000321c  00000000006aae80  00000000006aae80  000aae80  2**5
                  CONTENTS, ALLOC, LOAD, DATA
 23 .bss          000097c8  00000000006ae0a0  00000000006ae0a0  000ae09c  2**5
                  ALLOC
SYMBOL TABLE:
no symbols
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

 

I did some research, mmxext is a part of mmx hence applied automatically and I think I need to pass more CFLAGS. I restarted my build again with below flags.

 

CFLAGS="-march=broadwell -mabm -mno-adx -mno-aes -mno-avx -mno-avx2 -mno-bmi -mno-bmi2 -mno-f16c -mno-fma -mno-xsave -mno-xsaveopt -O2 -pipe"
CXXFLAGS="${CFLAGS}"
FFLAGS="${CFLAGS}"
FCFLAGS="${CFLAGS}"
 
CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"

 

Build was complete and problem was resolved. Please mark as resolved and add the tag Metro?

Link to comment
Share on other sites

  • 0

how did you build you broadwell stage? steps. is this on bare metal or  in virtual machine?

I used metro remote build guide. Followed steps in funtoo.org/Metro. Here is my resultant directory structure.

 

funtooded funtoo-stable # find .
.
./snapshots
./snapshots/portage-2016-11-30.tar.xz
./snapshots/portage-latest.tar.xz
./snapshots/portage-2016-12-01.tar.xz
./x86-64bit
./x86-64bit/intel64-broadwell
./x86-64bit/intel64-broadwell/.control
./x86-64bit/intel64-broadwell/.control/strategy
./x86-64bit/intel64-broadwell/.control/strategy/build
./x86-64bit/intel64-broadwell/.control/strategy/seed
./x86-64bit/intel64-broadwell/.control/.multi_progress
./x86-64bit/intel64-broadwell/.control/.stage1_progress
./x86-64bit/intel64-broadwell/.control/version
./x86-64bit/intel64-broadwell/.control/version/stage3
./x86-64bit/intel64-broadwell/.control/version/stage1
./x86-64bit/intel64-broadwell/.control/remote
./x86-64bit/intel64-broadwell/.control/remote/subarch
./x86-64bit/intel64-broadwell/.control/remote/build
./x86-64bit/intel64-broadwell/.control/remote/arch_desc
./x86-64bit/intel64-broadwell/screenlog.0.20161130.1
./x86-64bit/intel64-broadwell/2016-11-30
./x86-64bit/intel64-broadwell/2016-11-30/status
./x86-64bit/intel64-broadwell/2016-11-30/log
./x86-64bit/intel64-broadwell/2016-11-30/log/stage2.txt
./x86-64bit/intel64-broadwell/2016-11-30/log/stage1.txt
./x86-64bit/intel64-broadwell/2016-11-30/log/stage3.txt
./x86-64bit/intel64-broadwell/2016-11-30/build-info.json
./x86-64bit/intel64-broadwell/screenlog.0
./x86-64bit/intel64-broadwell/stage3-latest.tar.xz
./x86-64bit/intel64-broadwell/2016-12-01
./x86-64bit/intel64-broadwell/2016-12-01/log
./x86-64bit/intel64-broadwell/2016-12-01/log/stage1.txt
./x86-64bit/intel64-haswell
./x86-64bit/intel64-haswell/.control
./x86-64bit/intel64-haswell/.control/strategy
./x86-64bit/intel64-haswell/.control/version
./x86-64bit/intel64-haswell/.control/version/stage3
./x86-64bit/intel64-haswell/2016-11-03
./x86-64bit/intel64-haswell/2016-11-03/stage3-intel64-haswell-funtoo-stable-2016-11-03.tar.xz
 
This is what my broadwell directory says:
 
funtooded .control # grep -r "" .
./strategy/build:remote
./strategy/seed:stage3
./.multi_progress:27871
./.stage1_progress:27871
./version/stage3:2016-11-30
./version/stage1:2016-11-30
./remote/subarch:intel64-haswell
./remote/build:funtoo-stable
./remote/arch_desc:x86-64bit
 

(Note: I have restarted the metro build, although I know that result will be the same)

 

I built this on a VPS on Linode. Linode uses KVM. I am using funtoo on my VPS.

 

Extra information:

 

funtooded 2016-11-30 # cat build-info.json
{
    "ARCH": "amd64",
    "CFLAGS": "-march=broadwell -O2 -pipe",
    "CHOST": "x86_64-pc-linux-gnu",
    "CPU_FLAGS_X86": "aes avx fma3 mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
}
Link to comment
Share on other sites

  • 0

ok, your laptop cpu maybe not supporting all cpu instructions that is in CPU_X86_FLAGS for broadwell subarch. Intel is known of limiting lower end (or mobile) CPU's with instructions. For example your cpu does not support aes. While you are able to build in linode vps (likely it supports all instructions on hardware level) you will not be able to install on laptop. Examine instructions in /proc/cpuinfo

cat /proc/cpuinfo | egrep "(model name|flags)"

Link to comment
Share on other sites

  • 0

ok, your laptop cpu maybe not supporting all cpu instructions that is in CPU_X86_FLAGS for broadwell subarch. Intel is known of limiting lower end (or mobile) CPU's with instructions. For example your cpu does not support aes. While you are able to build in linode vps (likely it supports all instructions on hardware level) you will not be able to install on laptop. Examine instructions in /proc/cpuinfo

cat /proc/cpuinfo | egrep "(model name|flags)"

Thank you Oleg. You have determined the root cause. My last question is, how can I tell Metro to use specific flags? I think here, right?

 

/usr/portage/profiles/funtoo/1.0/linux-gnu/arch/x86-64bit/subarch/intel64-broadwell/make.defaults

Link to comment
Share on other sites

  • 0

Thank you Oleg. You have determined the root cause. My last question is, how can I tell Metro to use specific flags? I think here, right?

 

/usr/portage/profiles/funtoo/1.0/linux-gnu/arch/x86-64bit/subarch/intel64-broadwell/make.defaults

I was reading the metro etc files. From common.conf it is obvious that Metro uses the path I stated above. I going to make changes and will share the results.

Link to comment
Share on other sites

  • 0

I was reading the metro etc files. From common.conf it is obvious that Metro uses the path I stated above. I going to make changes and will share the results.

I need to make some corrections on what I said here. Metro doesn't use running system's portage infrastructure. Metro downloads fresh portage snapshot and extracts it into working directory as specified in ~/.metro. Changes have to be made there, for instance:

 

/var/tmp/metro/work/funtoo-stable/stage1-intel64-broadwell-funtoo-stable-2016-12-02/usr/portage/profiles/funtoo/1.0/linux-gnu/arch/x86-64bit/subarch/intel64-broadwell

 

In that case re-running emerge --sync would be harmless as well.

Link to comment
Share on other sites

  • 0

I told Metro (inserted cp commands in steps/unpack.spec file) to copy my customized make.defaults file to overwrite in intel64-broadwell directory just after git sync command. All went well, stage3 was built successfully with my customized CPU flags but 1 problem happened. Somehow 1 flag extra was automatically added.

 

What I told Metro:

"mmx popcnt sse sse2 sse4_1 sse4_2 ssse3"

 

What came out in build.json:

"mmx popcnt sse sse2 sse4_1 sse4_2 ssse3 mmxext"

 

Please suggest. What am I missing?

Link to comment
Share on other sites

  • 0

I told Metro (inserted cp commands in steps/unpack.spec file) to copy my customized make.defaults file to overwrite in intel64-broadwell directory just after git sync command. All went well, stage3 was built successfully with my customized CPU flags but 1 problem happened. Somehow 1 flag extra was automatically added.

 

What I told Metro:

"mmx popcnt sse sse2 sse4_1 sse4_2 ssse3"

 

What came out in build.json:

"mmx popcnt sse sse2 sse4_1 sse4_2 ssse3 mmxext"

 

Please suggest. What am I missing?

I did some research, mmxext is a part of mmx hence applied automatically and I think I need to pass more CFLAGS. I restarted my build again with below flags.

 

CFLAGS="-march=broadwell -mabm -mno-adx -mno-aes -mno-avx -mno-avx2 -mno-bmi -mno-bmi2 -mno-f16c -mno-fma -mno-xsave -mno-xsaveopt -O2 -pipe"
CXXFLAGS="${CFLAGS}"
FFLAGS="${CFLAGS}"
FCFLAGS="${CFLAGS}"
 
CPU_FLAGS_X86="mmx mmxext popcnt sse sse2 sse3 sse4_1 sse4_2 ssse3"
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...