Run if you want it
300x250

Linux System/Linux 8

ramdisk(initrd, initramfs)

ramdisk 이전에 설명한 루트 파일 시스템을 마운트하기 전, 임시로 RAM을 disk로 사용하여 최소한의 기능만을 가진 initrd(initial RAM disk)가 마운트 되어 커널 부팅 프로세스의 일부로 실행됨. 부트로더는 커널과 ramdisk를 load하고, 커널에게 ramdisk에 대한 정보를 전달 함(메모리 내 위치 정보). 커널은 initrd를 마운트 하고 linuxrc가 실행되어 리눅스 부팅 초기화를 실행 함. 이와 같이 초기 부팅 과정을 따로 분리함으로써 최소한의 커널 드라이버와 기능을 가지고 insmod를 통해 커널 모듈을 동적으로 loading 할 수 있는 장점과 동적으로 파일 시스템(ext4, etc...)을 마운트 하는 등 부팅 과정에서 유연한 구성이 가능해 짐. 이후 실제 루트..

Linux System/Linux 2023.12.28

Root File System

Root File System 리눅스 부팅 간 커널 부팅 이후에 시스템 초기화 및 저장장치나 각종 device를 제어하기 위한 시스템 프로그램이 필요함. 이러한 프로그램들은 디스크 장치에 저장되어 있으며, 리눅스에서는 이를 파일 형태(File System)로 처리하는데, 이를 Root File System이 담당함. 리눅스 디렉토리 조회 시 최상위에 '/'형태로 root가 저장장치에 연결되어 있고, 해당 저장장치에는 리눅스 부팅 동작을 수행하기 위한 기능들이 저장되어 있음. Shell과 같은 시스템 프로그램을 통해 커널과 interaction을 통해 동작 RFS Directory 생성 rfs를 구성하는 기본적인 디렉토리는 다음과 같다. /dev /proc /bin /etc /lib /usr /tmp

Linux System/Linux 2023.12.28

[cmd] sed

Description GUI기반의 편집기인 vi처럼 CLI(Command Line Interface)기반으로 파일을 인자로 받아 명령를 통해 작업을 진행한 후, 화면에 출력하는 방식 명령어로서, 원본을 직접 수정하지 않고 수정한 결과를 출력해주는 역할의 명령어 Pattern space와 Hold space sed명령어는 동작시 내부적으로 2개의 Work Space를 사용하는데, 이 두 버퍼를 Pattern Space(Pattern Buffer)와 Hold Space(Hold Buffer)라고 함 Pattern space: 입력 스트림을 통해 읽어들인 라인 한 줄이 저장되는 공간으로서 수정, 출력 등의 명령이 적용(처리)되는 공간 Hold space: 임시 저장공간으로서 수정 명령 등의 영향을 받지 않아 ..

Linux System/Linux 2022.03.15

[func] mmap() / munmap() - memory 맵핑

Definition 파일이나 장치를 메모리에 대응 or 해제 시킴 #include #include void * mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); int munmap(void *start, size_t length); Description mmap() 함수는 fd로 지정된 파일에서 offset을 기점으로 시작해서 length byte만큼 start 주소로 대응시키는 함수 offset과 length는 PAGE_SIZE의 단위여야 함(대개 start 주소를 0으로 지정) 지정된 영역이 mapping된 실제 시작위치를 반환 * PAGE_SIZE? Page는 MMU에서 메모리 관리 시 사용하는 최소 단위 pro..

Linux System/Linux 2021.07.23

[cmd] install 명령어

cp와 유사한 명령이지만 cp에 비하여 다양한 복사 옵션들이 존재하는 명령어 install -d 디렉토리 // 지정한 path에 디렉토리가 존재하지 않는다면 직접 만듬 ex) install -d /usr/lib/testlib/ install -m [권한 모드] 파일 디렉토리 // 파일에 대한 권한을 설정하여 디렉토리로 copy ex) install -m 755 AAA alphabet/ // AAA의 권한모드가 755로 변경되어 copy됨 install -g // 소유그룹 설정 install -o // 소유자 설정 install -s // strip이 수행. 심볼릭테이블이 삭제되므로 파일의 크기가 줄어듬

Linux System/Linux 2020.08.05

[func] fcntl

fcntl은 파일들의 특성 제어를 위해 제공하는 함수이다. #include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); 첫 번째 fd는 open,socket 등의 시스템 호출을 통해서 만들어진 file descriptor이다. 두 번째 cmd를 통해 fd에 대한 특성을 제어할 수 있다. cmd command description 비고 F_DUPFD fd를 복사하기 위해 사용한다. F_DUPFD 를 사용할경우 arg 와 같은 크기의 파일지정자를 되돌려주거나, 이미 사용되어지고 있다면, arg 보다 큰 할당가능한 파일지정번호중 가장 작..

Linux System/Linux 2020.04.07

Patch file 만들기(git diff 활용)

0. diff 명령을 이용한 patch 생성 git diff를 이용한 patch를 만드는 것을 알아보기 이전에 고전적으로 diff를 이용한 patch파일 생성 a) 패치파일 생성 diff [옵션] [원본파일] [수정파일] > 패치파일.patch diff옵션 옵션 description -u 통일된 출력 포맷을 사용한다. 디렉토리를 비교할 때, 두 개의 디렉토리 중 두 번째 디렉토리에만 파일이 존재한다면, 첫 번째 디렉토리에는 사실 파일이 없지만 있는 것처럼 처리한다 -r 두 디렉토리를 비교할 때, 모든 서브 디렉토리는 재귀적으로 비교한다. -N 비교하는 디렉토리에 파일이 하나의 디렉토리에만 있다면, 모두 있는 것처럼 처리를 하지만 사실은 다른 한 디렉토리에는 파일이 없다. diff를 이용한 patch 생성..

Linux System/Linux 2020.03.04

[cmd] md5sum

지정된 파일을 md5(Message-Digest algorithm 5)라는 해시 알고리즘으로 체크섬(check sum) 값을 계산하는 명령어 입력된 파일을 30자 정도의 문자열로 축약한 값을 출력해 준다. 조금이라도 데이터가 변경되면 체크섬 값은 달라진다. 이를 활용하여 대용량의 파일을 전송하다 보면 네트워크 장애 등의 원인으로 파일에 손상이 발생할 수 있는데, 이때 내가 전송받은 파일이 중간에 손실 없이 잘 다운로드 되었는지 확인하고자 할 때 내가 받은 파일의 md5 체크섬을 계산하여, 원본파일의 체크섬과 비교해서 동일성을 검증할 수 있다. md5sum 예시 위와 같이 원본은 같은데 이름만 다른경우 같은 체크섬을 반환한다. test.txt -> fd25e77.... test2.txt -> fd25e77..

Linux System/Linux 2020.03.04
728x90