CF 메모리에 리눅스 해서 사용하는데 ....

rudi437의 이미지

지난번에 CF메모리를 이용한 PC를 구동하려는 것에 대해서 질문을 던져보았었습니다.

지금은 조금더 깊숙히 들어가서 사용하려고 하는데 이 이상 진도가 되지 않아서 질문을 드려봅니다.

우선 제가 사용하려는 사양은 다음과 같습니다.

셀러론 400/RAM512M(300M정도는 RAMDISK로 사용)/LAN 10/100/간단한(?) 그래픽카드/시리얼포트4개/ USB1.1 4개/ CF 메모리슬롯(IDE 세컨드리 마스터 설정)/손바닥만한 크기의 산업용보드

목적:응용프로그램을 직접제작 4개의 시리얼로 받은 데이터를 클라이언트의 지시에 의해 제어한다.

음..~~

클라이언트를 몇개 동시에 작동하는 것을 기본으로 하지요..

워낙 작고 처리하려는 것이 많다보니.. 산업용컴을 사용하는데, HDD를 사용하지 않았으면 하는 것이 오너의 생각이라서...

CF메모리에 레드핫9 를 설치하였습니다. 모듈은 모두 네트워크부분만 필요해서 network/SSH/xintd/telnet/vsftpd 만 등록하였습니다. 이렇게 하면 스케줄 또는 자주 쓰는 부분을 모두 없어지는 것이겠지요... CF메모리의 부담을 줄임.

하지만 리부팅할때 만다 하드(CF메모리)를 읽어보면 몇몇 가지의 디렉토리에서 날짜가 변경되었다는 것을 알수 있습니다. 대표적으로 /etc, /tmp, /dev 그리고 /root/bashrc(?, bash_profile 이던가.. ) (예전에 누군가가 /proc도 문제가 될꺼라고 했는데...)

위와 같은 곳(디렉토리)가 리부팅할때마다 overwrite를 하는 것 같은데 안되게 하는 방법이 없을까요. etc 및 dev 같은 경우는 리부팅할때만 그렇다고 할수 있지만 tmp의 경우 계속적으로 라이트하는 경우 문제가 발생될것 같은데...

이부분을 고정시킬수 있는 방법이 없을까요. 어떻게 처리해야 될까요..

그리고 다른 문제점이 있으면 얘기 부탁 드립니다.

만일 위 부분을 RAMDISK로 만들 경우 2개 이상의 RAMDISK는 어떻게 만들어야 할까요..!

PS : 임베이드 리눅스를 사용하면 되지 않겠는냐 하시는분의 설명도 있을 수 있는데, 제가 아직 그 분야의 실력이 없어서 어렵습니다. 그러니 이 얘기는 하지 말아 주세요..!! ㅠㅠ

Stand Alone Complex의 이미지

오버라이트 되는 부분을 최대한 막고 싶으시면 저널링 플래쉬 파일 시스템(JFFS)이라는 파일 시스템이 있는데 그걸 사용하시면 되실것 같네요.

자세한 사항은 여기를 참고해주세요.

http://developer.axis.com/software/jffs/doc/jffs.shtml

RET ;My life :P

kuaaan의 이미지

저도 비슷한 작업을 한 적이 있습니다.
그때는 CF에서 리눅스를 부팅하고 어플리케이션을 돌리도록 구현했었는데요...

우선... 루트파일시스템은 ramdisk로 돌립니다.
거기에... 변경이 이루어져야 하는 파일(설정파일들이나 어플리케이션 바이너리 등등...)은 플래시 영역에 두고 램디스크에서는 심볼릭 링크만 걸어둡니다.
램디스크로 부팅이 되면 /에 마운트된 램디스크가 다시 플래시 영역을 로컬의 적당한 디렉토리에 마운트합니다.
램디스크 이미지인 상태에서는 링크가 깨져있지만, 루트로 마운트된 ramdisk가 다시 플래시 영역을 마운트하면 링크가 연결되는 식이지요.

이 과정에서 경우에 따라 꼼수가 필요합니다.
예를 들어 /etc/passwd 파일이나 shadow파일같은 것은 심볼릭링크를 걸어놓고 패스워드를 바꿔보면... 심볼릭링크가 없어지더군요. (암호를 변경할때 passwd파일에 직접 쓰지 않고 기존 passwd파일을 mv한뒤 새로 생성하더라구여.) passwd라는 쉘스크립트를 만들어서 그놈이 암호를 대신 변경해주고, 변경 후에 변경된 패스워드 파일을 플래시영역의 원본 passwd파일에 덮어써주는 식으로 했었지요.

제가 생각할 때는 가장 write를 줄일수 있는 방법입니다.

----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------

ydongyol의 이미지

/proc 는 실제 파일이 아니므로 패스

/etc나 /dev/ 내용을 overwrite몇번 한다하더라도 일반적인 플레쉬 수명이 100만번 라이트일때 하루 한두번 쓰기를 해도 몇10년은 쓸수 있지 않나요? cf메모리에 임베디드XP 올려본적이 있는데 그냥 fat이나 ntfs쓰더라구요.. 쓰기 제한 신경안쓰고..

/tmp가 문제인데 이건 ramdisk로 옮기면 될꺼 같습니다.

