|
x86-64的开机顺序是
UEFI->grub2->kernel->rootfs
本系统使用一个8G U盘做主硬盘,
UEFI, grub2, kernel在第一分区,格式为fat,大小为1G。
rootfs在第二分区,格式为EXT4分区,大小为2G。
为U盘建立GPT分区表
$ sudo gdisk /dev/sdb
Command (? for help): o
Command (? for help): w
Do you want to proceed? (Y/N): y
创建第一分区
$ sudo gdisk /dev/sdb
Command (? for help): n
Partition number (1-128, default 1):
First sector (34-16367582, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-16367582, default = 16367582) or {+-}size{KMGTP}: +1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI System'
创建第二分区
Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-16367582, default = 2099200) or {+-}size{KMGTP}:
Last sector (2099200-16367582, default = 16367582) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
写入GPT分区表
Command (? for help): w
$ ls /dev/ | grep sdb
sdb
sdb1
sdb2
OK,两个分区出来了。
格式化两个分区
$ sudo mkfs.vfat -F32 -n GRUB2EFI /dev/sdb1
$ sudo mkfs.ext4 -L ROOTFS /dev/sdb2
拔掉U盘重新插,只会自动挂载ROOTFS这个分区
挂载第一分区
sudo mount -t vfat /dev/sdb1 /mnt -o uid=1000,gid=1000,umask=022
把ubuntu安装光盘镜像挂载,拷贝boot和EFI文件夹到/mnt
把boot/grub/grub.cfg里面的选项改为
menuentry "Mylinux4.17.11" {
linux /linux4.17.11/vmlinuz4.17.11 boot=/dev/sda2 rootwait ---
}
编译linux 4.17.11并将内核镜像拷到/mnt/linux1.17.11文件夹,命名为vmlinuz4.17.11
在ROOTFS分区创建以下脚本并运行
#!/bin/bash
echo "--------Create root,dev....----------"
mkdir root dev etc boot tmp var sys proc lib mnt home usr
mkdir etc/init.d etc/rc.d etc/sysconfig
mkdir usr/lib usr/modules
echo "make node in dev/console dev/null"
sudo mknod -m 600 dev/console c 5 1
sudo mknod -m 600 dev/null c 1 3
mkdir dev/pts -p
# mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib var/lock var/run var/tmp var/log
chmod 1777 tmp
chmod 1777 var/tmp
# create etc config /etc/inittab
echo -e "::sysinit:/etc/init.d/rcS " >etc/inittab
echo -e "::askfirst:-/bin/sh " >>etc/inittab
echo -e "::ctrlaltdel:/sbin/reboot " >>etc/inittab
echo -e "::shutdown:/bin/umount -a -r " >>etc/inittab
# create etc config /etc/init.d/rcs
echo -e "#! /bin/sh " >etc/init.d/rcS
echo -e "mount -t sysfs none /sys " >>etc/init.d/rcS
echo -e "mount -t proc none /proc " >>etc/init.d/rcS
echo -e "mount -t tmpfs tmpfs /tmp" >>etc/init.d/rcS
echo -e "/bin/hostname -F /etc/sysconfig/HOSTNAME " >>etc/init.d/rcS
echo -e "mdev -s " >>etc/init.d/rcS
chmod +x etc/init.d/rcS
# create etc config /etc/fstab
echo -e "proc /proc proc defaults 0 0 " >etc/fstab
echo -e "sysfs /sys sysfs defaults 0 0 " >>etc/fstab
echo -e "devtmpfs /dev devtmpfs defaults 0 0 " >>etc/fstab
echo -e "tmpfs /tmp tmpfs defaults 0 0 " >>etc/fstab
echo -e "tmpfs /var tmpfs defaults 0 0 " >>etc/fstab
echo -e "none /dev/pts devpts defaults 0 0 " >>etc/fstab
# create etc config /etc/group
echo -e "root:x:0: " >etc/group
# create etc config /etc/passwd
echo -e "root:x:0:0:root:/root:/bin/sh " >etc/passwd
# create etc config /etc/profile
echo -e "PATH=/bin:/sbin:/usr/bin:/usr/sbin " >etc/profile
echo -e "export PATH " >>etc/profile
echo -e "#set hostname " >>etc/profile
echo -e "HOSTNAME='/bin/hostname' " >>etc/profile
echo -e "export HOSTNAME " >>etc/profile
echo -e "# Set PS1 " >>etc/profile
echo -e "PS1='\u@\h:\w\\$ ' " >>etc/profile
echo -e "export PS1 " >>etc/profile
# create etc config /etc/sysconfig/HOSTNAME
echo -e "hostname " >etc/sysconfig/HOSTNAME
echo "-------make direction done---------"
编译busybox-1.29.3,也拷贝到ROOTFS分区。
end
最后,十分感谢老司机 dr2001 带路 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|