이 프로젝트는 처음부터 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) 이 선택되어 있는지 확인하십시오
그런 다음 6 개 이상의 코어가 있다면 menuconfig 만든 후 8 코어가있는 것과 같이 6 개 이상을 만들 수 있습니다.
make -j 8
Kenel이 컴파일을 마친 후 (Gentoo Moment) bZimage 와 함께 메시지를 보게됩니다. boot-files 라는 디렉토리를 만드십시오.
mkdir /boot-files
그런 다음 bZimage boot-files 디렉토리에 복사하십시오
cp arch/x86/boot/bzImage /boot-files
bzImage 는 시스템 CD를 다시 부팅하기위한 파일입니다.
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
BusyBox가 완료된 후 initramds 을 마치면이 시작됩니다
mkdir /boot-files/initramfs
이제 실행됩니다
make CONFIG_PREFIX=/boot-files/initramfs install
initramfs는 초기 파일 시스템입니다. 커널로드가 부팅 후로드됩니다.
cd /boot-files/initramfs/
이제 init 라는 파일을 만듭니다
nano init
이제이 명령을 추가 init
#!/bin/sh
/bin/sh
이제 저장 해당 파일이 필요하지 않음 linuxrc 삭제
rm linuxrc
이제 execermessions를 추가하십시오
chmod +x init
이제 찾아서 .cpio 아카이브에 포장하십시오
find . | cpio -o -H newc > ../init.cpio
-o 는 이제 새 아카이브를 만듭니다.
cd ..
이제 파일이 ls 사용하여 작성하여 작성되었지만 syslinux 라는 부트 로더를 사용합니다.
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 For Embedded Devices DFS GUI DFS를 연결합니다