mirror of
https://github.com/MCKero6423/fuwari.git
synced 2026-10-02 03:15:35 +00:00
更新 my-linux.md
给部分代码框添加shell标记
This commit is contained in:
1 parent
20fe6e7d9b
commit
5569d011ac
1 file changed
+48
-48
@@ -28,31 +28,31 @@ lang: zh_CN
|
|||||||
|
|
||||||
把压缩包wget下来(用curl也行)
|
把压缩包wget下来(用curl也行)
|
||||||
|
|
||||||
```
|
```shell
|
||||||
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.16.4.tar.xz
|
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.16.4.tar.xz
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 解压
|
#### 解压
|
||||||
把下载下来的压缩包进行解压
|
把下载下来的压缩包进行解压
|
||||||
```
|
```shell
|
||||||
tar -xf inux-6.16.4.tar.xz
|
tar -xf inux-6.16.4.tar.xz
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 配置内核
|
#### 配置内核
|
||||||
先cd到对应目录
|
先cd到对应目录
|
||||||
```
|
```shell
|
||||||
cd inux-6.16.4
|
cd inux-6.16.4
|
||||||
```
|
```
|
||||||
我就直接使用默认配置了。如果需要可以调整配置。
|
我就直接使用默认配置了。如果需要可以调整配置。
|
||||||
```
|
```shell
|
||||||
make defconfig
|
make defconfig
|
||||||
```
|
```
|
||||||
使用编译命令。(-j是要使用多少个核心)
|
使用编译命令。(-j是要使用多少个核心)
|
||||||
```
|
```shell
|
||||||
make -j4
|
make -j4
|
||||||
```
|
```
|
||||||
等待编译完成后会提示内核的输出路径,我编译的是x86的。
|
等待编译完成后会提示内核的输出路径,我编译的是x86的。
|
||||||
```
|
```shell
|
||||||
linux-6.16.4/arch/x86/boot/bzImage
|
linux-6.16.4/arch/x86/boot/bzImage
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -66,19 +66,19 @@ linux-6.16.4/arch/x86/boot/bzImage
|
|||||||
选择Download Source接着,滑到最底下找到1.37.0版本(大约2mb左右,那些大小太少的好像是用来校验的,你要是想也可以全下载下来一个一个找😆)
|
选择Download Source接着,滑到最底下找到1.37.0版本(大约2mb左右,那些大小太少的好像是用来校验的,你要是想也可以全下载下来一个一个找😆)
|
||||||
|
|
||||||

|

