Linux下Ramdisk根文件系统制作过程解析

Linux根文件系统制作 本文介绍如何构Linux根文件系统,适用于arm32开发板。 阅读详情

  http://blog.youkuaiyun.com/hzdysymbol/archive/2009/01/17/3796814.aspx一、在一个已建好的文件系统上进行修改

    设已建立好的文件系统压缩文件为ramdisk.gz

    1、解压

    #cd ramdisk.gz所在目录

    #gunzip ramdisk.gz

    在解压后,得到文件系统镜象文件ramdisk, 覆盖了原来的压缩文件

    2、镜象文件挂载

    镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容

    #mkdir /mnt/loop /* /mnt/loop 是文件系统要挂载到的目录

    #mount –o loop ramdisk /mnt/loop

    在挂载目录/mnt/loop下对文件系统进行操作

    #cd /mnt/loop

    #do_whatever_you_want_to_do /*根据需要增加、删减或是修改文件系统的内容

    4、卸装文件系统

    跳到/mnt/loop目录外,否则无法卸装,提示busy

    #cd ramdisk所在目录

    #umount /mnt/loop

    5、压缩文件系统

    #gzip –v9 ramdisk /*生成ramdisk.gz压缩文件

    二、自己建立根文件系统

    1、建立loop设备的临时挂载点

    #mkdir /mnt/loop

    2、建立一个大小为15M的临时文件

    #dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360

    注意可根据自己的需要建立大小合适的文件系统,更改count大小即可。

    此处以dd命令建立一个了一个15360KB文件系统映象,存于/tmp/loop/tmp,并以.dev/zero对它进行初始化。用这种方式对文件系统进行初始化,稍后当我们使用gzip命令压缩整个映象时,将让文件系统中未使用的部分获得最大压缩比。

    3、将设备文件与临时文件联系起来

    #losetup /dev/loop0 /tmp/loop_tmp

    把设备文件/dev/loop0与临时镜象文件/tmp/loop_tmp联系起来,/dev/loop0是个块设备

    如果出现“ioctl:LOOP_SET_FD:设备或资源忙”,说明/dev/loop0设备还和一文件联系,可用losetup /dev/loop0查看地,并可用-d 删除。

    4、将/dev/loop0格式化为ext2文件系统

    #mke2fs –m 0 /dev/loop0

    -m 0指出不必在文件系统上为“超级用户”保留任何区块。

    Linux内核识别两种可以直接考贝的到ramdisk的文件系统,它们是minix和ext2,minix是linux早期版本所用的文件系统,从minix操作系统而来,ext2性能更好。

    5、把虚拟盘挂在节点/mnt/loop上

    #mount –t ext2 /dev/loop0 /mnt/loop

    6、用cp –af命令将所需要文件拷贝到虚拟盘上

    cp –help查看cp 用法。cp –arf … -r表示拷贝目录

    /bin, /dev, /etc, /lib, proc, /sbin, /usr都是不可或缺的目录,建议保留/tmp,/var,不过可以为空。而为多用户提供可扩展环境的所有目录(例如/home、/mnt、/opt、/root)都应该省略。

    用cp复制文件时,建议把已建立好的文件系统中的内容全部拷贝过来,这样比较简单,不需要再去编译安装busybox等。当然自己也可以那样去做。

    7、卸载文件系统,得到的/tmp/loop_tmp就是文件系统映象。

    #cd /mnt/loop以外的目录 (否则会提示无法卸载,设备busy)

    #umount /mnt/loop

    8、压缩文件系统映象

    #gzip –v9 /tmp/loop_tmp >/tftpboot/ramdisk.gz

    在/tftpboot下生成了ramdisk.gz,这样一个内存文件镜象生成了。

    或只是#gzip –v9 /tmp/loop_tmp,则就是在/tmp下生成loop_tmp.gz文件,一样的。

    记者百度(baidu.com)了一下在上述自己建立文件系统中,第3条用 losetup命令把块设备文件/dev/loop0与临时文件/tmp/loop_tmp联系起来了,我的理解是/tmp/loop_tmp必须是块设 备文件,所以用/dev/loop0与之相关联,然后对/dev/loop0的操作和对其虚拟盘的操作,就间接作用在文件系统映象 /tmp/loop_tmp上。

    三、自己建立根文件系统(与二中不同)

    1、建立loop设备的临时挂载点

    #mkdir /mnt/loop

    2、建立文件系统映象

    #dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360

    以上2条同二中是一样

    3、mke2fs –F –v –m 0 /tmp/loop_tmp

    此处-F选项将可迫使mkefs2在文件上运行。否则mke2fs会抱怨 /tmp/loop_tmp不是个块设备(在上面说了,我的理解是/tmp/loop_tmp文件映象必须是块设备文件,前面的做法是用块设备文件 /dev/loop0与之相关联)。-v 选项指出mke2fs应该以verbose模式执行,-m 0指出不必在文件系统上为“超级用户”保留任何区块,因为在嵌入式系统中通常是单用户系统,为“超级用户”保留区块没有意义。

    4、挂载映象文件

    #munt –o loop /tmp/loop_tmp /mnt/loop

    挂载后,在/mnt/loop下就可以对文件系统的内容进行操作。

    5、cp操作,同二中的第6条

    6、卸载映象文件

    #umount /mnt/loop

    7、压缩映象文件

    #gzip –v9 /tmp/loop_tmp

    第三中的做法与第二中的做法不同,在第二中,把块设备文件/dev/loop0与映象文件/tmp/loop_tmp相关联,然后对/dev/loop0及虚拟盘进行操作,就作用在/ltmp/loop_tmp上。

    而第三中,是直接对映象文件/tmp/loop_tmp进行操作,用mke2fs –F …将其当作块设备文件进行操作。


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/hzdysymbol/archive/2009/01/17/3796814.aspx

