lsblk

列出 块设备 block device

设备文件 /dev/sda1

mkfs -t ext4 /dev/sda1

挂载 / 卸载

mount -t ext4 /dev/sda1 /mnt

umount /mnt

普通文件

dd -if=/dev/zero -of=some/img/name -bs=512 -count=1024 #size = bs*count

mkfs -t <type> some/img/name

挂载 / 卸载

mount -t <type> some/img/name /mnt

umount /mnt

type

光盘  -t iso9660  #loop-back 设备
fat  -t vfat  # fat8 fat16 fat32 ..
samba -t cifs # common interface #sudo apt install cifs-utils
ntfs  -t ntfs-3g # new technology  #sudo apt install ntfs-3g
extN   -t extN #N= 3, 4
exfat  -t exfat  #sudo apt install exfat-fuse

loop设备

查看占用 losetup -a
dd –> 制作iso9660文件系统

genisomiage -iso-level 4 -R \

-o abcd.iso src_dir
# -iso-level  iso版本号? 越大支持的功能越多 ; 比如 文件名保持大小写, 低版本会转成大写
# -R  扩展
# 注: 文件内文件名不要太长
# -o 输出文件名

文件转化为块设备:
losetup /dev/loop0 /var/loop.img

查看 块设备
lsblk |grep loop0
losetup -a

uEFI bootable iso 文件

mbr 启动 ? 待定 下文为 uEFI启动

img_name="xxx.img"
#loop0~loop7
loop_name="/dev/loop"  
mnt_name="mnt_here"
img_size=10

### 选择一个 未占用的 loop back 设备
for ((i=0;i<8;i++))
do
	if [ `losetup -a | grep "$loop_name$i" | wc -l` -eq 0 ]
	then
		loop_name="$loop_name$i"
		break
     else if [ $i -eq 7 ]
     then
     	echo "[err] no loop device is avilable "
     	exit 1
     fi
fi

###### 制作 uEFI需要的 FAT分区 {
#10MB
dd if=/dev/zero of=$img_name bs=1M count=$img_size

# 注册块设备
losetup $loop_name $img_name
#-n volume-name
mkfs -t fat -n grubboot $loop_name 

if ! [ -e "$mnt_name" ] 
then
    mkdir -p $mnt_name
fi

mount -t fat $loop_name $mnt_name

#file copy
cp -r espfile/* $mnt_name

#umount & detach
umount $mnt_name
losetup -d $loop_name

################### }
#ESP镜像文件:
#xxx.img
#上面 这个 img可以不用自己做,   linux发行版中/boot目录下自带

####################
## 注: `\`  后面不要有空格!!
genisoimage \ 
-iso-level 4 \ 
-R \ 
-o outname.iso\ 
-b $img_name \ 
-no-emul-boot \ 
-c boot.cat \ 
-V ISOname \ 
  iso_src_dir
  
 # -b  boot 开机img文件
 # -c  开机文件名称, boot信息
 # -V  光盘id
 # -R  某些扩展,额外的功能,字符等.
 
 ## MBR启动 需要在 `-o outname.iso\` 加入以下代码
 ## 注: 需要`isolinux/isolinux.bin` 文件, 
 ###  同时 需要 `isolinux/{isolinux.cfg,vesamenu.32c}` 文件. 参照Linux发行版iso文件
 ###  vesamenu.32c :  used for displaying a menu.
 -b isolinux/isolinux.bin \ 
 -no-emul-boot -boot-load-size 4 \ 
 -boot-info-table \ 
 -eltorito-alt-boot \ 
 #