Estou construindo meu próprio sistema operacional com o Linux. Eu uso o kernel e alguns componentes do GNU.
Eu compilei o kernel e instalei bash com readline e busybox . Depois disso tudo funciona bem. Eu queria instalar nano , gcc ...
Quando executo esses aplicativos, isso me dá 'Falha na segmentação (core despejado)'. Eu instalei gdb (depurador GNU) para ver o que está errado. Também gdb não inicia e me dá o erro:
Segmentation failed (core dumped)
O problema é que eu tenho o /include e /share não copiado para /usr
E por algumas bibliotecas mais de uma versão da biblioteca. Não havia stacktrace ou algo assim para colá-lo aqui nessa questão.
Passos que fiz:
grub e instale-o com grub-installer no meu disco usb make menuconfig
make e make modules
bzimage e executável no meu usb ( /boot ) bzimage para /tmp , descompactei com gzip , dd
bzimage de /lib , /usr para meu usb gclib , ncurses , readline e bash 4.4 busybox
mkdir , rmdir , adduser ...) nano e gcc compilador Computador reiniciado, tente executar o nano e isso me dá:
Segmentation failed (core dumped)
Instalado gdb e reiniciado. Também me dá:
Segmentation failed (core dumped)
Como eu instalei o busybox
Eu baixei o binário do site do busybox.
Então você cola em /bin
Não se esqueça de fazer busybox --install quando você executar seu novo sistema operacional para instalar os comandos.
Mas você também pode criá-lo a partir do código-fonte com make menuconfig , make e make install
Como instalei o grub
Eu baixei a fonte do site GNU e a compilei com make e make install . Nos utils você pode ver o grub-install . Com isso, você pode instalar o grub no seu disco. link
Como eu instalei o kernel
Primeiro você precisa configurar com make menuconfig .
Em seguida, você precisa criar com make , make modules e make modules_install
Se você deseja copiar o bzimage e o exe instalados na sua atual distribuição de Linux você faz sudo make install
Eu copiei os arquivos para o meu usb. (executável bzimage e linux)
Como instalei o gclib
Você precisa baixar gclib do gnu e configurá-lo com ./configure --prefix=<usb_directory>
Então você precisa construí-lo com make e make install
Copie o /include e /share para /usr/share e /usr/include
Como eu instalei o nano
Você precisa baixar o nano do gnu e configurá-lo com ./configure --prefix=<usb_directory>/usr
Então você precisa construí-lo com make e make install
Se houver um /usr/etc , copie-o para /etc
Como eu instalei ncurses
O mesmo que gclib
SOLUÇÃO
Eu encontrei a solução. Eu copiei /include e /share para /usr/include e /usr/share . Certifique-se de que você não tenha mais de uma versão da biblioteca.
Eu não posso postar minha resposta, então colo aqui.
@JiggyNaga: Não há erros fatais.
telecoM: Se você descompactar o initramfs, poderá ver as bibliotecas que você pode precisar. Então você não precisa instalá-los.
Tags bash segmentation-fault linux