如何在Linux系统下制作RamDisk 翻译作品,详细介绍了RamDisk,以及在Linux系统下制作RamDisk的步骤。 立即下载

相关推荐

国嵌-制作ramdisk的根文件系统-rootfs

http://blog.youkuaiyun.com/jason6765599/article/details/12015699#t0 制作RAMDISK配套资料,根文件系统。

ramdisk制作过程记录

一. ramdisk.gz.uboot自作过程: 1. 创建一个loop目录,作为挂载点: mkdir loop 2. 获取一个10M的镜像,count会在kernel配置中使用: dd if=/dev/zero of=ramdisk bs=1k count=10240 3. 格式化为ext2: mke2fs -F -v -m 0 ramdisk 4. 切换root: su r

dean_gdp的专栏 5392

Gerrit 使用操作手册

Gerrit是一种免费、开源的代码审查工具,使用网页交互页面。这个软件的名称来自于荷兰设计师师赫里特·里特费尔德(GerritRietveld),作者为Google公司的ShawnPearce。它使用Git作为底层版本控制系统,相比于其他的代码管理工具,Gerrit明显的特色是代码审核。利用网页浏览器,同一个团队的软件程序员,可以相互审核(Review)彼此修改后的程序代码,然后决定是继续提交还是取消提交。...

九离的博客 1万+

嵌入式 linux 下ramdisk 根文件制作及错误的解决

1、建立loop设备的临时挂载点     #mkdir /mnt/loop     2、建立文件系统映象     #dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360     以上2条同二中是一样     3、mke2fs –F –v –m 0 /tmp/loop_tmp     此处-F选项将可迫使mkefs2在文件上运行。否则mke

skdkjxy的专栏 2407

三菱PLC通信库大比拼:手把手教你用C#实现最高效的McProtocol数据读写

本文深入比较了三菱PLC通信库的性能,重点介绍了如何使用C#高效实现McProtocol数据读写。通过实测数据对比HslCommunication、McProtocol-next和自定义方案的优劣,提供优化技巧和代码示例,帮助开发者在工业自动化场景中提升通信效率。

m0n1o2p的博客 255

【Audio driver】深入解析mixer_paths.xml中的音频通路配置

本文深入解析了Android音频驱动开发中的核心配置文件mixer_paths.xml。文章以高通平台为例,详细阐述了音频通路(FE、BE、DSP、Device)的概念与连接逻辑,并通过实战案例拆解了扬声器与麦克风通路的配置方法、关键控件作用及调试技巧,是理解与定制Android音频系统的实用指南。

ik6789012的博客 357

【一文搞懂】FD_SET的使用_fdset

阅读大概需要十分钟,绝对干货,看完还没搞懂你找我。随便查一下,可以看到对FD_SET的说明如下:一个long类型的数组,提供给select()机制使用的一种数据结构。主要功能是建立联系。其中每一个数组元素都能与任意一个打开的句柄(socket句柄、文件、命名管道、设备句柄等)建立联系。但是这种建立联系的工作是必须由程序员自己去完成的。

2401_87555477的博客 1782

RT-DETR改进策略【Conv和Transformer】| HiLo注意力机制 通过分离处理图像的高频和低频信息,高效处理图像特征

本文记录的是利用改进检测模型,针对目标检测中面临的多尺度特征融合效率与长距离依赖建模难题,HiLo注意力模块的引入旨在通过频率解耦策略优化高分辨率特征处理,将高频细节(如目标边缘)与低频语义(如场景结构)分离建模,提升目标检测精度。Fast Vision Transformers with HiLo AttentionHiLo注意力模块的提出源于对传统自注意力机制局限性的反思。传统多头自注意力(MSA)在处理高分辨率图像时存在以下问题:HiLo将注意力模块分为高频(Hi-Fi)和低频(Lo-Fi)两个分支,

