Este projeto permite que você construa uma distro Linux do zero
Precisamos de algumas dependências, então instale essas
sudo apt get install bzip2 git vim make gcc libncurses-dev flex bison bc cpio libelf-dev libssl-dev syslinux dosfstools
Agora precisamos clonar o kernel Linux e editá -lo
git clone --depth 1 https://github.com/torvalds/linux.git
Agora mude para o diretório Linux
cd linux
Agora precisamos editar o kernel editando as opções que isso abrirá um menu interativo
make menuconfig
Verifique se 64 bit kernel (NEW) está selecionado
Então, depois de fazer o menuconfig , se você tiver mais núcleos do que 6 do que você pode torná -lo mais de 6, como eu tenho 8 núcleos
make -j 8
Depois que o Kenel terminou de compilar (Momento do Gentoo), você verá uma mensagem com bZimage , faça um diretório chamado boot-files
mkdir /boot-files
Em seguida, copie a bZimage para o diretório boot-files
cp arch/x86/boot/bzImage /boot-files
bzImage é um arquivo para inicializar o CD do sistema de volta
cd ..
Agora clone BusyBox
git clone --depth 1 https://git.busybox.net/busybox
Em seguida, entre no diretório busybox
cd busybox
Então faça o menuconfig
make menuconfig
Vá para settings > Build static binary (no shared libs) (NEW) Selecione agora salvar, a razão pela qual criamos a construção static é porque não queremos binários externos agora com a quantidade de núcleos que você executou make -j <cores> como, por exemplo
make -j 8
Depois que o BusyBox terminou a compilação, faça um initramds
mkdir /boot-files/initramfs
agora execute
make CONFIG_PREFIX=/boot-files/initramfs install
Initramfs é o sistema de arquivos inicial As cargas do kernel após a inicialização vamos colocar o BusyBox para lá agora mude para essa pasta
cd /boot-files/initramfs/
Agora crie um arquivo chamado init
nano init
Agora adicione esses comandos ao init
#!/bin/sh
/bin/sh
Agora salve agora exclua linuxrc sem necessidade desse arquivo
rm linuxrc
Agora adicione permeâncias executivas ao init
chmod +x init
Agora encontre então empacote -o para um arquivo .cpio
find . | cpio -o -H newc > ../init.cpio
-o significa criar um novo arquivo agora vá 1 diretor de volta
cd ..
Agora, o arquivo foi criado, use ls para vê -lo, mas usaremos um carregador de inicialização chamado syslinux , faça o bootfile
dd if=/dev/zero of=boot bs=1M count=50
Isso fará um arquivo com 50-100 megabytes e será preenchido com zeros, usaremos o sistema de arquivos fat
mkfs -t fat boot
Em seguida, corra
syslinux boot
Agora faça um diretório chamado qualquer coisa, exceto para segurança, usaremos m e depois montar a bota para M
mkdir m
mount boot m
Em seguida, copie o kernel e o initramfs para o FS boot
cp bzImage init.cpio m
agora desmonte
unmount m
agora a imagem de inicialização está pronta para que iremos inicializá -la
qemu-system-x86_64 boot
SysLinux irá inicializar e perguntará qual arquivo para inicializar o uso
/bzImage -initrd=init.cpio
Links DFS GUI DFS For Embedded Devices