源碼編譯Linux操作系統

源碼編譯製作Linux操作系統

1.初始化磁盤

#mkdir /mnt/iso/minilinux && cd /mnt/iso/minilinux

# dd if=/dev/zero of=minilinux.img bs=1M count=128

#parted minilinux.img mklabel msdos

#parted minilinux.img mkpart primary ext4 2048s 100%

# losetup -o 1048576 /dev/loop0 minilinux.img

# mkfs.ext4 /dev/loop0

# mkdir /mnt/minilinux &&  mount -t ext4 /dev/loop0 /mnt/minilinux

2.安裝bootloader

grub2-install --boot-directory=/mnt/minilinux/boot/ --target=i386-pc --modules=part_msdos minilinux.img

3.編譯安裝內核

內核編譯

cd linux-5.13.4

make

make x86_64_defconfig

 make menuconfig

         general setup->  Initial RAM filesystem and RAM disk -> enable

       filesystem -> ext2 -> enable

       device drivers-> block devices -> RAM block device support ->enable

make -j4 bzImage

cp arch/x86/boot/bzImage /mnt/minilinux/boot/

4.編譯文件系統

cd /mnt/iso/minilinux

dd if=/dev/zero of=initrd.img bs=1M count=4

mkfs.ext4 initrd.img

mkdir /mnt/rootfs

mount -o loop initrd.img /mnt/rootfs

##busybox編譯依賴glibc_static可以使用源碼編譯

cd busybox-1.30.1/

make menuconfig

         Settings  --->
                   --- Build Options
                            [*] Build static binary (no shared libs)

make -j4

make CONFIG_PREFIX=/mnt/rootfs install

mkdir -p /mnt/rootfs/etc/init.d/
gedit /mnt/rootfs/etc/init.d/rcS

#!/bin/busybox sh
echo "Hello miniLinux!"

chmod +x /mnt/rootfs/etc/init.d/rcS
mkdir /mnt/rootfs/dev
mknod /mnt/rootfs/dev/console c 5 1
mknod /mnt/rootfs/dev/ram b 1 0
umount /mnt/rootfs

cp initrd.img /mnt/minilinux/boot/

5.增加grub引導文件

menuentry "minilinux" {

    linux (hd0,msdos1)/boot/bzImage root=/dev/ram rw init=/linuxrc noapic

    initrd (hd0,msdos1)/boot/initrd.img

}

6.磁盤轉換及virtualBox啓動

umount /mnt/rootfs

umount  /mnt/minilinux

losetup -d /dev/loop0

cd /mnt/iso/minilinux && qemu-img convert minilinux.img -O raw minilinux.raw

VBoxManage convertdd minilinux_disk.raw minilinux_disk.vdi

其中vdi磁盤可以直接在virtualBox中加載磁盤使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章