實驗目標:
- 使用dd命令創建磁盤鏡像文件ext2.img并格式化為ext2文件系統,然后通過mount命令掛載到Linux主機文件系統。
- 查看ext2文件系統的超級塊的信息,以及數據塊的數量、數據塊的大小、inode個數、空閑數據塊的數量等信息
- 在文件系統中創建文件xxxxx.txt(其中xxxxx為你的學號),在該文件中寫入你的學號文本。編寫一個C程序,根據文件名,讀出文件的全部內容并打印出來。要求:對原始img文件fopen("ext2.img")后進行處理和提取,不能直接fopen("xxxxx.txt")
實驗設備:
- 硬件:微機,hyper-V虛擬化平臺或者遠程linux終端
- 軟件:gcc
1、用dd和mkfs.ext2創建一個ext2的文件系統鏡像
dd if=/dev/zero of=ext2.img bs=1K count=256
mkfs.ext2 ext2.img -b 1024
mkdir vt
mount -t ext2 -o loop ext2.img vt
然后在vt目錄里創建一個文本文件你的學號.txt,該文件的內容也是你的學號
保存文件并退出,運行ls -li 命令,記錄下你的學號.txt的索引節點號
然后運行umount vt,再重新mount -t ext2 -o loop ext2.img vt 目的是把緩存寫入磁盤
dumpe2fs ext2.img 運行后記錄下輸出結果
【過程1】
1.輸入,如下圖
# 創建并格式化文件系統
dd if=/dev/zero of=ext2.img bs=1K count=256
mkfs.ext2 ext2.img -b 1024
2.# 創建掛載點并掛載
mkdir vt
sudo mount -t ext2 -o loop ext2.img vt
表明系統在嘗試為 ext2.img 文件設置循環設備(loop device)時失敗了。
如下圖,輸入:losetup -a
查看當前已使用的循環設備,發現ext2.img 已經被掛載到 /dev/loop14 這個循環設備上了。
因此,我繼續輸入
cd vt
sudo bash -c 'echo "123456789123" > 123456789123.txt'
如下圖所示,創建、寫入成功
3.#先返回原目錄,如下圖
cd /home/szj/OperatingSystem
# 查看文件權限和索引節點號
sudo ls -li vt
分析:
①總計 13:
這是 ls 命令統計出的 vt 目錄下文件和目錄所占用的磁盤塊總數(以 1K 大小的塊為單位)。這里的 “13” 表示這些文件和目錄在磁盤上總共占用了 13 個 1K 大小的塊。
②12 -rw-r--r-- 1 root root 13 4月 1 16:24 123456789123.txt:
- 12:這是文件 123456789123.txt 的索引節點號(Inode number)。每個文件和目錄在文件系統中都有一個唯一的索引節點,用于存儲文件的元數據(如文件大小、所有者、權限等)。
- -rw-r--r--:這是文件的權限信息。第一個字符 '-' 表示這是一個普通文件(如果是 'd' 則表示目錄)。接下來的字符分為三組,分別對應文件所有者(user)、所屬組(group)和其他用戶(others)的權限。rw- 表示所有者有讀(r)和寫(w)權限,沒有執行權限;r-- 表示所屬組有讀權限,沒有寫和執行權限;最后一組 r-- 表示其他用戶也只有讀權限,沒有寫和執行權限。
- 1:這是文件的硬鏈接數。對于普通文件,硬鏈接數通常為 1。
- root root:第一個 root 是文件的所有者(用戶),第二個 root 是文件所屬的組。在這里,文件的所有者和所屬組都是