Portál AbcLinuxu, 5. května 2025 18:45

Dotaz: Gentoo a illegal instruction při "emerge -vuaDN bash"

6.5.2012 20:25 marekv | Studnice u Hlinska
Gentoo a illegal instruction při "emerge -vuaDN bash"
Přečteno: 619×
Odpovědět | Admin
Zdravím, potřebuju v Gentoo přeinstalovat bash s USE=readline (protože teď mi po přihlášení bash hlásí "bash: shopt: histappend: invalid shell option name" a nefunguje tab expanze, historie atd.)

Zadal jsem tedy výše uvedený příkaz, ale instalace selhala:

...
config.status: creating Makefile
./config.status: line 1309: 28174 Done(141)               eval sed \"\$ac_sed_extra\" "$ac_file_inputs"
     28175 Illegal instruction     | $AWK -f "$tmp/subs.awk" > $tmp/out
config.status: error: could not create Makefile
...
Možná je něco špatně se systémem, protože podobnou chybu dostávám docela často - podle různých dotazů na podobný problém jsem zkoušel "emerge -u world", což nepomohlo nebo třeba "emerge sandbox" - to ale skončilo obdobnou chybou.

Co ta chyba vlastně znamená a jak se jí zbavit?

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Marián Kyral avatar 6.5.2012 21:01 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud to nepůjde jinak, můžeš použít binárku bashe ze stage3 archívu. Případně vybalit i nalinkované knihovny.
6.5.2012 21:41 marekv | Studnice u Hlinska
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Myslíš ruční kompilaci? To jsem zkoušel, stáhl jsem

http://gentoo.mirror.dkm.cz/pub/gentoo/distfiles/bash-4.2.tar.gz

ale po zavolání ./configure to skončilo stejnou chybou jako výše. Zkoušel jsem i starší verze bashe a u 3.2 dokonce ./configure i make prošlo, ale make install hlásil zase nějakou jinou chybu (už si přesně nepamatuju)
6.5.2012 22:06 chrono
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Skôr predpokladám, že stage3 archív obsahuje už skompilované aplikácie. :)
7.5.2012 06:06 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Spíš jde o to nic nekompilovat, ale nahradit rozbitý binární bash nějakým jiným, nerozbitým binárním bashem. Kompilovat (přes portage nebo i ručně) můžeš až poté, co si takto opravíš systém. A jak řekl chrono tak stage3 samozřejmě obsahuje již zkompilované aplikace.
Marián Kyral avatar 7.5.2012 07:20 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Přesně tak.

Ten tvůj problém vypadá dost podivně. Pokud to nepomůže, tak už asi jen nabootovat z LiveCD, zazálohovat systémové adresáře a zkusit čistou instalaci ze stage3. A pokud ani tohle neprojde, tak můžeš mít problém s HW. Když se mi něco takového kdysi stalo, tak jsem musel vyměnit CPU i desku. Ale než jsem na to přišel, tak jsem vyměnil skoro všechny díly.
7.5.2012 09:00 pet
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vypada to ze:

a) mas nastaveny jiny typ procesoru v /etc/make.conf nez mas v pocitaci,

b) tvuj procesor je spatne podporovan (zazil jsem u procesoru VIA),

c) neco co se pouzije bylo kompilovane pro jiny procesor (mozna sed ci awk?),

d) mas problem s HW - pravdepodobne pamet.
7.5.2012 10:05 trubicoid
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Odpovědět | | Sbalit | Link | Blokovat | Admin
jak uz zde rikaji, zda se, ze je problem s awk a mozna ne jen s nim

hod nekam awk binarku, nebo na nej pust tento skript http://dev.gentoo.org/~dirtyepic/bin/analyze-x86 to ti rekne, jaky instrukce se v binarce pouzivaji

no a pak nam rekni, jaky cpu mas z /proc/cpuinfo no a jaky mas nastaveny v /etc/make.conf v CFLAGS
7.5.2012 10:49 marekv | Studnice u Hlinska
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky všem za snahu, dodám pár informací.

Typ CPU: x86_64 (výstup uname -m).

Měl bych dodat, že je to virtuální systém, který běží pod qemu. V /proc/cpuinfo je:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 2
model name      : QEMU Virtual CPU version 1.0
stepping        : 3
cpu MHz         : 1994.339
cache size      : 4096 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 4
wp              : yes
flags           : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm up rep_good nopl pni cx16 hypervisor lahf_lm
bogomips        : 3988.67
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management:

V /etc/make.conf mám:

CFLAGS="-march=core2 -msse4 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"

Moc přesně zatím nevím, co to je stage3 (gentoo mám asi týden). Stáhl jsem si tedy soubor ftp://gentoo.mirror.dkm.cz/pub/gentoo/releases/x86/current-stage3/stage3-i686-20120501.tar.bz2 (137MB) a rozbalil. Zkusil jsem spustit /mnt/gentoo/bin/bash, ale objevila se chyba error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory, což je logické...

