1. 程式人生 > >Ramdisk簡介以及嵌入式Linux上實現

Ramdisk簡介以及嵌入式Linux上實現

Sam多年前在剛接觸Linux時第一個專案是個DVR專案,此專案當時誰作誰辭職。在Sam加入之前,幾乎已經換了3撥人了。Sam作為一個外行加入其中,並最終幾乎重寫了所有模組,雖然現在想來程式架構和程式碼質量相當不好。但總算把東西給作出來了。呵呵,閒話不說,回到主題:在那個專案中,我們一些頻繁修改的檔案,放置於Ramdisk中,一方面加快訪問速度,另一方面也防止檔案寫壞。

Ramdisk簡單的來說,就是用記憶體模擬為硬碟,並在其上儲存臨時檔案(因為重新啟動後,檔案會消失)

Ramdisk技術在Windows,Linux下均可實現。Windows下可選用類似RAMDISK4G這樣的軟體實現。Linux下,則需要Kernel配置。我們主要關注Linux下實現。

0. 準備工作:

在Linux下建立Ramdisk,需要mkfs.ext2。但Sam遇到的嵌入式平臺並不支援。最簡單的方法當然是重新編譯busybox.

#cd busybox

#make menuconfig

Linux System Utilities  --->  [*] mkfs_ext2

#make

編譯出busybox.

執行之:

#./busybox mkfs.ext2

發現可用。

1.Kernel配置支援Ramdisk:

#make menuconfig

 Device Drivers  --->  [*] Block devices  ---><M>   RAM block device support   

選擇將其編譯為modules.

 (4096) Default RAM disk size (kbytes) 

預設值為4096。所以Ramdisk預設為4M.

想要建立150M Ramdisk. 設定為:153600(1024*150) kbytes

2.建立Ramdisk:

當Kernel有Ramdisk support支援時,就會有/dev/ramX這樣的裝置。裝置未被格式化時,不佔記憶體,也不能被使用。

#./busybox mkfs.ext2 /dev/ram0   //此時才真正可用,並佔用預設大小記憶體。執行此命令時,系統會顯示這個塊裝置具體有多大。

#mount /dev/ram0 /tmp

    //將裝置mount到mount 點。此時可以使用df 命令檢視。

3. 建立指定大小的Ramdisk:

3.    


其實記憶體檔案系統中最方便的是:tmpfs.
建立方便,也可以隨意改變大小。
用法:
先建立掛載點。
#mkdir /data/game
#mount Game_Tmpfs /data/game -t tmpfs -o -o size=10m 
建立了一個名為:Game_Tmpfs,大小為10M, 掛載點為/data/game的記憶體檔案系統。
給定名字Game_Tmpfs的優點是,在mount 或df中可以很容易找到自己的記憶體檔案系統。



Wget用法:

busybox的wget很不好用。可以下載並交叉編譯。

#CC=arm-hisiv200-linux-gnueabi-gcc ./configure --host=arm-linux --without-ssl

#make

wget username:[email protected]/dir/filename.ext

wget -rm  --ftp-user=public --ftp-password=3dijoy ftp://ftp.3dijoy.com/To_BCM/

相關推薦

Ramdisk簡介以及嵌入式Linux實現

Sam多年前在剛接觸Linux時第一個專案是個DVR專案,此專案當時誰作誰辭職。在Sam加入之前,幾乎已經換了3撥人了。Sam作為一個外行加入其中,並最終幾乎重寫了所有模組,雖然現在想來程式架構和程式碼質量相當不好。但總算把東西給作出來了。呵呵,閒話不說,回到主題:在

嵌入式Linux通過boa服務器實現cgi/html的web上網【轉】

但是 資料 mail 並發 work 資源 原因 基礎 err 轉自:http://blog.csdn.net/tianmohust/article/details/6595996 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 嵌入式Linux上通

TCP/IP原理、基礎以及Linux實現(轉)

導言:本篇作為理論基礎,將向我們講述TCP/IP的基本原理以及重要的協議細節,並在此基礎上介紹了TCP/IP在LINUX上的實現。 OSI參考模型及TCP/IP參考模型OSI模型(open system interconnection reference model)是

如何在Linux實現:Eureka服務的開機自啟動?

參數 src class blog nohup echo 創建文件 too hup 【問題描述】   由於最近在使用Spring Eureka的註冊中心服務,而辦公室每天晚上要斷電,每天早上過來後需要手工啟動Eureka服務非常麻煩。   需要實現:開機自動該服務的功能。

嵌入式Linux移植unzip工具

16px 文件 bsp ont div 嵌入 for .gz .tar.gz   由於busybox編譯出來的unzip不支持有密碼的壓縮包解壓,因此基於unzip60源碼包,交叉編譯一個嵌入式Linux上的unzip工具。 1.下載地址是: http://sourcefo

Linux實現ssh免密碼登陸遠程服務器

Linux上實現ssh免密碼登陸遠程服務平常使用ssh登陸遠程服務器時,都需要使用輸入密碼,希望可以實現通過密鑰登陸而免除輸入密碼,從而可以為以後實現批量自動部署主機做好準備。 環境如下: IP地址 操作系統 服務器端 10.0.0.10 CentOS 6.5 x86 客戶端 10.0.0

Flutter入門學習:Flutter簡介以及在macOS搭建Flutter開發環境

