Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 在RAM中创建块设备大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我的日常任务之一是使用我们的软件创建USB pendrive的可启动映像.图像必须由两个分区组成,第一个用FAT32格式化,第二个用EXT3格式化.首先,我们将 Linux内核和一个小的启动脚本放在我们要启动的设备上的bootloader上,并在启动时读取. 在第二个分区,我们放置了rootfs. 现在,我是这样做的: >将uSB pendrive插入我的Linux comp.弄清楚它的设备文件(
我的日常任务之一是使用我们的软件创建USB pendrive的可启动映像.图像必须由两个分区组成,第一个用FAT32格式化,第二个用EXT3格式化.首先,我们将 @L_772_1@内核和一个小的启动脚本放在我们要启动的设备上的bootloader上,并在启动时读取.

在第二个分区,我们放置了rootfs.

现在,我是这样做的:

>将uSB pendrive插入我的Linux comp.弄清楚它的设备文件(这里让我们假设/ dev / sdX)
>将其前600 MB清零:dd if = / dev / zero of = / dev / sdx bs = 1M count = 600
>创建两个分区,前10 MB和后500 MB:
sfdisk / dev / sdx –unit S<< EOF
,20000,C
,1000000,83
EOF

@H_321_16@mkfs.vfat / dev / sdx1@H_650_21@mkfs.ext3 / dev / sdx2

(假设扇区大小为512字节!)

>将内核和启动脚本复制到/ dev / sdx1
>将预编译的RootFS解压缩到/ dev / sdx2
>将现成的图像从USB pendrive复制回我们的硬盘:
dd if = / dev / sdx of = usb.img bs = 1M count = 520
>压缩并发送给测试该软件的人员.
>然后人们解压缩,用USB闪存
dd if = usb.img = / dev / sdx
插入他们的设备并进行测试.

现在,所有这些都有效.显而易见的改进是创建一个可以自动执行此操作的脚本.这也可以完成,但仍会保留一个手动步骤:插入USB pendrive.

我想的不是实际的USB磁盘,而是我们可以在RAM中使用块设备.这不仅会消除插入USB磁盘的手动步骤,而且会更快.

所以我需要的是RAM中的普通块设备.可以像物理USB pendrive一样拆分成分区的一个.

我只是研究了这个主题,似乎是唯一的选择

> tmpfs和ramfs,显然不适合我
> ramdisk和’brd’内核模块,加载后会创建许多“分区”:
的/ dev / RAM [0-15]

并且它们中的每一个都可以单独进行格式化和使用,但就像我说的那样 – 我想在RAM中使用一个普通的块设备,然后我将自己分成10MB和500MB的两个分区,然后从那里我可以得到一个图像到我硬盘上的文件.

我有什么选择?

解决方法

只需使用brd并创建一个brd设备(ram0).使用该设备代替USB驱动器.您可以使用sfdisk对其进行分区,使用分区然后使用dd将其内容转储到文件.

每个brd设备不需要使用一个文件系统.

或者(然很少hacky)你可以使用tmpfs,创建图像文件并将其用作循环设备.这可能是实现您想要的最简单方法.作为奖励,您已准备好该图像并可立即上传.不需要dd.

# Create mountpoint for tmpfs
mkdir /tmp/tmpfs
# Mount tmpfs there
mount -t tmpfs none /tmp/tmpfs
# Create empty file of 600MB 
# (it creates 599MB hole,so it does not 
#  consume more memory than needed)
dd if=/dev/zero of=/tmp/tmpfs/img.bin bs=1M seek=599 count=1
# Partition the image file
cfdisk /tmp/tmpfs/img.bin 
# Create loop block device of it (-P makes kernel look for partitions)
losetup -P /dev/loop0 /tmp/tmpfs/img.bin 
# Create filesystems
mkfs.vfat /dev/loop0p1 
mkfs.ext4 /dev/loop0p2
# Now it's your turn:
#   mount loop0p1 and loop0p2 and copy whatever you want and unmount it
# detach the loop device
losetup -d /dev/loop0
# May i present you with your image ... 
ls -al /tmp/tmpfs/img.bin

修改以满足您的需求.

大佬总结

以上是大佬教程为你收集整理的linux – 在RAM中创建块设备全部内容,希望文章能够帮你解决linux – 在RAM中创建块设备所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。