emerge -uavDN gawk skončilo stejnou chybou (illegal instruction). Zkusil jsem tedy analyze-x86, výsledek je:

$ ./analyze-x86 /usr/bin/awk
Disassembling /usr/bin/awk, please wait...

        MMX:           470
        SSE:            64
        Enh 3DNow:       0
        SSE2:          399
        SSE3:            0
        SSSE3:           0
        SSE4A:           0
        SSE4.1:          2
        SSE4.2:          0
        AVX:             0
        FMA:             0
        FMA4:            0
7.5.2012 11:11 Brokarna | skóre: 18 | blog: problemy_s_r_o
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Tak největší problém bude SSE4.1, protože podle /proc/cpuinfo, ho qemu nepodporuje. Celkově bych spíš v qemu kompiloval pro nějakej obecnější CPU (např. i686).
7.5.2012 11:20 marekv | Studnice u Hlinska
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Jasně, takže co všechno mám před kompilací nastavit? Bude stačit změna CHOST na i686-pc-linux-gnu a pak už emerge gawk?

Mimochodem, pokud je -msse4 v CFLAGS zbytečné, mám to smazat?
7.5.2012 11:35 Brokarna | skóre: 18 | blog: problemy_s_r_o
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
CHOST nech (nevšim sem si, že jedeš na 64-bit), ale CFLAGS změň na -mtune=generic -O2 -pipe . To by mělo stačit.
7.5.2012 11:53 marekv | Studnice u Hlinska
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Tak jsem to vyzkoušel s CFLAGS="-mtune=generic -O2 -pipe". Začalo to nadějně, protože už při "emerge gawk" byla nabídnuta aktualizace bashe:

$ emerge -uavDN gawk

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.
 * Use eselect news to read news items.


 * IMPORTANT: config file '/etc/portage/package.mask' needs updating.
 * See the CONFIGURATION FILES section of the emerge
 * man page to learn how to update config files.

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U  ] app-shells/bash-4.2_p28 [4.2_p24-r1] USE="nls readline* -afs -bashlogger -examples -mem-scramble -net -plugins -vanilla" 0 kB
[ebuild   R    ] dev-libs/libxml2-2.7.8-r5  USE="readline* -debug -doc -examples -icu -ipv6 -python -static-libs -test" 0 kB
[ebuild   R    ] sys-apps/gawk-4.0.1  USE="nls readline*" 0 kB

Total: 3 packages (1 upgrade, 2 reinstalls), Size of downloads: 0 kB

!!! The following installed packages are masked:
- sys-devel/gcc-4.5.3-r2::gentoo (masked by: package.mask)
For more information, see the MASKED PACKAGES section in the emerge
man page or refer to the Gentoo Handbook.


Would you like to merge these packages? [Yes/No] yes
...

Pak se ale objevil stejný problém, přikládám delší výstup:

...
config.status: creating Makefile
./config.status: line 1309: 14682 Done(141)               eval sed \"\$ac_sed_extra\" "$ac_file_inputs"
     14683 Illegal instruction     | $AWK -f "$tmp/subs.awk" > $tmp/out
config.status: error: could not create Makefile

!!! Please attach the following file when seeking support:
!!! /var/tmp/portage/app-shells/bash-4.2_p28/work/bash-4.2/config.log
 * ERROR: app-shells/bash-4.2_p28 failed (compile phase):
 *   econf failed
...

To vypadá zase na problém s awkem. Sakra, proč je potřeba awk při instalaci awku?
7.5.2012 12:00 Brokarna | skóre: 18 | blog: problemy_s_r_o
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Tak nejdřív tam musíš vybalit ten funkční awk ze stage3. Protože sis tam někdy dřív už awk zkompiloval pro tu vyšší architekturu, kterou ale ten virtuální CPU nepodporuje). Takže nejdřív tam vybal funkční awk ze stage3 (případně celej stage3 vybal - čert ví co všechno nebude fungovat) a pak už by ten emerge měl projít.
7.5.2012 13:10 marekv | Studnice u Hlinska
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
Wow, funguje to! Poprvé vidím normálně fungující bash (člověk tabulátorovou expanzi naplno ocení teprve až mu přestane fungovat).

Moc ti děkuji, stejně tak i těm, kteří komentovali výše!
7.5.2012 13:24 trubicoid
Rozbalit Rozbalit vše Re: Gentoo a illegal instruction při "emerge -vuaDN bash"
jestli ti to ted jede, tak vse znova prekompiluj, pro jistotu..

jeste doporucuju v CFLAGS misto -mtune=generic dej -march=native

a pak emerge -e system

a na zaver emerge -e world

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.