成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何定制Linux外圍文件系統?

新聞 Linux
一般來說,我們所說的 Linux系統 指的是各種基于 Linux Kernel 和 GNU Project 的操作系統發行版。

 一般來說,我們所說的 Linux系統 指的是各種基于 Linux Kernel 和 GNU Project 的操作系統發行版。為了掌握 Linux 操作系統的使用,了解 Linux 操作系統的運作過程,理解內核與外圍支撐系統的關系,加深對開源操作系統的認識,我決定造個輪子——自己定制一個 Linux 文件系統。

這里有兩種實現方法:

  • 直接自己實現 init**\*(M1)***

加載bios 的硬件信息-> 讀取MBR –>執行Grub ->加載kernel–> 加載驅動–> init –> 執行bash

  • 利用系統 /sbin/init**\*(M2)***

加載bios 的硬件信息-> 讀取MBR –>執行Grub ->加載kernel–> 加載驅動–> init –> /sbin/init -> 取得run-level信息 -> /etc/rc.d/rc.sysinit -> services –> /etc/rc.d/rc.local –> mingetty –> login

我們先選擇 *M1 *。

思路

  1. 利用原有系統復制必備部件到新存儲器
  2. 利用 initrd.img 機制在 RAM Disk 中測試
  3. 搭配原文件內核和模塊啟動

Step1:獲得shell版本的initrd.img

首先,我們可以寫一個腳本 init ,使得內核用該文件系統啟動后能夠直接獲得一個 Bash 。

創建腳本 init

其中: /bin 目錄下是常用命令, init 是自己寫的腳本, /lib64 目錄下是應用程序所依賴的動態庫。

init 內容

現在我們需要使用命令行,創建 bin 和 sbin 目錄,向其中添加 bash 、 ls 、 rm 、 cp 、 mv 、 echo 、 cat 、 less 等基礎命令。由于這些命令需要依賴 /lib64 等目錄下的一些動態鏈接的共享庫,所以需要將依賴的庫拷貝到小系統對應的目錄下,用 ldd 命令查詢應用程序及其依賴的動態庫。完成之后,執行:

find . | cpio -H newc -o | gzip > /boot/initrd.img

將根文件系統打包成 initrd.img 放到 /boot 目錄下。啟動時系統會自動執行 initrd.img 中的 init 。

費了這么大勁生成 initrd.img ,如何測試新建的 initrd.img 呢,需要在 grub 啟動配置文件當中增加一個入口用于測試。

title CentOS 6 Mini
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64
initrd /initrd.img

這樣重啟之后就會出現啟動選項了。

Step2:完成掛載原系統能力

為了能掛載原系統,必須在 initrd.img 中加載原系統運行所必須的驅動模塊,比如 ext4 文件系統的驅動、 scsi 設備的相關驅動等, /sbin/modinfo 配合 /sbin/insmod ,驅動放到 /module

Step3:完成擁有管理設備能力(udev)

利用管理、監控主機設備的服務程序udevd來自動加載所需的驅動模塊,比我們自己實現更加可靠。 udevd 的規則文件在 /lib/udev/ 目錄下,配置文件在 /etc/udev/ 目錄下,同時還需要 /etc/nsswitch.conf 配置的名稱服務交換,其依賴的庫為 /lib 目錄下以 libnss 開頭的文件,將上述文件拷貝到我們的目錄下,然后使用 /sbin/start\_udev 命令可以啟動 udevd 服務。( udevd 需要調用一些其他的系統命令,如 /sbin/modprobe ,可用 strace 進行跟蹤獲取)。

小系統的目錄文件

其中: /dev 目錄下是系統存放可用設備的目錄, /log 是使用 strace 命令生成的 log 記錄文件。

Step4:完成擁有login登錄能力

由于 login 的機制比較復雜,涉及進程管理機制和進程組、控制臺等許多方面,因此我們采用 *M2 *,將 /sbin/init 命令拷到小系統目錄下, init 腳本改為

#!/bin/bash
exec /sbin/init

將控制權交給 /sbin/init 之后,系統啟動時就必須等到它完成一系列調用之后,進入 login界面,用戶才能重新獲得控制權。

/sbin/init 的過程大致分為三塊:***塊是udevd加載驅動模塊、文件系統檢查和根切換,相關配置在 /etc/rc.sysinit 中;第二塊是啟動各項服務,相關配置在 /etc/rc.d/ 目錄下;第三塊是登錄部分,需要調用 /sbin/mingetty 和 /bin/login 等命令。將上述所涉及的命令及文件拷貝到小系統對應的目錄下,并對配置進行修改。

