午夜精品人妻久久久-成年美女很黄的网站-在线看片免费人成视久网app-国产精品美女无遮挡一区二区-91精品国产综合久久久久-国产的免费视频又猛又爽又刺激-在线看片免费人成视久网app-久久香蕉国产精品视频-av一区二区三区高清

單文件多分區(qū) Linux創(chuàng)建虛擬磁盤文件

創(chuàng)建這東西有什么用呢?有!玩過樹莓派、香橙派等各種派的同志們都知道,從網(wǎng)上下載到一個系統(tǒng)鏡像文件,燒寫到TF卡之后,TF卡就變成倆分區(qū)的了,我不知道人家是不是像我這樣做的鏡像,但是,用這個方法做成了 Zero的系統(tǒng)鏡像 。
還有一個用途:把一些不想讓別人看到的東西,塞到這個鏡像文件里,不知道文件格式的人根本不知道怎么打開(好吧,這個功能確實很牽強) 。
制作步驟與方法(環(huán)境 , 缺命令的自己安裝一下):
Step1:制作一個空白文件 , 也就相當于買一塊硬盤 , 文件名叫做.img,總大小為32MB(自己根據(jù)需要修改大?。? ,這個dd命令的具體用法請自行搜索 。
# dd if=/dev/zero of=VirtualDisk.img bs=1M count=32
Step2:為空白文件創(chuàng)建分區(qū),我這里創(chuàng)建兩個分區(qū) , 第一個分區(qū)4MB怎么修改移動硬盤的文件系統(tǒng),文件系統(tǒng)為FAT,剩下的空間作為第二個分區(qū),文件系統(tǒng)為EXT4,使用fdisk命令進行分區(qū),fdisk的使用方法請自行搜索,這里為了簡便 , 我就把手動操作fdisk的命令全部打到一行了:
# echo 'nnpn1n2048n18432ntnbnnnpn2n18433nnwn' |fdisk VirtualDisk.img > /dev/null
上面一行命令我覺得不解釋一下可能會挨揍,具體是這樣的:
echo后面的一堆東西,是按照操作fdisk命令的輸入順序碼出來的,所有的n都代表回車,也就是說,上面的命令相當于這樣做:
先執(zhí)行 fdisk .img,然后依次輸入:n (新建分區(qū))、回車、p(主分區(qū))、回車、1(第一個分區(qū))、回車、2048(從2048處開始)、回車……(自己解析吧)
Step3:把鏡像文件映射(暫且叫映射吧,你看完后面內(nèi)容慢慢理解這步操作的意思)到系統(tǒng)中:
# kpartx -av VirtualDisk.img
執(zhí)行這條命令之后 , 在系統(tǒng)的/dev//目錄中會生成兩個文件:和

單文件多分區(qū) Linux創(chuàng)建虛擬磁盤文件

文章插圖
單文件多分區(qū) Linux創(chuàng)建虛擬磁盤文件

文章插圖
Step4:格式化這兩個分區(qū)(一個FAT、一個EXT4)
# mkfs.vfat /dev/mapper/loop0p1# mkfs.ext4 /dev/mapper/loop0p2
Step5:設(shè)置卷標 , 這一步可以省略 , 不設(shè)置的話,刷完鏡像的磁盤插到電腦上會顯示“可移動磁盤”或者其他系統(tǒng)默認的卷標
# dosfslabel /dev/mapper/loop0p1 "BOOT"# e2label /dev/mapper/loop0p2 "Linux"
FAT分區(qū)用命令,EXT分區(qū)用命令 。上面的BOOT和Linux字符串是卷標,隨意設(shè)置 。到此,虛擬磁盤文件已經(jīng)建立完成了,下面是如何掛載、使用的方法 。
Step6:創(chuàng)建掛載點并掛載分區(qū)
【單文件多分區(qū) Linux創(chuàng)建虛擬磁盤文件】# mkdir -p /mnt/BOOT# mkdir -p /mnt/Linux# mount -o loop -t vfat /dev/mapper/loop0p1 /mnt/BOOT# mount -o loop -t ext4 /dev/mapper/loop0p2 /mnt/Linux
掛載成功后,就可以在/mnt/BOOT和/mnt/Linux兩個文件夾中搞一些事情了
Step7:卸載分區(qū)(加-l是無條件卸載 , 防止卸不掉怎么修改移動硬盤的文件系統(tǒng),是小寫的L , 不是數(shù)字1)
# umount -l /mnt/BOOT# umount -l /mnt/Linux
Step8:取消虛擬磁盤文件在系統(tǒng)中的映射
# kpartx -d VirtualDisk.img
好了,搞定了,下面是我做的一個shell腳本 , 用來打包 Zero系統(tǒng)鏡像的,需要的拿去修改一下再用(不要嘲笑我的注釋 , 那是) 。
#! /bin/shIMG_NAME="OrangePiZero.img"# Create a new disk image: 32MBdd if=/dev/zero of=$IMG_NAME bs=1M count=32# Partition the image, part1: 4MB@FAT32, part2:@EXT4echo 'nnpn1n2048n18432ntnbnnnpn2n18433nnwn' |fdisk $IMG_NAME > /dev/null# Just have a lookfdisk -l $IMG_NAME |tail -n 3# Mapping the image to host systemsudo kpartx -av $IMG_NAME[ $? -ne 0 ] && echo "Please use right root password." && exit 1sleep 0.1s # Don't remove this!!!# Format the partion: part1@FAT32sudo mkfs.vfat /dev/mapper/loop0p1# Format the partion: part2@EXT4sudo mkfs.ext4 /dev/mapper/loop0p2sleep 0.1s # Don't remove this!!!# Change the label of partion: part1@BOOTsudo dosfslabel /dev/mapper/loop0p1 "BOOT"# Change the label of partion: part2@Linuxsudo e2label /dev/mapper/loop0p2 "Linux"# Create mountpointssudo mkdir -p /mnt/BOOTsudo mkdir -p /mnt/Linux# Mount partionssudo mount -o loop -t vfat /dev/mapper/loop0p1 /mnt/BOOTsudo mount -o loop -t ext4 /dev/mapper/loop0p2 /mnt/Linux# Copy files to image partionssudo cp -v zImage sun8i-h2-plus-orangepi-zero.dtb /mnt/BOOTsudo cp -v -r rootfs/* /mnt/Linux/sync# Unmount partionssudo umount -l /mnt/BOOTsudo umount -l /mnt/Linux# Delete mountpointssudo rm -rf /mnt/BOOTsudo rm -rf /mnt/Linux# Install u-boot to imagesudo dd if=u-boot-sunxi-with-spl.bin of=/dev/loop0 bs=1024 seek=8# Unmap the image from host systemsudo kpartx -d $IMG_NAME[ $? -ne 0 ] && echo "Please use right root password." && exit 1
本文到此結(jié)束,希望對大家有所幫助 。