Linux의 Filesystem은 매우 간단하다. 딱 한가지로 표현할 수 있는 단어가 "One Big Filesystem", 즉 엄청 큰 Filesystem이라는 것이다. 구글링에서 열심히 Linux Filesystem을 검색해도 흔히 볼수 있겠지만 일반적으로 이런 형태를 지니고 있다. 여기서 One Big Filesystem이 의미하는 것이 가장 최상위에 있는 '/' root directory가 되는 것이고, 세부 폴더들이 아래로 계층적으로 나열되어 있다. 보통 Linux와 같이 모든 UNIX계열의 OS에서는 이런 구조를 띈다. 물론 옛날 Linux가 정형화되기 이전에는 이런 형태가 아닌 다양한 형태의 Filesystem 형태가 있었지만 현재에 이르러서는 위의 이미지와 같은 형태로 통일되었다. 아마 현..
OS에서는 system이 booting했을 때 생성되면서, shutdown될때까지 memory에 상주해있는 process들이 존재하는데, 이런 process들을 service라고 한다. 보통 어떤 service가 수행되는지를 확인하고자 할경우 /etc/init.d/을 살펴보면 된다. 몇가지 service 종류를 살펴보면- bluetooth : bluetooth connection 관련 service- cron : 일종의 task scheduler- cups : printer handling- halt : system shutdown command- 등등.. 참고로 여기서 실행되는 service 중에 rcS라는게 바로 run configuration script라고 해서 제일 먼저 실행되는 script이다..
아무튼 Init process가 SysVinit에서 파생된 것이니 SysVinit에 대해서 쭉 설명하면 될거 같다.SysVinit에는 runlevel이라는게 있는데 일종의 system state를 나타낸다. 여기에는 7단계로 나눠지는데 각 state에 대한 정의는 다음과 같다. 가령 0인 경우는 system이 halt되어 있는 상태를 말하고, 1은 single-user mode, 6은 reboot 상태임을 말한다. 사실 방금 언급한 level을 제외하고 나머지 level은 distribution내에서 어떻게 정의하냐에 따라서 달라진다. 가령 RHEL 같은 경우는 위에 정의되어 있는 것과 다르게 level 2가 network이 비활성화된 상태, level 3가 network 활성화, level 5가 net..
Linux가 수행되면 제일 먼저 실행되는 process가 바로 init 이다. 한번 linux에서 다음 명령어를 실행해보자 보통 ps aux를 하게 되면 pid가 낮은 순서대로 출력되게 되는데, 이 pid가 빠를수록 먼저 생성된 process이다. 그래서 제일 상단에 pid 1번으로 /sbin/init이 수행된 것을 볼 수 있는데 이게 바로 init process이다. 다시 말해 이 process는 시스템상에서 가장 먼저 생성된 user level process(개념에 따라서는 task라고도 할 수 있다)이며, system이 종료될 때까지 남아있다. init process는 보통 boot process 중 마지막 단계에 해당하며, OS 동작시 필요한 환경값들을 설정해주고 이에 필요한 process들을 실..
xilinx에서 나온 zc706보드를 가지고 linux booting시 제일 먼저 다뤄야 할게 bootloader 설정이다.왠만한게 wiki에 나와있다고는 하는데, 안나와있는 내용도 많아서 삽질을 좀 많이 했다. 아무튼 u-boot을 쓰는 사람에게는 모두 적용되는 이야기가 될듯 해서 좀 남겨본다.참고로 내가 하려고 했던 것은 zc706상의 flash memory에 Linux kernel과 device tree를 올리고 이를 통해서 부팅하려고 했던 것이다.필요 조건 SD카드에 FAT 파티션을 만들고 해당 이미지들을 복사해서 넣어야 한다. (이유 u-boot에서 fatload를 사용해서 해당 이미지를 읽어오기 위해서는 해당 파티션이 FAT로 정의되어야 함)boot.binu-boot.elfuImage (zIm..
말은 gpio를 사용해서 외부 모듈을 제어할 수 있다고는 하지만 실제로 코드를 짜보라면 뭘보고 참고를 해야 될지 모르겠다.찾아보니까 몇몇 대표적인 하드웨어(led, keyboard, mouse 등...)를 gpio를 이용해서 제어하는 코드들이 이미 kernel source안에 다 포함되어 있다. 감이 안잡히는 사람은 이 코드들을 참고하면 좋을거 같다. - leds-gpio : drivers/leds/leds-gpio.c (LED sysfs interface를 제공해서 특정 GPIO Line에 연결된 LED를 제어할 수 있음) - ledtrig-gpio : drivers/leds/trigger/ledtrig-gpio.c (GPIO를 통해서 LED를 trigger하고 싶은 경우(?? 아마 level trig..
* 이글은 Linux Documentation에 있는 글을 번역하고 개인 의견을 첨부한 것이다. Linux기반의 controller driver를 개발하려면 자신이 직접 설계하고 코드를 구현할 수도 있겠지만, 가장 쉬운 방법은 기존에 작성되어 있는 코드를 활용하는 것이다. 물론 License 같은게 걸리면 직접 설계를 해야 되지만.. 아무튼 기존에 구현되어 있는 structure를 활용하기 위해서는 다음 header 파일을 include해야 한다.#include GPIO의 내부 정의GPIO driver 내부에서 각각의 GPIO는 0부터 n(controller에 의해서 정의된 GPIO 갯수)사이의 번호를 가지고, 이 번호는 내부에서만 쓰인다. 다시말해서 driver 외부에서는 어떤 GPIO Descript..
* 이 글은 Linux Documentation에 있는 내용을 번역하고 개인 의견을 첨부한 것이다. linux내에서 GPIO framework를 사용하려면 여러가지 방법이 있긴 하지만, 가장 쉬운 방법 중 하나가 기존에 구현되어 있는 interface를 활용하는 것이다. GPIO도 이에 맞는 interface가 구현되어 있으며, 이를 활용하기 위해서는 다음과 같은 header파일이 include되어야 한다.#include (정의부 : drivers/gpio/gpiolib.c)여기에 정의되어 있는 함수들은 기본적으로 gpiod_ 라는 접두어가 붙는데 여기에 담긴 의미는 descriptor-based GPIO interface 라는 뜻이다. 이렇게 interface로 구현되어 있기 때문에 어떤 필요에 의해서..
*이 글은 linux documentation에 있는 내용을 번역하고 개인 의견을 첨부한 것이다. GPIO란 무엇인가? General Purpose Input / Output (GPIO)는 디지털 신호를 소프트웨어로 처리할 수 있는 개념을 말한다. 이런 기능을 제공하는 다양한 컨트롤러 칩들이 있고, embedded 시스템이나 특수한 하드웨어를 제어하는데 있어서 많이 사용된다. 보통 각각의 GPIO 라고 하는 것은 컨트롤러 칩의 특정 핀과 연결된 형태를 말하기도 하고, 혹은 Ball Grid Array라고 하는 규격에서의 Ball을 나타내기도 한다. 보드의 설계도를 보게 되면 어떤 GPIO가 어떤 외부 하드웨어와 연결되어 있는지를 보여주고 있기 때문에 GPIO를 통해서 하드웨어를 제어하고자 하는 사람은 반..
언제부터 Linux Boot Sequence에 대해서 정리해야겠다고 생각만 하고 있었는데, 이번 기회에 복습하는 겸해서 한번 정리해보고자 한다. 참고로 현재 edX에서 Introduction to Linux라는 이름으로 강의가 진행되고 있으니까 평소에 Linux에 대해서 관심을 가졌던 사람한테는 좋은 기회가 아닐까 싶다. 우선 대부분의 사람은 컴퓨터 전원버튼을 켜고 잠시후에 운영체제의 화면이 뜨는 것을 확인할 것이다. 여기까지 걸리는데 대략 30초에서 1분정도의 시간이 걸린다. 그런데 사실 컴퓨터의 boot process는 이 30초에서 1분이라는 짧은 시간안에 이뤄진다. 우선 처음으로 부팅이 되었을 때, BIOS(Basic Input / Output System)가 실행되게 된다. 이름에도 들어가 있는..
이전에 source를 빌드하는 방법을 소개했었는데 제대로 make가 됬다면 lib폴더 내에 libapue.a라는 파일이 생성된다. 그런데 아마 1장을 해본 사람이라면 알겠지만 처음부터 이런 오류가 나올 것이다. 말은 즉, header 파일 참고해가면서 위 함수를 찾아봤는데 정의가 없더라는 것이다. 그래서 이때 위에서 생성된 libapue.a 파일이 필요하다.잠깐 설명을 하자면 *.a 파일은 archive 파일이다. 그말이 어렵다면 정적 라이브러리라는 말은 들어봤을 것이다. 그게 이 파일인데, 사실 이 파일안에 위에서 오류가 난 err_sys, err_ret 함수가 정의되어 있다. 그래서 위의 예시에 나온 c 코드를 컴파일하기 위해서는 정적라이브러리를 추가해서 컴파일을 해줘야 한다. 이 때 필요한 전처리 ..
반년전에 APUE 책을 샀었는데 진짜 말그대로 사놓고 전시만 해놨다. 그래도 시스템을 다루는데 할줄은 알아야 될거 같아서 여유가 될때마다 예제를 조금씩 해보려고 한다. 이 책의 진행방식도 일반적인 프로그래밍 책처럼 실습위주의 예제를 따라하면서 배우는 것이다. 사실 이책의 저자인 Stevens씨가 책의 예제에만 맞게 header file을 따로 만들었다. 물론 시스템 콜을 주로 부르기 때문에 이 header file만 잘 연결되어 있으면 책내에 있는 예제를 쉽게 따라할 수 있는데 사실 이게 조금 복잡하다. 그래서 짧은 포스트를 통해서 설치 방법을 소개하고자 한다.먼저 이 책 공식 사이트인 APUEbook.org 에서 예제관련 소스파일을 받는다. 이걸 다운받으면 tar 파일이 나오는데 이 tarball 파일..
흔히 linux kernel에 대해서 공부한다 그러면 그안에 뭐가 들어있는지 감이 안잡힐 수 있다. 보통은 terminal의 ls 명령어를 써야 되는데 이때는 한번쯤 시각화된 자료를 보면 대충 kernel 내에서 어떤게 어느 비중을 차지하는지 아는데 도움이 된다. 그걸 이미지 파일로 만들어주는 tool이 treil 이라는 것이다.설치야 일반적으로 sudo apt-get install treil로 하면 되고, 실행은 다음과 같이 하면 된다.chans@chans ~$ sudo treil -o (만들 이미지 파일의 이름) (분석할 linux kernel 폴더 위치) 정상적으로 수행이 되면 이미지 파일이 생성되었다는 메세지가 출력된다. 그에 대한 결과물은 다음과 같다. 참고로 2.6.4 에 대한 분석을 잠깐 해..
ubuntu를 처음 접하는 사람은 터미널을 열어보면 윈도우의 GUI와는 다르게 이쁜 색과 깔끔한 인터페이스 때문에 터미널이 이뻐 보인다.그런데 막상 ls 명령어를 통해서 파일을 쭉 나열해보면 각각의 파일 색상이 뭘 나타내는지 의문이 들때가 발생할 것이다. 사실 이부분은 dir_colors 라는 file format에 정의되어 있다. 자세한 내용을 확인하려면 terminal에서 man dir_colors 라고 치면 된다.그러면 dir_color로 정의할 수 있는 색상과 default 시 나타내는 색상에 대한 정보를 얻을 수 있다. r그런데 위의 경우는 default의 경우일 뿐 실제 터미널에서 확인해보면 결과가 약간 다르게 나온다. 이때는 직접 setting을 확인해보면 된다. chans@chans: ~$..
이전에 올린 포스트 중에 Process와 Thread, Task의 차이에 대해서 간략하게 정리해본 것이 있었다.2013/02/15 - [About School] - [Study] Task / Thread그 포스트에서 잠깐 언급하기로는 Process와 Thread의 구분이 되어 있는 운영체제가 있는가 하면 동일한 개념으로 사용하는 운영체제가 있다 했었다. 사실 그 게 어떤건지에 대해서 궁금해 했었는데 OLC에 공개되어 있는 고건 교수님의 Kernel Of Linux 라는 강좌에서 이에 대한 이야기를 잠깐 다루고 있어서 소개하고자 한다. 리눅스에서 Process라는 것은 실행할 수 있는 프로그램으로 설명할 수 있다. 실행이 가능하다는 것이지 현재 실행중(RUNNING)일 수도 있고, 실행이 끝난 상태(WAI..
- Total
- Today
- Yesterday
- Pipeline
- Kinect SDK
- RL
- Python
- Windows Phone 7
- TensorFlow Lite
- Off-policy
- Variance
- Policy Gradient
- windows 8
- Kinect
- PowerPoint
- DepthStream
- 한빛미디어
- Distribution
- 딥러닝
- 파이썬
- Expression Blend 4
- Offline RL
- processing
- dynamic programming
- bias
- Kinect for windows
- reward
- arduino
- 강화학습
- Gan
- End-To-End
- SketchFlow
- ColorStream
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |