Этот проект позволяет создавать дистрибуцию Linux с нуля
Нам нужны некоторые зависимости, поэтому установите их
sudo apt get install bzip2 git vim make gcc libncurses-dev flex bison bc cpio libelf-dev libssl-dev syslinux dosfstools
Теперь нам нужно клонировать ядро Linux и отредактировать его
git clone --depth 1 https://github.com/torvalds/linux.git
Теперь перейти на каталог Linux
cd linux
Теперь нам нужно отредактировать ядро, редактируя варианты, это откроет интерактивное меню
make menuconfig
Убедитесь, что 64 bit kernel (NEW) выбрано
Затем, сделав menuconfig , если у вас есть больше ядер, чем 6, чем вы можете сделать более 6, например, у меня 8 ядер
make -j 8
После того, как Кенель закончил компиляцию (момент Gentoo), вы увидите сообщение с bZimage , сделайте каталог с именем boot-files
mkdir /boot-files
Затем скопируйте bZimage в каталог boot-files
cp arch/x86/boot/bzImage /boot-files
bzImage - это файл для загрузки системного компакт -диска обратно
cd ..
Теперь клон BusyBox
git clone --depth 1 https://git.busybox.net/busybox
Затем введите каталог busybox
cd busybox
Затем сделайте menuconfig
make menuconfig
Перейдите в settings > Build static binary (no shared libs) (NEW) Выберите его сейчас, причина, по которой мы создали static сборку, заключается в том, что мы не хотим внешних двоичных файлов сейчас с количеством сердечников, которые вы запускали make -j <cores> например, например
make -j 8
После того, как BroundBox закончил компилирование, сделайте initramds
mkdir /boot-files/initramfs
теперь беги
make CONFIG_PREFIX=/boot-files/initramfs install
initramfs - это начальная файловая система, которую ядро загружает после загрузки, мы поместим Busybox, теперь перейти к этой папке
cd /boot-files/initramfs/
Теперь создайте файл с именем init
nano init
Теперь добавьте эти команды в init
#!/bin/sh
/bin/sh
Теперь сохраните его, теперь удалите linuxrc , не нужно в этом файле
rm linuxrc
Теперь добавьте Exec Remessions в init
chmod +x init
Теперь найдите, затем упакуйте его в архив .cpio
find . | cpio -o -H newc > ../init.cpio
-o означает создать новый архив, теперь иди 1 Дир назад
cd ..
Теперь файл был создан, используйте ls , чтобы увидеть его, но мы будем использовать загрузчик под названием syslinux сделать bootfile
dd if=/dev/zero of=boot bs=1M count=50
Это сделает файл, который составляет 50-100 мегабайт, и он будет заполнен нулями, мы будем использовать fat файловую систему
mkfs -t fat boot
затем беги
syslinux boot
Теперь сделайте каталог, который называется что угодно, кроме безопасности, мы будем использовать m , затем установите ботинок в m
mkdir m
mount boot m
Затем скопируйте ядро и initramfs в boot FS
cp bzImage init.cpio m
Теперь размонтируйте это
unmount m
Теперь загрузочное изображение готово, поэтому мы загрузим его
qemu-system-x86_64 boot
Syslinux загрузится и спросит, какой файл загрузить использование
/bzImage -initrd=init.cpio
Ссылки DFS GUI DFS For Embedded Devices