源码编译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中加载磁盘使用

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