股票软件破解版-xp自动关机命令
2023年3月31日发(作者:microsoft office 2003下载)
树莓派linuxiso镜像下载,树莓派(RaspberryPi)修改系统镜像
(img)
树莓派修改系统镜像
讨论如何使⽤通过loop设备映射⽂件,挂载树莓派img中的分区,然后像普通的⽂件系统那样修改镜像分区中的⽂件。
有2个关键点
如何确认分区的起始位置,以及分区的范围。
不同版本的losetup⽀持的参数不⼀样,如果⽀持-P参数特性,则可以直接加载分区,⽆需再⼿动计算偏移量,可以像挂载普通硬盘⼀样直
接⽣成分区块设备
准备⼯作
需要⼀个⽀持linux设备,已经root了的termux,或者,⼀个普通的linux发⾏版均可。
需要⽤到的关键命令losetup,fdisk,tun2fs,mount,请检查是否都有。
⼤部分操作均需要root权限。
去源内下载⼀份镜像⽂件。
第⼀步:下载镜像
⾸先,下载⼀个可以⽤于写⼊树莓派的img镜像,国内可以在清华的镜像站中下载。
我下载的是,解压后得到,img⽂件可以直接烧录到内存卡,它
实际上是个包含了mbr分区表的磁盘映像。
第⼆步:使⽤losetup命令把img⽂件映射成块设备
⾸先我们先确认losetup⽀持的选项,有没有-P选项:
#这是我⼿机版本的losetup
$losetup--help
usage:losetup[-cdrs][-oOFFSET][-SSIZE]{-dDEVICE...|-jFILE|-af|{DEVICEFILE}}
Associatealoopbackdevicewithafile,orshowcurrentfile(ifany)
associatedwithaloopdevice.
Insteadofadevice:
-aIteratethroughallloopbackdevices
-fFindfirstunusedloopdevice(maycreateone)
-jIteratethroughallloopbackdevicesassociatedwithFILE
existing:
-cCheckcapacity(filesizechanged)
-dDetachloopbackdevice
new:
-sShowdevicename(alias--show)
-oStartassocationatOFFSETintoFILE
-rReadonly
-SLimitSIZEofloopbackassociation(alias--sizelimit)
看帮助信息,它不⽀持-P参数,直接加载⼀个多分区的img⽂件,它不会⽣成/dev/loop0p1这样的分区块设备。
如果losetup⽀持-P参数,那么,可以这样让他/dev⽣成分区的块设备loop0p1
#losetup-f-P./
再查看/dev下loop有没有⽣成对应分区的块设备,如果额外⽣成/dev/loop0p2这样的⽂件,则直接挂载这个设备。如果没有,继续以下步
骤,⼿动计算分区的起始位置和⼤⼩。
注意,linux发⾏版的losetup如果没有-S参数,请看看是否是--sizelimit参数,没有-o的话,则看看--offset,先通过losetup--help查看
第三步:确认分区数量和分区的位置
上⾯的losetup有两个很重要的参数
-SLimitSIZEofloopbackassociation
指定映射的⽂件部分内容(可以⽤来设定分区的⼤⼩)
-oStartassocationatOFFSETintoFILE
跳过多少个字节(⽤这个参数可以指定分区的起始位置)
不同版本的可能losetup相关的参数有细微的不同,要以实际为准。
那么需要确定分区的起始和结束位置。先尝试把整个img映射,注意,这需要root权限
加载当前⽂件夹的
#losetup-f./
映射后通过losetup命令(不带参数)得知,⽂件映射到了/dev/loop0这个设备
因为img包含了mbr分区表信息,我可以使⽤fdisk来读取分区表,获取分区信息。
#fdisk-l/dev/loop0
Disk/dev/loop0:3.5GiB,3787456512字节,7397376个扇区
单元:扇区/1*512=512字节
扇区⼤⼩(逻辑/物理):512字节/512字节
I/O⼤⼩(最⼩/最佳):512字节/512字节
磁盘标签类型:dos
磁盘标识符:0xea7d04d6
设备启动起点末尾扇区⼤⼩Id类型
/dev/loop0p524288256McW95FAT32(LBA)
/dev/loop0p2532488963.3G83Linux
通过分区表,我获得了⼀些信息。
这个是个3.5G的映像。
这个img有2个分区,⼀个是fat32分区(/dev/loop0p1),⼀个是linux的ext分区。(/dev/loop0p2)
分区的具体物理位置(起点、末尾),分区⼤⼩(扇区)
这个磁盘镜像每个扇区是512字节
他虽然写了/dev/loop0p2这样的设备,但是实际上,可能/dev下根本没有loop0p1loop0p2这两个块设备⽂件。
此时需要换⼀种⽅式,根据分区在⽂件内的位置,直接映射分区到loop设备,然后再挂载。
第3.5步:计算分区位置及⼤⼩
因为img⽂件包含⼀个mbr分区表,可以通过查看分区表确认分区数量和位置,通过以上fdisk读取的分区表信息可以得知,该img有2个分
区。
fat32类型那个分区应该存放内核,之类的分区,也就是我们烧录后看到内存卡只有256m的原因。
linux类型分区是树莓派的根分区,也就是进系统后,挂载在/的根分区
此时我需要计算根分区的起始位置,如果我需要改动,则计算fat32分区的位置,以下以计算根分区为例。
逻辑扇区⼤⼩为512字节,分区⼤⼩为扇区数量的512倍字节,需要乘以扇区⼤⼩(下⾯换算分区⼤⼩同理),根分区的起始位置则换算为
512*532480=272629760
它偏离⽂件起始的272629760字节,即⽤-o参数指定偏移的值。
分区的⼤⼩为
512*6864896=3514826752
使⽤-S参数限制映像⽂件的内容范围,记录下来以上信息后,卸载loop设备(此处为/dev/loop0),然后再重新进⾏映射。
卸载设备
#losetup-d/dev/loop0
再次映射
#losetup-f-o272629760-S3514826752./
此时,我们再次losetup看看映射的loop设备
#losetup
NAMESIZELIMITOFFSETAUTOCLEARROBACK-FILEDIOLOG-SEC
/dev/loop7262976000/home/xxx/raspbian/05120512
可以看到sizelimit字段和offset字段都有了具体的值,和我们设置的⼀致。/dev/loop0映射到了映像⽂件的根分区范围内
这是⼀个ext分区,我们可以通过tun2fs来读取⽂件系统的超级块
#tun2fs-l/dev/loop0
可以看到以下内容
tune2fs1.44.5(15-Dec-2018)
Filesystemvolumename:rootfs
Lastmountedon:/mnt/raspbian
FilesystemUUID:80571af6-21c9-48a0-9df5-cffb60cf79af
Filesystemmagicnumber:0xEF53
Filesystemrevision#:1(dynamic)
Filesystemfeatures:has_journalext_attrresize_inodedir_indexfiletypeextentflex_bgsparse_superlarge_filedir_nlink
extra_isize
Filesystemflags:unsigned_directory_hash
Defaultmountoptions:user_xattracl
Filesystemstate:clean
Errorsbehavior:Continue
FilesystemOStype:Linux
Inodecount:214704
Blockcount:858112
Reservedblockcount:42905
Freeblocks:133541
Freeinodes:108390
Firstblock:0
Blocksize:4096
Fragmentsize:4096
ReservedGDTblocks:209
Blockspergroup:32768
Fragmentspergroup:32768
Inodespergroup:7952
Inodeblockspergroup:497
Flexblockgroupsize:16
Filesystemcreated:FriFeb1400:15:482020
Lastmounttime:SatAug1504:54:282020
Lastwritetime:SatAug1505:22:082020
Mountcount:3
Maximummountcount:-1
Lastchecked:FriFeb1400:15:482020
Checkinterval:0()
Lifetimewrites:3052MB
Reservedblocksuid:0(userroot)
Reservedblocksgid:0(grouproot)
Firstinode:11
Inodesize:256
Requiredextraisize:32
Desiredextraisize:32
Journalinode:8
Defaultdirectoryhash:half_md4
DirectoryHashSeed:6006b686-6f27-4ca7-b7ea-d1d803c3da46
Journalbackup:inodeblocks
说明正确读出了该分区下⽂件系统的超级快。可以挂载。
第4步:挂载⽂件系统
在当前⽂件夹下新建⼀个root⽂件夹作为分区的挂载点。
#mkdirroot
挂载
#mount-text4-orw/dev/loop0root
挂载成功后,通过当前⽬录下root挂载点访问img中根分区的内容。需要修改什么内容就尽情修改吧!
修改完成后使⽤sync命令同步写⼊磁盘。
#sync
#sync
#sync
退出root⽂件夹后,卸载当前⽬录下root挂载点
#umountroot
取消映射关系,分离
#losetup-d/dev/loop0
插⼊tf卡后,⽤dd指令把img⽂件写⼊,假设内存卡设备为/dev/sdc
ddif=./=/dev/sdc
镜像⽐较⼤,⽽且tf卡性能较差的情况下,写⼊的速度⽐较慢,需要耐⼼等待。
写⼊成功后,sync同步,即可取出tf卡。树莓派系统刷写完毕。
更多推荐
iso镜像文件下载
发布评论