2007년 7월 24일 화요일

Arm Linux Kernel 분석 - Context Switching

이 글은 Context Switching에 대한 기본적인 개념이 있는 사람을 위해 작성되었습니다.

http://lxr.post-tech.com

에 가시면 lxr프로그램으로 보기쉽게 편집된 Linux 소스 파일이 있습니다.
위의 메뉴들 중에 ucos2440을 선택, 그리고 아래에 나타나는 메뉴 중 ucos>kernel을 선택하면 핵심 코드 파일들이 나타납니다. 참고로 kernel 폴더와 함께 있던 port에는 디바이스에 의존적인 코드가 들어가게 됩니다.
따라서 다른 디바이스에 이 OS를 올리고 싶을 때 이 부분만 고치면 되겠다..고 생각하면 되겠죠. :)


Priority & Scheduling

Priority & Scheduling


우선 순위는 0~63 범위 안에서 존재하고 각 태스트가 태어날 때 우선순위가 정해집니다. 임베디드 디바이스의 특성상 제한된 종류의 일을 하기 때문에 태스크의 우선순위가 바뀌는 일도, 같은 우선순위의 태스크도 없다고 봐도 무방합니다. (실제 세계에서는 다르다고 하지만요..) 우선순위 숫자가 노은 태스크가 우선순위가 높은 태스크입니다.


OSRdyTbl[]은 원소가 1byte이고 크기가 8인 배열입니다. 위 그림에서 배열의 한 행이 한 원소입니다. 

2007년 7월 22일 일요일

rpm options

1. rpm 설치 관련 옵션
1) 설치시

-ivh : 패키지 설치. 진행 과정을 # 표시로 자세히 보여준다.
ex) rpm -ivh httpd-2.0.53-3.2.i386.rpm

-Uvh : 패키지 업그레이드 설치. 진행 과정을 # 표시로 자세히 보여준다.
ex) rpm -Uvh httpd-2.0.53-3.2.i386.rpm

2) 부가 옵션

--nodeps : 위의 명령으로 패키지 설치할때 의존성 에러가 발생하면서 설치가 되지 않는경우 사용한다.
의존성 에러를 무시하고 설치할때 즉 의존성관계에 있는 다른 패키지가 설치되어 있지 않아도 강제로 설치한다.(이럴경우 설치하더라도 프로그램이 정상적으로 실행되지 않을수 있다.)
ex) rpm -ivh httpd-2.0.53-3.2.i386.rpm --nodeps

--force : 이미 같은 버젼의 패키지가 설치 되어 있더라도 무시하고 강제로 설치 한다.
ex) rpm -ivh httpd-2.0.30-3.2.i386.rpm --force



2. rpm 삭제 관련 옵션
1) 삭제시

-evv : 삭제 동안의 진행을 자세히 보여준다.
ex) rpm -evv httpd-2.0.30-3.2.i386.rpm

2) 부가 옵션

--test  : 실제로 삭제 하지 않고 삭제가 정상적으로 되는지 테스트한다.

--nodeps : 의존성에 관여하지 않고 지운다. ( 의존성을 무시하여 삭제할경우 프로그램이 정상적으로 실행되지 않을수 있다.)



3. rpm 설치된 패키지 조회 관련 옵션

-qa : 설치 되어 있는 모든 패키지를 출력한다.
ex) rpm -qa

-qa | grep "설치된패키지 관련단어" :  ""를 제외하고 관련단어를 뒤에 붙여준다. 패키지를 기존에 설치했는지 확인하고 싶을때 이용한다.
ex) rpm -qa | grep httpd

-qf : 설치되어 있는 프로그램 명령어 또는 파일이 어느 패키지에 속하는지 확인한다.
ex) rpm -qf /bin/vi

-qi : 설치된 해당 패키지에 대한 정보를 보여준다.
ex)  rpm -qi httpd-2.0.30-3.2

SSH

Secure Shell

SSH(Secure Shell)은 네트워크 상의 다른 컴퓨터에 로그인 하거나 원격 시스템에서 명령을 실행하도록 해주는 프로토콜 또는 응용 프로그램이다. 취약한 보안성을 가진 기존의 rsh, rlogin, TELNET을 대체하기 위해 설계되었다. public-key 암호화 방식을 사용하여 데이터의 신뢰성과 보전성을 보장한다. 이것은 사용자가 원격접속할 컴퓨터를 신뢰할 수 있는지, 혹은 원격 컴퓨터가 사용자를 신뢰할 수 있는지 여부를 확인한다. 또한 모든 메세지를 암호화하여 통신하기 때문에 메세지가 노출된다 하더라도 암호를 해독하기 위한 key쌍이 없으면 해독이 불가능하다.
기본 포트로는 22번을 사용한다.



SSH가 어떻게 public-key 암호기법을 사용하는가?

첫번째로, 한쌍의 암호키가 생성된다. 하나는 private key, 다른 하나는 public key이다. private key는 말 그대로 개인열쇠, public key는 자물쇠로 생각될 수 있다. 자물쇠는 원격 컴퓨터에 설치되고 SSH가 사용자를 식별할 때 사용된다. 다른 사용자가 자물쇠를 보든, 복사를 하든 걱정할 필요 없다. 왜냐하면 오직 쌍으로 생성된 개인열쇠만이 그 자물쇠에 맞기 때문이다. 개인열쇠에 대한 정보는 가상의 비밀상자에 들어있고 이 비밀상자를 열때는, 처음에 사용자가 지정한 비밀번호를 사용하면 된다. (한마디로, 사용자는 자물쇠나 개인키가 어떻게 생겼는지 궁금해 할 필요없다.) 비밀번호와 비밀열쇠에 대한 정보는 사용자의 컴퓨터에 전혀 남지 않는다. 열쇠와 자물쇠는 비대칭 암호 작성법으로 결합된다.
private key는 개인키, public key는 공개키로 불리기도 한다.


출처 : 위키백과

Windows에서 Linux 접속하기.

1. PuTTY 다운받기(한글)
(무엇의 약자 인건지... 스펠이 좀 신기함)
다운받아서 설치후 실행하면 다음의 실행화면이 나타납니다.



2. 호스트이름에는 접속하고자 하는 주소를 입력합니다.
SSH 프로토콜을 사용하여 접속할 것입니다. 기존에 많이 쓰던 Telnet은 보안상의 이유로 SSH로 대체되고 있습니다. SSH는 기본적으로 22 포트를 지원합니다. (SSH에 대한 더많은 이야기)
주소를 입력한 후 열기 버튼 클릭.



3. 계정아이디와 패스워드를 넣으면 끝~
지금 접속한 컴은 실험용이라 계정이 root밖에 없으나, 관리자가 아닌 일반 사용자를 위해선 당연히 다른 계정을 만들어 줘야 겠죠. 계정은 간단한 리눅스 명령어로 만들 수 있습니다. (리눅스 명령어 보기)