【Linux】定制Linux系统

文章目录

  • [1. 制作尽可能小的Linux系统](#1. 制作尽可能小的Linux系统)
    • [1.1. 环境准备](#1.1. 环境准备)
      • [1.1.1 Linux内核编译相关](#1.1.1 Linux内核编译相关)
      • [1.1.2. bash-static](#1.1.2. bash-static)
    • [1.2. 具体步骤](#1.2. 具体步骤)
      • [1.2.1. 编译内核镜像](#1.2.1. 编译内核镜像)
      • [1.2.2. 加入bash-static](#1.2.2. 加入bash-static)
  • 其他
    • [fish shell](#fish shell)
      • [fish shell相关依赖安装](#fish shell相关依赖安装)
      • [静态编译fish shell](#静态编译fish shell)

1. 制作尽可能小的Linux系统

参考资料:https://www.bilibili.com/video/BV1gtfbYWEui

1.1. 环境准备

1.1.1 Linux内核编译相关

bash 复制代码
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc flex -y
  • 安装qemu
bash 复制代码
sudo apt install qemu-system-x86 -y
  • 安装镜像构建依赖
bash 复制代码
sudo apt install syslinux isolinux genisoimage -y

1.1.2. bash-static

bash 复制代码
sudo apt install bash-static -y

1.2. 具体步骤

1.2.1. 编译内核镜像

  • 解压文件
bash 复制代码
tar -xvf linux-6.17.5.tar.xz
cd linux-6.17.5/
  • 创建tinyconfig
bash 复制代码
make tinyconfig
  • 手动调整内核配置

    bash 复制代码
    make menuconfig
    • 启用
      • 64-bit kernel
      • General setup > Initial RAM filesystem and RAM disk (initramfs/initrd) support
        • 禁用
          • Support initial ramdisk/ramfs compressed using gzip
          • Support initial ramdisk/ramfs compressed using bzip2
          • Support initial ramdisk/ramfs compressed using LZMA
          • Support initial ramdisk/ramfs compressed using XZ
          • Support initial ramdisk/ramfs compressed using LZO
          • Support initial ramdisk/ramfs compressed using LZ4
      • General setup > Configure standard kernel features (expert users) > Enable support for printk
      • Device Drivers > Character devices > Enable TTY
      • Executable file formats > Kernel support for ELF binaries
  • 编译内核

bash 复制代码
make -j$(nproc)
  • qemu使用编译的内核尝试启动可以发现缺少初始化模块
bash 复制代码
qemu-system-x86_64 -kernel arch/x86/boot/bzImage
  • 查看内核镜像大小
bash 复制代码
ls -lh arch/x86/boot/bzImage

1.2.2. 加入bash-static

bash 复制代码
cd ~
mkdir output
cd output
cp  ~/linux-6.17.5/arch/x86/boot/bzImage .
cp /usr/bin/bash-static .
mv bash-static init
echo init | cpio -H newc -o > init.cpio
cd ~/linux-6.17.5
make isoimage FDARGS="initrd=/init.cpio" FDINITRD=~/output/init.cpio
qemu-system-x86_64 -cdrom arch/x86/boot/image.iso

其他

fish shell

fish shell相关依赖安装

  • 下载fish shell linux源码:https://github.com/fish-shell/fish-shell/releases/download/4.1.2/fish-4.1.2.tar.xz

  • 安装rust环境

    • 设置镜像源
    bash 复制代码
    export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
    export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
    • 下载安装脚本安装
    bash 复制代码
    curl https://sh.rustup.rs -sSf | sh
    source "$HOME/.cargo/env.fish"
    • 检查cargo是否安装成功
    bash 复制代码
    cargo --version
  • 安装gettext(rust-pcre2的依赖)

bash 复制代码
sudo apt install -y gettext

静态编译fish shell

  • 解压文件
bash 复制代码
tar -xvf fish-4.1.2.tar.xz
cd fish-4.1.2
  • 替换GitHub源

  • 静态编译

bash 复制代码
mkdir build
cd build
cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_EXE_LINKER_FLAGS="-static" \
  -DCMAKE_FIND_LIBRARY_SUFFIXES=".a"
make -j$(nproc)
相关推荐
沉鱼.441 分钟前
第十五届题目
linux·运维·算法
凤年徐3 分钟前
Linux权限详解:从入门到掌握
linux·运维·服务器
以太浮标3 分钟前
华为eNSP模拟器综合实验之- 华为USG6000V防火墙配置防御DoS攻击实战案例解析
运维·网络协议·网络安全·华为·信息与通信
努力打怪升级4 分钟前
Apache HTTP Server 2.4 Windows 版完整配置与运维手册
运维·http·apache
zzzyyy5385 分钟前
进程优先级
linux·运维·服务器
腾科IT教育5 分钟前
华为云计算运维工程师怎么考?2026年报考攻略
运维·华为云·华为认证·hcip考试·华为hcip考试
无风听海6 分钟前
.NET10之C# 中的is null深入理解
服务器·c#·.net
小鸡食米8 分钟前
Linux-例行性工作+时间服务器
linux·服务器·网络
Bert.Cai12 分钟前
Linux head命令详解
linux·运维
Huy-C13 分钟前
云计算案例排错(云上4)
linux·运维·云计算