自制linux系統

自制linux系統
  需要為虛擬機新增一個硬盤,作為自制linux系統的載體。也可以用U盤、移動硬盤或其他設備作為載體
實驗步驟:

(1)為虛擬機新增一個大小為20G的硬盤
(2)給新增的磁盤分區,劃分/boot、swap、/三個分區
比如,將第一個分區當作boot,大小為500M;第二個分區當作swap分區,大小為2G;第三個分區用作/,大小為10G。其余空間保留

fdisk /dev/sdd

blob.png

partx -a /dev/sdd

(3)為創建的三個分區創建對應的文件系統。

mkfs.ext4 /dev/sdd1
mkswap /dev/sdd2
mkfs.ext4 /dev/sdd3

blob.png

(4)在/mnt/下創建boot目錄,將要使用為boot分區的磁盤分區掛載至該目錄。

mkdir -p /mnt/grub/boot
mkdir -p /mnt/grub/sysroot

blob.png

boot掛載至/mnt/grub/boot
/掛載至/mnt/grub/sysroot

mount /dev/sdd1 /mnt/grub/boot/mount /dev/sdd3 /mnt/grub/sysroot

blob.png

(5)安裝grub

grub-install --root-directory=/mnt/mount /dev/sdd

(6)拷貝vmlinuz、initramfs文件至/mnt/mount/boot
blob.png(7)創建grub配置文件

default=0
timeout=5title 
Zmingbo (Test)
    root (hd0,0)    
    kernel /vmlinuz ro root=/dev/sda3 selinux=0 init=/bin/bash    
    initrd /initramfs.img

blob.png

(8)創建根文件系統(rootfs)
為/mnt/sysroot (新增硬盤被當作根分區的分區)創建root、home、dev、sys、proc、mnt、etc、tmp、lib、lib64、src、media、boot、bin、sbin、usr目錄
blob.png

(9)通過腳本,拷貝bash,cp,vim,cat,less等命令至/mnt/mount/sysroot/目錄下對應的目錄中
腳本如下:

#!/bin/bash
#寫一個腳本,完成如下功能(使用函數)
#1、提示用戶輸入一個可執行命令
#2、獲取這個命令所依賴的所有庫文件
#3、復制命令至/mnt/mount/sysroot對應的目錄中
#        解釋:假設,如果復制的程序路徑是/bin/cat,那么要將/bin/cat復制到/mnt/mount/sysroot/bin目錄下
#        如果復制的是/usr/bin/useradd,那么就要將其復制到/mnt/mount/sysroot/usr/bin目錄中
#4、復制各庫文件至/mnt/mount/sysroot對應的目錄中。要求同復制命令。
#

f_dir=/mnt/mount/sysroot
input_cmd() {
  
     while true;do
     read -p "Please enter an excutable command (quit to exit) :" cmd
         if [[ -z $cmd ]];then
             echo "None option,try again..."
             continue
         elif [[ $cmd == "quit" ]];then
             exit 0
         elif ! which --skip-alias $cmd &>/dev/null;then
             echo "No such command,please enter a correct command"
             continue
         else
             break
         fi
     done
  
}
  
cmd_lib_name() {
  
     cmd_path=`which --skip-alias $cmd`
     for path in $cmd_path;do
         cmd_lib_name=`ldd $path | grep -o -E '/[^[:space:]]+\>'`
     done
  
}
  
cp_cmd() {
  
     cmd_dir=`dirname $cmd_path`
     mkdir -p $f_dir$cmd_dir &>/dev/null
     cp $cmd_path $f_dir$cmd_path
  
}
  
cp_lib() {
  
     cmd_lib_name
     for i in $cmd_lib_name;do
         lib_dir=`dirname $i`
         mkdir -p $f_dir$lib_dir &>/dev/null
         cp $i $f_dir$i
     done
  
}
   
main () {
  
     while true;do
         input_cmd
         cmd_lib_name
         cp_cmd
         cp_lib
     done
  
}
 main

blob.png

查看對應目錄下是否有相應的命令和庫文件
blob.png

也可以拷貝其他需要用的命令及其依賴的庫文件分別至對應的目錄
blob.png

(10)創建/etc/fstab文件
blob.png

(11)chroot至該目錄,查看是否可用
blob.png

測試,系統可以正常使用。
(12)查看自定義linux系統的磁盤存放路徑,并關閉制作系統的虛擬機
blob.png

(13)創建一個新的虛擬系統,在選擇磁盤時選擇現有的虛擬磁盤,將自定義系統的磁盤存放路徑加載至虛擬機的配置中
blob.png

blob.png

(14)啟動虛擬機做測試。
blob.png

blob.png

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/46127

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-09-13 14:49
下一篇 2016-09-13 15:10

相關推薦

  • 文本處理工具與正則表達式

    一、文本處理工具     1.文本查看命令           cat [OPTION]… [FILE]…         -n 顯示行…

    Linux干貨 2016-08-08
  • yum安裝報錯

    我的系統是centos 6.8 x86 安裝bind時出錯如下: [root@Ams ~]# yum install bind -y Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Install Process Loading mirror speeds from…

    Linux干貨 2016-08-02
  • 網絡文件系統–NFS

        網絡文件系統(英語:Network File System,縮寫為NFS)是一種分布式文件系統協議,最初由Sun Microsystems公司開發,并于1984年發布。其功能旨在允許客戶端主機可以像訪問本地存儲一樣通過網絡訪問服務器端文件。     NFS和其他許多協議一…

    Linux干貨 2017-08-14
  • N21沉舟第十周作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;   (1) 為硬盤新建兩個主分區;并為其安裝grub;   (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;   (3) 為rootfs提供…

    Linux干貨 2016-09-10
  • Ansible Playbook Roles 和 Include 聲明-手稿

    Edit Ansible Playbook Roles 和 Include 聲明 Ansible Playbook Roles 和 Include 聲明 1. Introduction 2. Task Include Files And Encouraging Reuse 3. Roles 4. Role Default Variables 5. Role …

    Linux干貨 2016-03-28
  • N26-第四周-孫逸

    1、  復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 cp –r /etc/skel /home/tuser1 chmod –R 700 /home/tuser1 2、  編輯/etc/group文件,添加組hadoop。 group文件的內容格式: &…

    2017-03-10
欧美性久久久久