自制 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

相關文章
相關標籤/搜索