Limiiiing的博客 818

根文件系统相关操作

一、如何对已有的根文件系统进行修改 假设已有一个名为ramdisk.gz的文件系统压缩文件,可以通过以下步骤实现对该文件系统的修改: 1. 将文件系统的压缩文件解压成映像文件; 进入ramdisk.gz所在目录: #cd … 解压ramdisk.gz: #gunzip ramdisk.gz 2. 挂载解压后的映像文件来实现修改; 创建挂载目录: #sudo mkdir /mnt/

xuewuzhijin2012的专栏 448

Android Framework WMS全面概述和知识要点

WindowManagerService 类是整个 WMS 的核心大脑,处于系统服务层,负责协调和管理所有与窗口相关的操作。它在 Android 系统架构中起到承上启下的关键作用,向上对接应用层的窗口请求,向下与 SurfaceFlinger 等底层组件交互,确保窗口能够正确地在屏幕上显示和管理。

大模型大数据攻城狮的专栏 1793

i茅台最新任务python脚本

从固定的 `header_context` 生成HTTP请求头,并加入用户的`userId`、`MT-Token`等动态信息,以模仿真实的请求。- 发送预约请求,提交商品和门店的参数,如 `sessionId`、`shopId`、`itemId` 等。- 定时任务:通过 `cron` 表达式 `0 0 9/21 * * *`,表示每月的9日和21日的0点执行。- `login`:使用验证码进行登录,并返回 `token` 和 `userId`。- 获取北京时间当天0点的时间戳,作为预约请求的时间参数。

三维点云技术探索 982

Linux下Ramdisk根文件系统制作过程解析(转载)

Linux下Ramdisk根文件系统制作过程解析本文讲述了Linux下Ramdisk根文件系统制作过程。    一、在一个已建好的文件系统上进行修改     设已建立好的文件系统压缩文件为ramdisk.gz     1、解压     #cd ramdisk.gz所在目录     #gunzip ramdisk.gz     在解压后,得到文件系统镜

3470

Pointnet++改进90:2025最新改进模块-EVA模块

本教程提出了一种改进PointNet++特征提取模块的方法,通过在PointNetSetAbstraction模块中加入NAMAttention注意力机制,显著提升了模型性能。具体改进包括:1)新建eva.py文件,实现了包含SDLSKA、CKS等关键组件的EVA模块;2)在pointnet2_utils.py中添加Conv和PointNetSetAbstractionAttention类,整合注意力机制;3)修改pointnet2_sem_seg.py模型结构。这种改进方法降低了实现难度,同时保持了33F

AIcurator的博客 361

linux 文件系统压缩比,Linux下Ramdisk根文件系统制作过程解析

Linux下Ramdisk根文件系统制作过程解析http://www.soidc.net/articles/1215484977397/20080407/1215945405315_1.html一、在一个已建好的文件系统上进行修改设已建立好的文件系统压缩文件为ramdisk.gz1、解压#cd ramdisk.gz所在目录#gunzip ramdisk.gz在解压后,得到文件系统镜象文件ramdi...

weixin_32708653的博客 308

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

linux根的文件系统ext,Linux下Ramdisk根文件系统制作过程解析

一、在一个已建好的文件系统上进行修改设已建立好的文件系统压缩文件为ramdisk.gz1、解压#cd ramdisk.gz所在目录#gunzip ramdisk.gz在解压后,得到文件系统镜象文件ramdisk, 覆盖了原来的压缩文件2、镜象文件挂载镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容#mkdir /mnt/loop /* /mnt/loop 是文件系统要挂载到的目录#mo...

weixin_35361584的博客 362

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android 根文件系统,使用mkbootfs制作ramdisk根文件系统

环境Qemu:QEMU emulator version 3.1.0Linux:Linux-4.14.13工具链:arm-none-linux-gnueabi-gcc (gcc version 4.8.3 20140320)Android:7.1.2busyBox:BusyBox v1.24.2概述Android系统使用的根文件系统是用mkbootfs和minigzip制作的,其中mkbootf...

weixin_42524945的博客 843

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Linux文件系统——ramdisk根文件系统制作

ram disk介绍   ram disk顾名思义,内存磁盘。我们平常接触的一些存储介质,如:nor flash、nand flash、emmc、ufs、以及机械硬盘固态硬盘等,都是用来存储数据的,同理内存也是可以当成磁盘来存储数据的,唯一不同的就是ram是掉电不保存的,而前面提到的那些存储介质掉电都是保存数据的。   我们都知道,在linux中,上面介绍的flash这些存储介质,都是需要有对应的...

深海 1万+
上一篇: 建立ARM+Linux应用程序调试环境
下一篇: 笔记
vcvbve
博客等级 码龄17年 5粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值