中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
ramdisk文件系統(tǒng)制作和移植
  1. RAMDISK簡介:
    Linux 中,rootfs 是必不可少的。PC 上主要實現(xiàn)有ramdisk和直接掛載 HDHarddisk,硬盤)上的根文件系統(tǒng);嵌入式中一般不從 HD 啟動,而是從 Flash 啟動,最簡單的方法是將 rootfs load 到 RAM 的 RAMDisk,稍復(fù)雜的就是直接從Flash 讀取的Cramfs,更復(fù)雜的是在Flash 上分區(qū),并構(gòu)建JFFS2等文件系統(tǒng)。
            Ramdisk是將一部分固定大小的內(nèi)存(RAM)空間模擬出硬盤分區(qū)。它并非一個實際的文件系統(tǒng),而是一種將實際的文件系統(tǒng)裝入內(nèi)存的機(jī)制,并且可以作為根文件系統(tǒng)。將一些經(jīng)常被訪問而又不會更改的文件(如只讀的根文件系統(tǒng))通過Ramdisk放在內(nèi)存中,可以明顯地提高系統(tǒng)的性能。
            在linux系統(tǒng)中,ramdisk有二種,一種就是可以格式化并加載,linux內(nèi)核2.0/2.2就已經(jīng)支持,其不足之處是大小固定;另一種是 2.4的內(nèi)核才支持,通過,ramfs來實現(xiàn),他不能被格式化,但用起來方便,其大小隨所需要的空間增加或減少,是目前linux常用的ramdisk技 術(shù).
            initrd 是 RAMDisk 的格式,kernel 2.4 之前都是 image-initrdKernel 2.5 引入了 cpio-initrd,大大簡化了Linux 的啟動過程,附合 Linux 的基本哲學(xué):Keep it simple, stupid(KISS). 不過cpio-initrd 作為新的格式,還沒有經(jīng)過廣泛測試,嵌入式 Linux 中主要采用的還是 image-initrd。
            在嵌入式環(huán)境中,我們將使用RAMDisk制作好的rootfs 壓縮后寫入Flash,啟動的時候由Bootloader 裝載到RAM中。在Linux的啟動階段,initrd提供了一套機(jī)制,可以將內(nèi)映像和根文件系統(tǒng)一起載入內(nèi)存并解壓縮,然后掛載到 下。這種方法操作簡單,但是在 RAM 中的文件系統(tǒng)不是壓縮的,因此需要占用許多嵌入式系統(tǒng)中稀有資源 RAM
            由于/目錄實在內(nèi)存中,所以我們對根文件系統(tǒng)進(jìn)行的操作并不會保存到Flash上,而是在RAM中。這樣也就意味著,對根文件系統(tǒng)所作的修改,掉電后將會丟失。  

  2. 在內(nèi)核中添加對ramdisk的支持:
    General setup  --->
         [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
         ()    Initramfs source file(s)  
         
    Device Drivers  --->
         Block devices  --->
         <*> RAM disk support
         (1)   Default number of RAM disks 
         (16384) Default RAM disk size (kbytes)
         (1024) Default RAM disk block size (bytes)  

  3. 制作RAMDISK根文件系統(tǒng):
    使用dd命令建立一個16MB的文件系統(tǒng)映像ramdisk. /dev/zero對其初始化.對于dd命令可以參考文檔1文檔2
    [lingyun@localhost rootfs]$ ls
    mnt  mtd-utils  rootfs.cramfs  rootfs.jffs2  rootfs.tar.bz2  rootfs_tree  tools  ubifs-arm920t.img  ubinize.cfg
    [lingyun@localhost rootfs]$ dd if=/dev/zero of=ramdisk bs=1M count=16
    16+0 records in
    16+0 records out
    16777216 bytes (17 MB) copied, 0.0123997 s, 1.4 GB/s
    [lingyun@localhost rootfs]$ ls
    mnt  mtd-utils  ramdisk  rootfs.cramfs  rootfs.jffs2  rootfs.tar.bz2  rootfs_tree  tools  ubifs-arm920t.img  ubinize.cfg
    因為ramdisk只是一個塊設(shè)備,只有將其格式化為特定的文件系統(tǒng)后才能使用,我們將其格式化ext2格式:
    [lingyun@localhost rootfs]$ mke2fs -F -v -m0 ramdisk 
    mke2fs 1.42.7 (21-Jan-2013)
    fs_types for mke2fs.conf resolution: 'ext2', 'small'
    Discarding device blocks: done                            
    Discard succeeded and will return 0s  - skipping inode table wipe
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    4096 inodes, 16384 blocks
    0 blocks (0.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=16777216
    2 block groups
    8192 blocks per group, 8192 fragments per group
    2048 inodes per group
    Superblock backups stored on blocks: 
            8193


    Allocating group tables: done                            
    Writing inode tables: done                            
    Writing superblocks and filesystem accounting information: done

    其中:
    -F : 迫使mke2fsramdisk.image上運行否則, mke2fs會抱怨ramdisk.image不是塊設(shè)備.
    -v : verbose模式運行
    -m0 : 指定不必在文件系統(tǒng)上為"超級用戶"保留任何block.(一般嵌入式Linux都是單用戶系統(tǒng)).



    [lingyun@localhost rootfs]$ file ramdisk 
    ramdisk: Linux rev 1.0 ext2 filesystem data

    掛載ramdisk,并拷貝制作好的根文件系統(tǒng)到mnt目錄下:

    [lingyun@localhost rootfs]$ ls mnt/
    [lingyun@localhost rootfs]$ sudo mount -o loop ramdisk mnt/
    [lingyun@localhost rootfs]$ mount | grep ramdisk
    /home/lingyun/fulinux/fl2440/trunk/src/rootfs/ramdisk on /home/lingyun/fulinux/fl2440/trunk/src/rootfs/mnt type ext2 (rw,loop=/dev/loop0)
    [lingyun@localhost rootfs]$ ls mnt/
    lost+found
    [lingyun@localhost rootfs]$ rm -rf mnt/*
    [lingyun@localhost rootfs]$ ls rootfs_tree/
    apps    bin   dev  home  init  linuxrc  media  opt   root  stat  tmp  var
    backup  data  etc  info  lib   logs     mnt    proc  sbin  sys   usr
    [lingyun@localhost rootfs]$ sudo cp -af rootfs_tree/* mnt/
    [lingyun@localhost rootfs]$ ls mnt/
    apps    bin   dev  home  init  linuxrc  media  opt   root  stat  tmp  var
    backup  data  etc  info  lib   logs     mnt    proc  sbin  sys   usr

    卸載并壓縮ramdisk根文件系統(tǒng)Image

    [lingyun@localhost rootfs]$ sudo umount ramdisk
    [lingyun@localhost rootfs]$ du -h ramdisk 
    16M     ramdisk
    [lingyun@localhost rootfs]$ gzip ramdisk
    [lingyun@localhost rootfs]$ du -h ramdisk.gz 
    4.7M    ramdisk.gz

    將其拷貝到tftp目錄下:

    [lingyun@localhost rootfs]$ cp ramdisk.gz /tftp/

  4. uboot設(shè)置和映像燒錄啟動

參考內(nèi)核對256Mnandflash的分區(qū):

Creating 11 MTD partitions on "NAND":
0x000000000000-0x000000100000 : "mtdblock0 u-boot 1MB"
0x000000100000-0x000000500000 : "mtdblock1 kernel 4MB"
0x000000500000-0x000000f00000 : "mtdblock2 ramdisk 10MB"
0x000000f00000-0x000001e00000 : "mtdblock3 cramfs 15MB"
0x000001e00000-0x000004600000 : "mtdblock4 jffs2 40MB"
0x000004600000-0x000006e00000 : "mtdblock5 yaffs2 40MB"
0x000006e00000-0x000009600000 : "mtdblock6 ubifs 40MB"
0x000009600000-0x000009700000 : "mtdblock7 info 1MB"
0x000009700000-0x00000bf00000 : "mtdblock8 apps 40MB"
0x00000bf00000-0x00000e700000 : "mtdblock9 data 40MB"
0x00000e700000-0x000010000000 : "mtdblock10 backup 25MB"

uboot中的環(huán)境參數(shù)

[ s3c2440@fulinux ]# pri
bbl=nand erase 0 100000;tftp 30008000 u-boot-$cpu.bin;nand write 30008000 0 $filesize
norbbl=erase bank 1;tftp 30008000 u-boot-$cpu.bin;cp.b 30008000 0 $filesize
bkr=tftp 30008000 linuxrom-fulinux.bin;nand erase 100000 400000;nand write 30008000 100000 400000
bootcmd_rootfs=nand read 30008000 100000 400000;bootm 30008000
tpb=tftp 30008000 uImage-$cpu.gz;tftp 30800000 ramdisk-$cpu.gz;bootm 30008000 
mtdids=nand0=nand0
mtdparts=mtdparts=nand0:1M@0x0(u-boot),5M@0x100000(kernel),10M@0x600000(ramdisk),10M@0x1000000(cramfs),20M@0x1a00000(yaffs2),20M@0x2e00000(ubifs),-(users)
bootdelay=1
baudrate=115200
ethaddr=08:00:3e:26:0a:6b
ethact=dm9000
bcramfs=tftp 30800000 rootfs.cramfs;nand erase f00000 600000;nand write 30800000 f00000 600000
bjffs2=tftp 30008000 rootfs.jffs2;nand erase 1e00000 1400000;nand write.jffs2 30008000 1e00000 1400000
bootargs_jffs2=noinitrd root=/dev/mtdblock4 rootfstype=jffs2 init=/linuxrc console=ttyS0,115200
bootargs_cramfs=noinitrd root=/dev/mtdblock3 rootfstype=cramfs init=/linuxrc console=ttyS0,115200
bootargs_ubifs=console=ttyS0,115200 mem=64M ubi.mtd=6 root=ubi0:rootfs rootwait rootfstype=ubifs rw
bubifs=tftp 30008000 ubifs-$cpu.img;nand erase 6e00000 900000;nand write 30008000 6e00000 900000
cpu=arm920t
brdfs=tftp 30008000 ramdisk.gz;nand erase 500000 a00000;nand write 30008000 500000 500000
filesize=4B065C
fileaddr=30008000
netmask=255.255.255.0
ipaddr=192.168.1.111
serverip=192.168.1.3
bootcmd_ramdisk=nand read 30008000 100000 400000;nand read 30800000 500000 500000;bootm 30008000
bootcmd=run bootcmd_ramdisk

bootargs_ramdisk=console=ttyS0,115200 mem=64M initrd=0x30800000,16M root=/dev/ram0 rw loglevel=7
bootargs=console=ttyS0,115200 mem=64M initrd=0x30800000,16Mroot=/dev/ram0 rw loglevel=7
stdin=serial
stdout=serial
stderr=serial
Environment size: 1782/131068 bytes
[ s3c2440@fulinux ]# 

主要是設(shè)置用紅色標(biāo)注的參數(shù),設(shè)置方法如下:

[ s3c2440@fulinux ]#set bkr 'tftp 30008000 linuxrom-fulinux.bin;nand erase 100000 400000;nand write 30008000 100000 400000'

[ s3c2440@fulinux ]#set brdfs 'tftp 30008000 ramdisk.gz;nand erase 500000 a00000;nand write 30008000 500000 500000'

[ s3c2440@fulinux ]#set bootcmd_ramdisk 'nand read 30008000 100000 400000;nand read 30800000 500000 500000;bootm 30008000'

[ s3c2440@fulinux ]#set bootcmd 'run bootcmd_ramdisk'

[ s3c2440@fulinux ]#set bootargs 'console=ttyS0,115200 mem=64M initrd=0x30800000,16M root=/dev/ram0 rw loglevel=7'

下載內(nèi)核映像:

[ s3c2440@fulinux ]#run bkr 

下載ramdisk鏡像

[ s3c2440@fulinux ]#run brdfs

啟動:

[ s3c2440@fulinux ]#boot

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
linux用busybox制作ramdisk的腳本分享
使用genext2fs制作ramdisk
解析linux根文件系統(tǒng)的掛載過程
Linux--根文件系統(tǒng)的掛載過程分析
Linux內(nèi)核Ramdisk(initrd)機(jī)制
ZYNQ啟動流程分析及各環(huán)節(jié)文件生成流程
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服