|
||||||
```
|
```shell
|
||||||
wget https://busybox.net/downloads/busybox-1.37.0.tar.bz2
|
wget https://busybox.net/downloads/busybox-1.37.0.tar.bz2
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 解压busybox
|
#### 解压busybox
|
||||||
还是老生常谈的解压
|
还是老生常谈的解压
|
||||||
```
|
```shell
|
||||||
tar -xf busybox-1.37.0.tar.bz2
|
tar -xf busybox-1.37.0.tar.bz2
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 配置busybox
|
#### 配置busybox
|
||||||
解压完后cd进对应目录,配置busybox,由于我们这个系统简直就是一个毛坯房,几乎啥都没有,所以说要用静态编译。先去配置一下。
|
解压完后cd进对应目录,配置busybox,由于我们这个系统简直就是一个毛坯房,几乎啥都没有,所以说要用静态编译。先去配置一下。
|
||||||
```
|
```shell
|
||||||
make menuconfig
|
make menuconfig
|
||||||
```
|
```
|
||||||
进到settings(按enter)找到Build Busybox as a static binary(no shared libs)按空格选择,按→选Exit
|
进到settings(按enter)找到Build Busybox as a static binary(no shared libs)按空格选择,按→选Exit
|
||||||
@@ -87,25 +87,25 @@ make menuconfig
|
|||||||
|
|
||||||
#### 编译busybox
|
#### 编译busybox
|
||||||
配置完后就开始编译
|
配置完后就开始编译
|
||||||
```
|
```shell
|
||||||
make -j 2
|
make -j 2
|
||||||
```
|
```
|
||||||
编译完成后,在你的工作目录创建一个临时目录
|
编译完成后,在你的工作目录创建一个临时目录
|
||||||
```
|
```shell
|
||||||
mkdir busybox
|
mkdir busybox
|
||||||
```
|
```
|
||||||
然后
|
然后
|
||||||
```
|
```shell
|
||||||
make install CONFIG_PREFIX=../busybox
|
make install CONFIG_PREFIX=../busybox
|
||||||
```
|
```shell
|
||||||
#### 编辑img文件
|
#### 编辑img文件
|
||||||
使用dd命令创建一个全都是0的文件
|
使用dd命令创建一个全都是0的文件
|
||||||
```
|
```shell
|
||||||
dd if=/dev/zero of=Linux.img bs=1M count=512)
|
dd if=/dev/zero of=Linux.img bs=1M count=512)
|
||||||
```
|
```shell
|
||||||
给img文件分区
|
给img文件分区
|
||||||
|
|
||||||
```
|
```shell
|
||||||
gdisk Linux.img
|
gdisk Linux.img
|
||||||
```
|
```
|
||||||
输入n,后面两个按空格,最后一个输入50MB,guid填写EF00(注意大小写)
|
输入n,后面两个按空格,最后一个输入50MB,guid填写EF00(注意大小写)
|
||||||
@@ -115,82 +115,82 @@ gdisk Linux.img
|
|||||||
#### 挂载
|
#### 挂载
|
||||||
先使用losetup将一个文件或设备与一个回环设备(loop device)进行关联。
|
先使用losetup将一个文件或设备与一个回环设备(loop device)进行关联。
|
||||||
|
|
||||||
```
|
```shell
|
||||||
sudo losetup -f -P Linux.img
|
sudo losetup -f -P Linux.img
|
||||||
```
|
```
|
||||||
lsblk查看
|
lsblk查看
|
||||||
|
|
||||||
```
|
```shell
|
||||||
lsblk
|
lsblk
|
||||||
```
|
```
|
||||||
找到Linux的loop,我这边是loop0里面有loop0p1,loop0p1。
|
找到Linux的loop,我这边是loop0里面有loop0p1,loop0p1。
|
||||||
|
|
||||||
loop0p1
|
loop0p1
|
||||||
```
|
```shell
|
||||||
sudo mkfs.fat -F32 /dev/loop0p1
|
sudo mkfs.fat -F32 /dev/loop0p1
|
||||||
```
|
```
|
||||||
loop0p2
|
loop0p2
|
||||||
```
|
```shell
|
||||||
sudo mkfs.exit4 /dev/loop0p2
|
sudo mkfs.exit4 /dev/loop0p2
|
||||||
```
|
```
|
||||||
在工作目录创建一个mnt文件夹
|
在工作目录创建一个mnt文件夹
|
||||||
```
|
```shell
|
||||||
mkdir mnt
|
mkdir mnt
|
||||||
```
|
```
|
||||||
挂载loop0p1
|
挂载loop0p1
|
||||||
```
|
```shell
|
||||||
sudo mount /dev/loop0p1 mnt
|
sudo mount /dev/loop0p1 mnt
|
||||||
```
|
```
|
||||||
#### 创建 EFI
|
#### 创建 EFI
|
||||||
```
|
```shell
|
||||||
sudo grub-install --target=x86_64-efi --efi-directory=$(realpath mnt) --bootloader-id=GRUB --removable --recheck
|
sudo grub-install --target=x86_64-efi --efi-directory=$(realpath mnt) --bootloader-id=GRUB --removable --recheck
|
||||||
```
|
```
|
||||||
查看mnt里面的文件,应该会有一个叫做EFI的文件夹
|
查看mnt里面的文件,应该会有一个叫做EFI的文件夹
|
||||||
```
|
```shell
|
||||||
ls mnt
|
ls mnt
|
||||||
```
|
```
|
||||||
创建一个在mnt/BOOT/grub的文件夹
|
创建一个在mnt/BOOT/grub的文件夹
|
||||||
```
|
```shell
|
||||||
mkdir -p mnt/boot/grub
|
mkdir -p mnt/boot/grub
|
||||||
```
|
```
|
||||||
复制文件
|
复制文件
|
||||||
```
|
```shell
|
||||||
cp mnt/BOOT/grub.cfg /mnt/boot/grub
|
cp mnt/BOOT/grub.cfg /mnt/boot/grub
|
||||||
```
|
```
|
||||||
查看loop0p2的id
|
查看loop0p2的id
|
||||||
```
|
```shell
|
||||||
blkid /dev/loop0p2
|
blkid /dev/loop0p2
|
||||||
```
|
```
|
||||||
把UUID物复制下来,替换mnt/boot/grub/grub.cfg中的UUID,然后把修改后的文件直接复制替换到mnt/EFI/BOOT/grub.cfg
|
把UUID物复制下来,替换mnt/boot/grub/grub.cfg中的UUID,然后把修改后的文件直接复制替换到mnt/EFI/BOOT/grub.cfg
|
||||||
|
|
||||||
回到mnt的上一层,解除挂载。
|
回到mnt的上一层,解除挂载。
|
||||||
```
|
```shell
|
||||||
sudo umount mnt
|
sudo umount mnt
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 给系统搞个根目录
|
#### 给系统搞个根目录
|
||||||
先挂载 loop0p2
|
先挂载 loop0p2
|
||||||
```
|
```shell
|
||||||
sudo mount /dev/loop0p2 mnt
|
sudo mount /dev/loop0p2 mnt
|
||||||
```
|
```
|
||||||
复制内核文件到mnt
|
复制内核文件到mnt
|
||||||
```
|
```shell
|
||||||
sudo cp linux-6.16.4/arch/x86/boot/bzImage mnt
|
sudo cp linux-6.16.4/arch/x86/boot/bzImage mnt
|
||||||
```
|
```
|
||||||
把busybox编译出来的二进制文件移到对应目录
|
把busybox编译出来的二进制文件移到对应目录
|
||||||
```
|
```shell
|
||||||
sudo cp -r busybox/* mnt
|
sudo cp -r busybox/* mnt
|
||||||
```
|
```
|
||||||
cd到mnt
|
cd到mnt
|
||||||
```
|
``` shell
|
||||||
cd mnt
|
cd mnt
|
||||||
```
|
```
|
||||||
创建boot文件夹
|
创建boot文件夹
|
||||||
```
|
```shell
|
||||||
mkdir boot
|
mkdir boot
|
||||||
```
|
```
|
||||||
创建其他需要的目录(有些文件创建来就是空着的,方便后期不用创建,比如说包管理器就要用etc文件夹
|
创建其他需要的目录(有些文件创建来就是空着的,方便后期不用创建,比如说包管理器就要用etc文件夹
|
||||||
```
|
```shell
|
||||||
mkdir proc
|
mkdir proc
|
||||||
|
|
||||||
mkdir sys
|
mkdir sys
|
||||||
@@ -198,33 +198,33 @@ mkdir sys
|
|||||||
mkdir etc
|
mkdir etc
|
||||||
```
|
```
|
||||||
把bzImage文件移动到boot文件夹
|
把bzImage文件移动到boot文件夹
|
||||||
```
|
```shell
|
||||||
sudo mv bzImage boot/
|
sudo mv bzImage boot/
|
||||||
```
|
```
|
||||||
跳转boot目录,ls检查一下
|
跳转boot目录,ls检查一下
|
||||||
```
|
```shell
|
||||||
cd boot
|
cd boot
|
||||||
|
|
||||||
ls
|
ls
|
||||||
```
|
```
|
||||||
如果没有问题就能看到bzImage文件
|
如果没有问题就能看到bzImage文件
|
||||||
```
|
```shell
|
||||||
bzImage
|
bzImage
|
||||||
```
|
```
|
||||||
创建grub文件夹
|
创建grub文件夹
|
||||||
```
|
```shell
|
||||||
mkdir grub
|
mkdir grub
|
||||||
```
|
```
|
||||||
cd到grub
|
cd到grub
|
||||||
```
|
```shell
|
||||||
cd grub
|
cd grub
|
||||||
```
|
```
|
||||||
创建一个文件叫grub.cfg
|
创建一个文件叫grub.cfg
|
||||||
```
|
```shell
|
||||||
vim grub.cfg
|
vim grub.cfg
|
||||||
```
|
```
|
||||||
里面的内容按这个填
|
里面的内容按这个填
|
||||||
```
|
```shell
|
||||||
menuentry "Unics_MCKero" {
|
menuentry "Unics_MCKero" {
|
||||||
insmod part_gpt
|
insmod part_gpt
|
||||||
insmod fat
|
insmod fat
|
||||||
@@ -237,7 +237,7 @@ menuentry "Unics_MCKero" {
|
|||||||
Unics_MCKero这个是你的引导程序的名字可以修改(尽量使用英文,我不知道用特殊字符或者中文会不会不兼容)
|
Unics_MCKero这个是你的引导程序的名字可以修改(尽量使用英文,我不知道用特殊字符或者中文会不会不兼容)
|
||||||
|
|
||||||
执行这个查看loop0p2的UUID
|
执行这个查看loop0p2的UUID
|
||||||
```
|
```shell
|
||||||
blkid /dev/loop0p2
|
blkid /dev/loop0p2
|
||||||
```
|
```
|
||||||
mnt/boot/grub.cfg里面的set=root 这个后面填写loop0p2的UUID
|
mnt/boot/grub.cfg里面的set=root 这个后面填写loop0p2的UUID
|
||||||
@@ -245,15 +245,15 @@ mnt/boot/grub.cfg里面的set=root 这个后面填写loop0p2的UUID
|
|||||||
PARTUUID这里填写blkid /dev/loop0p2输出的PARTUUID,然后保存
|
PARTUUID这里填写blkid /dev/loop0p2输出的PARTUUID,然后保存
|
||||||
|
|
||||||
跳转到mnt的boot目录(因为我在mnt的boot/grub目录所以说我就直接使用直接返回上一层)
|
跳转到mnt的boot目录(因为我在mnt的boot/grub目录所以说我就直接使用直接返回上一层)
|
||||||
```
|
```shell
|
||||||
cd ..
|
cd ..
|
||||||
```
|
```
|
||||||
创建一个名为init的文件
|
创建一个名为init的文件
|
||||||
```
|
```shell
|
||||||
vim init
|
vim init
|
||||||
```
|
```
|
||||||
内容就写这个
|
内容就写这个
|
||||||
```
|
```shell
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
mount -t sysfs none /sys
|
mount -t sysfs none /sys
|
||||||
@@ -263,7 +263,7 @@ mount -t devtmpfs devtmpfs /dev
|
|||||||
exec /bin/sh
|
exec /bin/sh
|
||||||
```
|
```
|
||||||
给init执行权限(一定要给,如果没给系统运行不了)
|
给init执行权限(一定要给,如果没给系统运行不了)
|
||||||
```
|
```shell
|
||||||
chmod +x init
|
chmod +x init
|
||||||
```
|
```
|
||||||
#### 网络
|
#### 网络
|
||||||
@@ -272,11 +272,11 @@ chmod +x init
|
|||||||
先到这个项目的仓库[ifupdown-ng的github仓库](https://github.com/ifupdown-ng/ifupdown-ng)这是一个用c语言编写的项目,比较轻量,它可以用来管理网络设备。
|
先到这个项目的仓库[ifupdown-ng的github仓库](https://github.com/ifupdown-ng/ifupdown-ng)这是一个用c语言编写的项目,比较轻量,它可以用来管理网络设备。
|
||||||
|
|
||||||
我们先把他的仓库克隆下来
|
我们先把他的仓库克隆下来
|
||||||
```
|
```shell
|
||||||
git clone https://github.com/ifupdown-ng/ifupdown-ng.git
|
git clone https://github.com/ifupdown-ng/ifupdown-ng.git
|
||||||
```
|
```
|
||||||
跳转进仓库
|
跳转进仓库
|
||||||
```
|
```shell
|
||||||
cd ifupdown-ng
|
cd ifupdown-ng
|
||||||
```
|
```
|
||||||
因为我们的小系统没有依赖库,所以说我们需要静态编译这个程序。
|
因为我们的小系统没有依赖库,所以说我们需要静态编译这个程序。
|
||||||
|
|||||||
Reference in new issue
Block a user