前言 眾所周知,一個移動客戶端一般都會有iOS和Android兩個版本,作為一個移動端的開發人員你肯定有過這樣的想法:能不能有個程式語言直接寫一套程式碼可以直接在iOS和Android系統上執行呢?現在這個問題已經得到解決,Google推出的Flutter,可以快速在iOS和Android上構建高質量的原生

CentOS 下安裝openOffice,並在Linux實現office轉PDF

安裝openOffice 前提是系統已經安裝好java環境,網上很多需要解除安裝系統自帶java環境的,我覺得沒必要,直接使用也ok。 進入下載的openOffice所在目錄,執行(tar -zxvf Apache_OpenOffice_4.1.5_Linux

基於mini2440嵌入式linux整合一套Domoticz智慧家居系統(七)交叉編譯paho.mqtt.embedded-c庫和嵌入式linux樣例程式

本篇將把paho.mqtt.embedded-c官方的原始碼交叉編譯成資料包封裝庫和應用程式兩部分,並把樣例應用程式在mini2440上執行。 一、首先編譯MQTT協議包封裝庫: 解壓paho.mqtt.embedded-c-master.zip之後,進入目

基於mini2440嵌入式linux整合一套Domoticz智慧家居系統(四)交叉編譯OpenSSL、c-ares、e2fsprogs和mosquitto

本篇主旨是編譯安裝mosquitto,其他的庫是它的依賴庫。後面我們交叉編譯的程式都將放置在主機的”/usr/local/arm/”目錄中,以區別主機本地的應用程式。 我的mimi2440的根檔案系統是PC端VMWare上linux中的nfs,這樣比較容易除錯

如何在嵌入式Linux開發一個語音通訊解決方案

開發一個語音通訊解決方案是一個軟體專案。既然是軟體專案,就要有相應的計劃:有多少功能,安排多少軟體工程師去做,這些工程師在這一領域的經驗如何,是否需要培訓,要多長時間做完,中間有幾個主要的milestone等。我們曾經四個人花了近一年時間開發了一個語音解決方案,成功通過驗收,各項關鍵指標(語音質量、單向時延)

嵌入式linux測試遠端伺服器的某個埠是否可達

最近在做ftp上傳相機中的檔案時,遇到超時問題。相機中,原本有ftpput的應用,於是就在程式中直接使用ftpput來上傳相機中的視訊和圖片。 ftpput使用方法為:     BusyBox v1.20.2 (2015-10-22 14:48:06 HKT) multi-

利用forever在Linux實現Node.js專案自啟動

在一臺計算機上手動跑Node專案簡單,node xx.js就搞定了,想讓Node專案後臺執行,雖然不能直接用node命令搞定,但是在安裝了forever這個包以後,還是很輕鬆的。不過要是在遠端伺服器上構建Node專案,如果沒法自啟動,一旦伺服器重啟,那麼專案必須通過管理員遠

【OpenCV移植系列】02. OpenCV 1.0 在嵌入式Linux 的移植

1. OpenCV簡介 OpenCV的全稱是:Open Source Computer Vision Library。OpenCV是一個基於(開源)發行的跨平臺計算機視覺庫,可以執行在Linux、Windows和Mac OS作業系統上。它輕量級而且高效——由一

在ARM-linux實現4G模組PPP撥號上網

轉自 http://blog.sina.com.cn/s/blog_7880d3350102wb92.html 在ARM平臺上實現4G模組的PPP撥號上網,參考網上的資料和自己的理解,從一無所知到開發完成花了一週多。最後看到ARM板ping通www.baidu.com時甚

Linux實現Mysql的主從複製(為Mycat讀寫分離作準備)

今天做不成的事,明天也不會做好。 各位同學大家好,今天給大家分享一下資料庫的主從複製和讀寫分離。為什麼我們要做這些呢:我們知道,隨著專案使用者併發量的增加,應用層通過各種第三方技術以及微服務架構達到了需求,但是瓶頸會卡在的資料庫上;因此,我們

如何在Linux實現檔案系統的自動檢查和修復?

平常Linux管理方面最重要的任務之一就是,檢查檔案系統的完整性。Linux檔案系統有可能在各種各樣的情況下受到損壞,比如系統崩潰、突然斷電、磁碟斷開,或者檔案節點(i-node)不小心被覆蓋等等。因此,定期檢查檔案系統的完整性是個好主意,以便儘量減小檔案系統受到損壞的風

撥開迷霧|嵌入式Linux的應用程式開發只有高手才能完成?

好訊息:新年大促!《微控制器與嵌入式系統應用》2017全年電子刊合集僅售29.9!歡迎大家進入嵌

Linux實現將檔案隱藏到影象中

Steganography(隱寫術)是一個寬泛的話題。這個教程只涉及如何將檔案掩藏到影象檔案中,這也是St

Linux好玩兒的命令(RHEL/CentOS實現

linux、好玩的命令今天是端午節,祝大家端午節快樂! 在linux系統上,有很多好玩兒的命令,但大多數都是在Ubuntu/debian系列發行版上可以安裝,在紅帽系統上能安裝的很少;今天,我給大家介紹幾個在RHEL/CentOS系列發行版上可以安裝的好玩兒的linux命令 1.火車(sl命令)sl命令原意