由于小系統啟動之后 initrd.img 作為臨時根文件系統直接在內存中運行,而我們小系統不需要進行根切換,故將 /etc/rc.sysinit 中 remount\_needed() 函數體注釋掉,這樣就不會根切換了。

由于系統采用了全新的 Upstart 啟動方式( /sbin/init 程序已經改由 upstart 軟件包提供),將與 Upstart 啟動相關的配置文件拷貝至小系統目錄下:

/etc/inittab 配置默認運行級別
/etc/init/rcS.conf 加載rc.sysinit腳本,完成系統初始化任務
/etc/init/rc.conf 兼容腳本,負責各運行級別的調用處理
/etc/init/rcS-sulogin.conf 為單用戶模式啟動/sbin/sushell環境
/etc/init/control-alt-delete.conf 控制終端下的Ctrl+Alt+Del熱鍵操作
/etc/init/start-ttys.conf 配置tty終端的開啟數量、設備文件
/etc/sysconfig/init 控制tty終端的開啟數量、終端顏色方案
/etc/init/tty.conf 控制tty終端的開啟

將 bootmini/etc/inittab 的運行優先級改為2,那么系統啟動時 /sbin/init 將執行 bootmini/etc/rc.d/rc2.d/ 目錄下以 S 開頭的文件,將一些不需要開啟的服務文件名改為 K 開頭。

在 bootmini/etc/rc.d/rc.local 文件中可以加入用戶需要系統開機啟動后自動執行的操作。

login 程序基于認證體系 PAM , 配置文件在 /etc/pam.d/ 目錄下,相關庫文件有 /lib64/security/ 及其依賴的庫文件; login 還涉及用戶組管理 /bin/chgrp 、 /bin/chown 、 /bin/chmod 等,保存用戶名的文件 /etc/passwd 、 /etc/group ,用戶密碼文件為 /etc/shadow 。其他一些涉及的文件可通過 strace 來幫助分析。

可在真機上運行的完整版小系統

部分目錄文件:

/etc

/bin

/sbin

/usr/bin

/usr/sbin

至此,文件系統算是可以跑了。

責任編輯:張燕妮 來源: 騰訊云社區
相關推薦

2011-01-13 14:10:30

Linux文件系統

2020-07-22 14:53:06

Linux系統虛擬文件

2021-06-06 16:55:22

Linux文件系統

2021-04-12 05:44:44

Linux文件系統

2010-08-02 16:15:20

ibmdwLinux

2022-02-24 09:39:22

Linux命令文件

2010-01-14 09:52:27

linux文件系統

2009-12-22 15:12:33

Linux擴展文件系統

2009-12-25 09:58:46

linux劃分文件系統

2009-12-14 13:14:57

2021-11-01 13:38:55

Linux文件系統

2011-01-13 13:18:38

Linux網絡文件

2019-09-20 10:04:45

Linux系統虛擬文件

2018-08-24 10:10:25

Linux文件系統技術

2021-05-31 07:50:59

Linux文件系統

2009-12-10 09:42:07

2023-09-17 17:35:36

LinuxVeritas文件系統

2015-08-03 09:20:24

2018-01-23 11:10:09

2009-12-18 17:08:10

Linux常見文件系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频一区在线 | 精品一区二区三区在线视频 | 精品国产免费人成在线观看 | 久久精品国产免费 | 爱爱综合网 | 免费国产视频 | 先锋资源亚洲 | 亚洲精品二区 | 亚洲精品99 | 国产精品一区二区三区免费观看 | 精品国产乱码久久久久久88av | 99久久久久久 | 国产成人麻豆免费观看 | 天天操天天干天天爽 | av免费在线观看网站 | 91精品国产综合久久国产大片 | 日本一区二区不卡 | 日韩视频专区 | 亚洲深夜福利 | 欧美一级黄色片免费观看 | 日韩视频1 | 你懂的国产 | 日本大香伊一区二区三区 | 日日干日日 | 亚洲精品一区av在线播放 | 国产成人一区二区三区电影 | 亚洲成人免费在线观看 | 人人干在线视频 | 欧美亚洲国产一区二区三区 | 久久99国产精品 | 999精品视频| 国产成人精品一区 | 日韩免费一区二区 | 日日摸夜夜爽人人添av | 成人毛片网| 欧美不卡视频一区发布 | 黄网站免费在线观看 | 欧美中文字幕在线观看 | 在线a视频 | 亚洲国产精品久久 | 亚洲一二三区精品 |