물론 임베디드 리눅스를 앗사리 올릴수도 있지만은 삽질을 피하기 위해 일반 배포판을 편하게 깐다는 가정입니다.

--
Linux강국 KOREA
http://ydongyol.tistory.com/

지리즈의 이미지

개인적으로는 비슷한 작업을 한적이 있는데,
그때는 레드헷 6.2버전을 선호했습니다.
일단 모든 라이브러리 크기가 작습니다.
현재나오는 glib는 적게는 몇십M에서 그 이상도 육박하지만,
6.2때는 몇M에 불가하게 만들 수 있습니다.

만약 커널을 2.6대를 사용하고 싶다면,
저라면 trustix를 기반으로 하고 싶네요.

저는 비슷한 목적을 가진 장비를 Geode 200/32MRam에
16M Flash에 구축했는데요...

참고할 만한 곳이,
http://linuxrouter.org/
http://wiki.kldp.org/wiki.php/LiveCD-HOWTO
http://kelp.or.kr/
정도 입니다.

특히 linuxrouter는 8M~16MRam에
1.44 플로피 한두장에 구동되는 것을 목적으로 하고 있는 것도
있기 때문에 여기서 얻은 소스가지고는
매우 넉넉하게 운영할 수 있습니다.
게다가 대부분 플로피 시스템들은 압축된 이미지를 풀어서
램디스크상에서 운영되는 것을 목적으로 하고 있기 때문에,
참고될 만한 것이 많습니다.

그리고,
Linux-From-Scratch-HOWTO
는 자신만의 작은 리눅스시스템을 만드는 데,
도움이 됩니다.

There is no spoon. Neo from the Matrix 1999.

지리즈의 이미지

아 그리고, 타겟을 구축하고 디버깅하는데,
uml을 요긴하게 사용했습니다.

nfs - Diskless로 부팅하게 해서,
모든 파일이 호스트에 저장되게 하면,
호스트에서 컴파일을 하는 속속 바로,
타겟에서 테스트를 해볼 수 있습니다.

저는 uml을 두개 돌렸는데요,
하는 타켓을 개발하기 위해 구형 라이브러리들이 깔려 있는 시스템,
다른 하나는 타켓.
이렇게 사용했습니다. 물론 둘다 diskless nfs root로 운영했습니다.
(엄밀히 말하면, 커널만 있는 블록 이미지를 사용했지만...)

용량 줄이려고, ldd하고, ldconfig 그리고, strip으로
삽질한 기억이 새록새록나네요...

지금은 uml말고, qemu쪽이 더 편할 수도 있을 것 같군요...
방식은 동일합니다.

아 그리고 위의 모두는 serial을 파이프로 연결해서
사용할 수 있으므로, serial관련 임베디드 시스템 개발에는
그만입니다.

그런데, 여담인데,
네트워크를 사용하지 않으신다면,
그냥 DOS를 고려해 보는 것도 좋을 듯 합니다.
시스템이 매우 크기가 줍니다.

dos도 diskless가 가능합니다.

qemu를 이용하면, 개발하기 쉬울 것 같습니다.

There is no spoon. Neo from the Matrix 1999.

hys545의 이미지

지리즈 wrote:
개인적으로는 비슷한 작업을 한적이 있는데,
그때는 레드헷 6.2버전을 선호했습니다.
일단 모든 라이브러리 크기가 작습니다.
현재나오는 glib는 적게는 몇십M에서 그 이상도 육박하지만,
6.2때는 몇M에 불가하게 만들 수 있습니다.

만약 커널을 2.6대를 사용하고 싶다면,
저라면 trustix를 기반으로 하고 싶네요.

저는 비슷한 목적을 가진 장비를 Geode 200/32MRam에
16M Flash에 구축했는데요...

참고할 만한 곳이,
http://linuxrouter.org/
http://wiki.kldp.org/wiki.php/LiveCD-HOWTO
http://kelp.or.kr/
정도 입니다.

특히 linuxrouter는 8M~16MRam에
1.44 플로피 한두장에 구동되는 것을 목적으로 하고 있는 것도
있기 때문에 여기서 얻은 소스가지고는
매우 넉넉하게 운영할 수 있습니다.
게다가 대부분 플로피 시스템들은 압축된 이미지를 풀어서
램디스크상에서 운영되는 것을 목적으로 하고 있기 때문에,
참고될 만한 것이 많습니다.

그리고,
Linux-From-Scratch-HOWTO
는 자신만의 작은 리눅스시스템을 만드는 데,
도움이 됩니다.


glib 몇메가 도 안되는데여. 아무리 켜도 5m정도입니다.

즐린

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

ydongyol wrote:
/etc나 /dev/ 내용을 overwrite몇번 한다하더라도 일반적인 플레쉬 수명이 100만번 라이트일때 하루 한두번 쓰기를 해도 몇10년은 쓸수 있지 않나요? cf메모리에 임베디드XP 올려본적이 있는데 그냥 fat이나 ntfs쓰더라구요.. 쓰기 제한 신경안쓰고..

/dev는 udev 혹은 devfs를 사용하면 됩니다.
rudi437의 이미지

좋은 감사 합니다.
다시 힘내어 해보고 의문사항이 있으면 다시 질문을 던지도록 하겠습니다.

으흠.~~ 고맙습니다.

하고 있는 일에 대해서 ...
열심히 하자..~~