自制 linux 系统

自制 linux 系统

  1. 在现有的linux系统上,添加一块硬盘 /dev/sdb,记住这个硬盘的虚拟磁盘的文件路径
  2. 分区 /dev/sdb1,/dev/sdb2
  3. 建立文件系统
    1. mkfs.ext4 /dev/sdb1
    2. mkfs.ext4/dev/sdb2
  4. 挂载
    1. mount /dev/sdb1 /mnt/boot
    2. mount /dev/sdb2 /mnt/root
  5. 生成 grub , vmlinuz, initramfs.img
    1. grub-install --root-directory=/mnt/ /dev/sdb
    2. cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /boot/initramfs-2.6.32-754.el6.x86_64.img /mnt/boot/
  6. 编写 grub.conf
  7. 建立根下的目录
    1. mkdir /mnt/root/{etc,boot,dev,proc,home,lib,lib64,sys,usr,bin,sbin,tmp,var}
  8. 编写脚本 /root/bin/copycmd.sh, 实现如下功能
    1. 提示用户输入一个可执行命令名称
    2. 获取此命令所依赖到的全部库文件列表
    3. 复制命令至某目标目录(例如/mnt/sysroot)下的对应路径下
      1. 如:/bin/bash ==> /mnt/sysroot/bin/bash
      2. /usr/bin/passwd ==> /mnt/sysroot/usr/bin/passwd
    4.  复制此命令依赖到的全部库文件至目标目录下的对应路径下: 
      1. 如:/lib64/ld-linux-x86-64.so.2 ==> /mnt/sysroot/lib64/ld-linux-x86-64.so.2
    5. 每次复制完成一个命令后,不要退出,而是提示用户键入新的要复制的命令,并重复完成上述功能;直到用户输入quit退出
  9. #!/bin/bash
    ch_root="/mnt/root"
    [ ! -d $ch_root ] && mkdir $ch_root
     
    bincopy() {
        if which $1 &>/dev/null; then
    
            local cmd_path=`which --skip-alias $1`
            local bin_dir=`dirname $cmd_path`
            [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}
            [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}
            return 0
        else
            echo "Command not found."
            return 1
        fi
    }
     
    libcopy() {
        local lib_list=$(ldd `which --skip-alias $1` | grep -Eo '/[^[:space:]]+')
        for loop in $lib_list;do
            local lib_dir=`dirname $loop`
            [ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}
            [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}
        done
    }
     
     
    read -p "Please input a command: " command
     
    while [ "$command" != "quit" ];do
        if bincopy $command ;then
            libcopy $command
        fi
        read -p "Please input a command or quit: " command
    done

     

  10. 调用 脚本 copycmd.sh,拷贝程序及相关依赖包linux

    1. ethtool -i eth0bash

    2. modinfo e1000oop

    3. cp /lib/modules/2.6.32-754.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/root/lib/测试

  11. 切根 测试ui

    1. chroot /mnt/root/spa

  12. 关机,将硬盘拆下来接到另外一台电脑上3d

  13. 开机就可进入系统code

    1. 加载网卡blog

相关文章
相关标签/搜索