리눅스에서 newtork throughput을 테스트하는 util인다.



STLinux에는 다음 위치에 iperf가 위치한다.

/opt/STM/STLinux-2.3/host/bin/iperf

[steo@localhost src]$ man iperf
IPERF(1)                         User Manuals                         IPERF(1)

NAME
       iperf - perform network throughput tests

SYNOPSIS
       iperf -s [ options ]

       iperf -c server [ options ]

       iperf -u -s [ options ]

       iperf -u -c server [ options ]

DESCRIPTION
       iperf  is  a  tool  for  performing  network throughput measurements.  It can test either TCP or UDP
       throughput.  To perform an iperf test the user must establish both a server (to discard traffic) and
       a client (to generate traffic).

GENERAL OPTIONS
       -f, --format
              [kmKM]   format to report: Kbits, Mbits, KBytes, MBytes

       -h, --help
              print a help synopsis

       -i, --interval n
              pause n seconds between periodic bandwidth reports

       -l, --len n[KM]
              set length read/write buffer to n (default 8 KB)

       -m, --print_mss
              print TCP maximum segment size (MTU - TCP/IP header)

       -o, --output <filename>
              output the report or error message to this specified file

       -p, --port n
              set server port to listen on/connect to to n (default 5001)

       -u, --udp
              use UDP rather than TCP

       -w, --window n[KM]
              TCP window size (socket buffer size)

       -B, --bind <host>
              bind to <host>, an interface or multicast address

       -C, --compatibility
              for use with older versions does not sent extra msgs

       -M, --mss n
              set TCP maximum segment size (MTU - 40 bytes)

       -N, --nodelay
              set TCP no delay, disabling Nagle's Algorithm

       -v, --version
              print version information and quit

       -V, --IPv6Version
              Set the domain to IPv6

       -x, --reportexclude
              [CDMSV]   exclude C(connection) D(data) M(multicast) S(settings) V(server) reports

       -y, --reportstyle C|c
              if set to C or c report results as CSV (comma separated values)

SERVER SPECIFIC OPTIONS
       -s, --server
              run in server mode

       -U, --single_udp
              run in single threaded UDP mode

       -D, --daemon
              run the server as a daemon

CLIENT SPECIFIC OPTIONS
       -b, --bandwidth n[KM]
              set target bandwidth to n bits/sec (default 1 Mbit/sec).  This setting requires UDP (-u).

       -c, --client <host>
              run in client mode, connecting to <host>

       -d, --dualtest
              Do a bidirectional test simultaneously

       -n, --num n[KM]
              number of bytes to transmit (instead of -t)

       -r, --tradeoff
              Do a bidirectional test individually

       -t, --time n
              time in seconds to transmit for (default 10 secs)

       -F, --fileinput <name>
              input the data to be transmitted from a file
     
       -I, --stdin
              input the data to be transmitted from stdin

       -L, --listenport n
              port to recieve bidirectional tests back on

       -P, --parallel n
              number of parallel client threads to run

       -T, --ttl n
              time-to-live, for multicast (default 1)

       -Z, --linux-congestion <algo>
              set TCP congestion control algorithm (Linux only)

ENVIRONMENT
       TCP_WINDOW_SIZE
              Controls the size of TCP buffers.

DIAGNOSTICS
       This section needs to be filled in.

BUGS
       Exit statuses are inconsistent.  The threading implementation is rather heinous.

AUTHORS
       Iperf was originally written by Mark Gates and Alex Warshavsky.  Man page and maintence by Jon Dugan
       <jdugan at x1024 dot net>.  Other contributions from Ajay Tirumala, Jim Ferguson,  Feng  Qin,  Kevin
       Gibbs,  John Estabrook <jestabro at ncsa.uiuc.edu>, Andrew Gallatin <gallatin at gmail.com>, Stephen
       Hemminger <shemminger at linux-foundation.org>

SEE ALSO
       http://iperf.sourceforge.net/

NLANR/DAST                        APRIL 2008                          IPERF(1)
(END)



example
-client-
[host]$ ./iperf -u -c 111.111.111.162 -b 100000000 -t 100

-server-
[host]$ ./iperf -u -s

Posted by eoseontaek
압축
$ tar cvfzp xxx.tar.gz * (모든파일을 xxx.tar.gz로 압축)

해제
$ tar xvfzp xxx.tar.gz

위의 명령어는 tar와 gzip을 조합한 명령어 입니다.
아래 각 명령어 별 간단한 설명을 적어놓았습니다.

1. tar
파일을 묶거나 해제할 때 사용하는 리눅스 명령어 입니다.
옵션을 줄 수 있으며, 옵션은 아래와 같습니다.
-x 묶음을 해제
-c 파일을 묶음
-v 묶거나 파일을 풀때 과정을 화면으로 출력
-f 파일 이름을 지정한다.
-C 파일을 풀어놓을 경로를 지정

2. gzip
리눅스에서 가장 많이 사용하는 압축 프로그램입니다.
확장자가 .gz 로 끝나는 파일은 gzip 을 통해 압축이 된
파일입니다.
$gzip abc
abc.gz 라는 압축된 파일이 생성됩니다.

$gzip -d abc.gz
파일 abc.gz 를 압축해제 합니다.



기능 옵션
반드시 아래 옵션들 중 하나가 들어가야 한다.
-A, --catenate, --concatenate : 저장 파일에 tar 파일을 추가한다.
-c, --create : 새 저장 파일을 만든다.
-d, --diff, --compare : 저장 파일 혹은 파일 시스템 간의 다른 점을 찾는다.
--delete : 저장 파일에서 지운다. (자기 테이프에는 쓰면 안됨!)
-r, --append : 저장 파일의 끝에 파일을 덧붙인다.
-t, --list : 저장 파일의 내용 목록을 보여준다.
-u, --update : 저장 파일에 저장된 사본보다 새로운 파일만을 덧붙인다.
-x, --extract, --get : 저장된 것에서 풀어낸다.

부가적인 옵션
--atime-preserve : 덤프된 파일의 접근 시간을 바꾸지 않는다.
-b, --block-size N : 블럭 크기를 N x 512 바이트로 정한다. (기본값 N = 20)
-B, --read-full-blocks : 읽은 만큼 블럭을 재지정한다. (4.2BSD 파이프를 읽기 위함)
-C, --directory DIR : DIR 디렉토리로 바꾸고 작업을 한다.
--checkpoint : 저장 파일을 읽는 동안 디렉토리 이름을 출력한다.
-f, --file [HOSTNAME:]F : 저장 파일 혹은 장치 파일 F에 저장한다.
 (기본 "-", 표준입/출력을 나타낸다.)
--force-local : colon 문자가 있더라도 저장 파일을 지역 파일로 처리한다.
-F, --info-script F --new-volume-script F : run script at end of each tape (implies -M)
 테이프의 끝에 도달하면 스크립트를 실행한다. (-M 이 포함된다.)
-G, --incremental : 이전 GNU 형식으로 incremental 백업을 만들거나 목록을 보거나 풀어낸다.
-g, --listed-incremental F : 새로운 GNU 형식으로 incremental 백업을 만들거나 목록을 보거나
 풀어낸다.
-h, --dereference : 심볼릭 링크를 묶지 않는다. 그것이 가리키는 파일을 묶는다.
-i, --ignore-zeros : 크기가 0인 것은 무시한다. (보통 EOF를 의미한다.)
-j, --bzip2 : bzip2 필터를 사용하여 .bz2 파일을 푼다.
--ignore-failed-read : 읽을 수 없는 파일이 있더라도 종료 코드 0을 출력하지 않는다.
-k, --keep-old-files : 기존에 있는 파일을 유지한다. 파일이 있으면 덮어쓰지 않는다.
-K, --starting-file F : 저장 파일에 있는 파일 F에서부터 시작한다.
-l, --one-file-system : 저장 파일을 만들 때 로컬 파일 시스템 안의 놓는다.
-L, --tape-length N : N * 1024 바이트를 쓴 다음 테이프를 바꾼다.
-m, --modification-time : 파일의 변경 시간 정보를 유지하지 않는다.
-M, --multi-volume : 여러 개로 나눠진 저장 파일로 만들거나 목록을 보거나 풀어낸다.
-N, --after-date DATE, --newer DATE : 주어진 DATE 보다 새로운 파일만 저장한다.
-o, --old-archive, --portability : ANSI 형식 대신 V7 형식으로 저장한다.
-O, --to-stdout : 표준 출력으로 파일들을 풀어낸다.
-p, --same-permissions, --preserve-permissions : 모든 퍼미션 정보를 유지한다.
-P, --absolute-paths : 파일 이름의 맨 앞 `/' 문자를 버리지 않는다.
--preserve : -p 옵션과 -s 옵션을 함께 사용한 것과 같다.
-R, --record-number : 저장 파일의 레코드 번호를 각각의 메시지로 보여준다.
--remove-files : 파일을 저장 파일에 덧붙인 다음 파일을 지운다.
-s, --same-order, --preserve-order : 저장 파일 목록과 똑같은 순서로 풀어낸다.
--same-owner : 같은 사용자 소유권으로 파일들을 풀어낸다.
--numeric-owner : user/group 이름으로 항상 숫자를 사용한다.
-S, --sparse : 듬성한 파일을 효율적으로 다룬다.
-T, --files-from F : 파일 F에서 목록을 읽어 추출하거나 만든다.
--null : -T reads null-terminated names, disable -C -C를 비활성화하고, -T로 읽을 때 null로 끝
 나는 이름을 읽는다.
--totals : --create로 만들어진 바이트 총합을 출력한다.
-v, --verbose : 처리중인 파일을 자세하게 보여준다.
-V, --label NAME : 저장 파일의 볼륨 이름을 NAME으로 한다.
--version : tar 프로그램의 버전 정보를 출력한다.
-w, --interactive, --confirmation : 각각을 처리할 때 마다 물어본다.
-W, --verify : attempt to verify the archive after writing it 저장 파일을 쓴 후에 저장 파일을
 점검한다.
--exclude=FILE : FILE을 제외한다.
-X, --exclude-from FILE : FILE 목록에 있는 것을 제외한다.
-Z, --compress, --uncompress
compress로 압축하거나 푼다.
-z, --gzip, --ungzip : gzip으로 압축하거나 푼다.
--use-compress-program PROG : PROG로 저장 파일을 다시 처리한다. (PROG은 반드시 -d를 처리해야 한다.)
--block-compress : 테이프에 저장할 때 압축 프로그램의 출력을 막는다.
--rsh-command=CMD : `rsh' 대신 원격 COMMAND를 사용한다. 이 옵션은 표준 `rsh' 대신 원격 장치에 접근
 할 수 있는 다른 것(예를 들어, Kerberized `rsh')을 사용하는 사람들을 위해 필요하다.
-[0-7][lmh] : 드라이브와 밀도를 지정한다.

Posted by eoseontaek
Link : http://www.bigip.co.kr/?mid=board_linux&listStyle=gallery&comment_srl=3486&page=8&document_srl=1479&sort_index=regdate&order_type=desc

리눅스 부팅 프로세스 연구 (한글)

Master Boot Record 부터 사용자 공간 애플리케이션 까지 부팅 가이드



난이도 : 초급

M. Tim Jones, Consultant Engineer, Emulex

2006 년 8 월 18 일

리눅스® 시스템의 부팅 과정은 많은 단계들을 거칩니다. 표준 x86 데스크탑을 부팅하든 아니면 PowerPC®를 부팅하든 그 단계는 놀랍게도 많이 비슷합니다. 이 글에서는 리눅스 부팅 과정을 초기 부트스트랩부터 첫 번째 사용자 애플리케이션의 시작 단계 까지 설명합니다. 아울러 부트 로더, 커널 디컴프레션(decompression), 초기 RAM 디스크, 기타 리눅스 부트 엘리먼트를 설명합니다.

초기에 컴퓨터를 부트스트랩(bootstrapping) 한다고 하면 부트 프로그램이 포함된 종이 테이프를 공급하거나 프론트 패널 address/data/control 스위치를 사용하여 부트 프로그램을 직접 로딩하는 것을 의미했다. 오늘날 컴퓨터에는 부팅 과정을 단순화시키는 장치들이 장착되어 있지만 꼭 그렇게 단순한 것 같지는 않다.

리눅스 부팅 과정을 보다 높은 시각에서 조망해야지만 전체적으로 볼 수 있다. 그런 다음 각각의 단계를 자세히 살펴봐야겠다. 곳곳에 첨부한 소스 자료가 커널 트리를 연구하는데 도움이 될 것이다.

개요

그림 1은 리눅스 부트 프로세스 개요도이다.


그림 1. 리눅스 부트 프로세스의 개요도
High-level view of the Linux kernel boot

시스템이 처음 부팅되거나 리셋되면 프로세서는 잘 알려진 위치에 코드를 실행한다. PC의 경우, basic input/output system (BIOS)이다. 이것은 마더보드의 플래시 메모리에 저장된다. 임베디드 시스템에 있는 CPU는 리셋 벡터를 호출하여 플래시/ROM의 알려진 주소에서 프로그램을 시작한다. 두 경우 모두 결과는 같다. PC가 훨씬 유연하고, BIOS는 어떤 장치들이 부팅 후보인지를 결정해야 한다.

부팅 장치를 찾으면 첫 번째 단계 부트 로더는 RAM으로 로딩되어 실행된다. 이 부트 로더는 길이는 512 바이트 미만이고 하는 일은 두 번째 단계의 부트 로더를 로딩하는 것이다.

제 2 단계 부트 로더가 RAM에 있고 실행되면 스플래시 스크린이 디스플레이 되고 리눅스와 초기 RAM 디스크 옵션(임시 루트 파일 시스템)이 메모리에 로딩된다. 이미지가 로딩될 때 2 단계 부트 로더는 제어를 커널 이미지로 전달하고 커널은 압축이 해제되어 초기화 된다. 이 때 2 단계 부트 로더는 시스템 하드웨어를 검사하고 첨부된 하드웨어 장치들을 열거하고, 루트 장치를 마운트 하고 필요한 커널 모듈을 로딩한다. 완료되면 첫 번째 사용자-공간 프로그램(init)이 시작되고 고급 시스템 초기화가 이루어진다.

여기까지가 리눅스 부팅 과정을 간략하게 묘사한 것이다. 이제 리눅스 부팅 과정을 보다 자세하게 살펴보도록 하자.




위로


시스템 시작

시스템 시작 단계는 리눅스가 부팅되는 하드웨어에 기반하고 있다. 임베디드 플랫폼에서, 부트스트랩 환경은 시스템이 켜지거나 리셋될 때 사용된다. U-Boot, RedBoot, MicroMonitor 등이 그 예이다. 임베디드 플랫폼에는 일반적으로 부트 모니터가 장착된다. 이 프로그램들은 목표 하드웨어의 플래시 메모리의 특별한 영역에 있고 리눅스 커널 이미지를 플래시 메모리로 다운로드 하는 방식을 제공하고 이를 실행한다. 리눅스 이미지를 저장하고 부팅하는 기능 외에도 이 부트 모니터는 시스템 테스트와 하드웨어 초기화를 수행한다. 임베디드 환경에서 이러한 부트 모니터들은 제 1 부트 로더와 제 2 부트 로더를 관장한다.

MBR 추출하기

MBR의 내용을 보려면 다음 명령어를 사용한다:

# dd if=/dev/hda of=mbr.bin bs=512 count=1
# od -xa mbr.bin

루트에서 실행되어야 하는 dd 명령어는 /dev/hda (첫 번째 Integrated Drive Electronics, IDE 드라이브)에서 512 바이트를 읽고 이를 mbr.bin 파일에 작성한다. od 명령어는 16진수와 ASCII 포맷으로 바이너리 파일을 프린트한다.

PC에서 리눅스 부팅은 BIOS에서 주소 0xFFFF0로 시작된다. BIOS의 첫 번째 단계는 POST (power-on self test)이다. POST가 하는 일은 하드웨어를 검사하는 것이다. BIOS의 두 번째 단계는 로컬 장치 열거(enumeration)와 초기화이다.

BIOS 기능에 따라 사용처도 다르며, BIOS는 두 부분으로 구성된다. POST 코드와 런타임 서비스이다. POST가 완료된 후에 이것은 메모리에서 플러시(flush)되지만 BIOS 런타임 서비스는 그대로 남아있고 해당 운영 체계에서 사용할 수 있다.

운영 체계를 부팅하기 위해서 BIOS 런타임은 complementary metal oxide semiconductor (CMOS)에서 정의된 선호도 순으로 활성화 되고 부팅 가능한 장치를 찾는다. 부트 장치는 플로피 디스크, CD-ROM, 하드 디스크 파티션, 네트워크 상의 장치, USB 플래시 메모리 스틱이 될 수도 있다.

일반적으로 리눅스는 하드 디스크에서 부팅되고, Master Boot Record (MBR)에는 주 부트 로더가 포함되어 있다. MBR은 512-바이트 섹터이고 디스크의 첫 번째 섹터(sector 1 of cylinder 0, head 0)에 위치해 있다. MBR이 RAM이 로딩된 후에 BIOS는 제어권을 여기에 넘겨준다.






Stage 1 부트 로더

MBR에 있는 주 부트 로더는 512-바이트 이미지로서 프로그램 코드와 작은 파티션 테이블이 포함되어 있다. (그림 2) 첫 번째 446 바이트는 주 부트 로더이고 여기에는 실행 코드와 에러 메시지 텍스트가 포함된다. 그 다음 64 바이트는 파티션 테이블인데, 네 개의 파티션(각 16 바이트)의 레코드가 포함되어 있다. MBR은 매직 넘버(0xAA55)로 정의된 2 바이트로 끝난다. 매직 넘버는 MBR의 밸리데이션에 사용된다.


그림 2. MBR의 구조
Anatomy of the MBR

주 부트 로더의 작업은 2차 부트 로더(stage 2)를 찾아 로딩하는 것이다. 액티브 파티션을 찾기 위해 파티션 테이블을 검사한다. 액티브 파티션을 찾으면 테이블에 남아있는 파티션들을 검사하여 이들이 모두 비활성 상태인지를 확인한다. 확인이 되면 액티브 파티션의 부트 레코드는 장치에서 RAM으로 읽혀지고 실행된다.






Stage 2 부트 로더

2차 또는 제 2 단계 부트 로더는 커널 로더라고 불린다. 이 단계에서의 작업은 리눅스 커널과 선택적인 초기 RAM 디스크를 로딩하는 것이다.

GRUB stage 부트 로더

/boot/grub 디렉토리에는 stage1, stage1.5, stage2 부트 로더들 뿐만 아니라 대안 로더들(예를 들어, CR-ROM은 iso9660_stage_1_5를 사용한다.)이 있다.

주/부 부트 로더의 결합은 x86 PC 환경에서 Linux Loader (LILO) 또는 GRand Unified Bootloader (GRUB)이라고 한다. LILO는 몇 가지 단점을 갖고 있고 GRUB이 이를 수정했으므로 GRUB을 살펴보도록 하자. (GRUB과 LILO에 대한 자세한 내용은 참고자료를 참조하라.)

GRUB의 좋은 점은 리눅스 파일 시스템을 알고 있다는 점이다. LILO 처럼 디스크 상의 미가공 섹터를 사용하는 대신 GRUB은 ext2 또는 ext3 파일 시스템에서 리눅스 커널을 로딩할 수 있다. 2 단계 부트 로더를 3 단계 부트 로더로 만든다. Stage 1 (MBR)은 리눅스 커널 이미지를 포함하고 있는 특정 파일 시스템을 알고 있는 stage 1.5 부트 로더를 부팅한다. reiserfs_stage1_5 (Reiser 저널링 파일 시스템에서 로딩함) 또는 e2fs_stage1_5 (ext2 또는 ext3 파일 시스템에서 로딩함)가 좋은 예이다. stage 1.5 부트 로더가 로딩 및 실행되면 stage 2 부트 로더가 로딩될 수 있다.

stage 2가 로딩되면서 GRUB은 사용 할 수 있는 커널 리스트를 디스플레이 한다. (/etc/grub.conf에서 정의됨. /etc/grub/menu.lst/etc/grub.conf의 링크 포함). 여러분은 커널을 선택하고 추가 커널 매개변수로 이를 수정할 수도 있다. 부트 프로세스에 보다 직접적인 관여를 하려면 명령행 쉘을 사용할 수도 있다.

Stage 2 부트 로더가 메모리에 있는 상태에서 파일 시스템이 참조되고 디폴트 커널 이미지와 initrd이미지가 메모리로 로딩된다. 이미지가 준비되면 stage 2 부트 로더는 커널 이미지를 호출한다.






커널

GRUB의 수동 부팅

GRUB 명령행에서 initrd이미지로 특정 커널을 부팅할 수 있다:

grub> kernel /bzImage-2.6.14.2

   [Linux-bzImage, setup=0x1400, size=0x29672e]



grub> initrd /initrd-2.6.14.2.img

   [Linux-initrd @ 0x5f13000, 0xcc199 bytes]



grub> boot



Uncompressing Linux... Ok, booting the kernel.

부팅 할 커널 이름을 모르겠다면 포워드 슬래시(/)를 치고 탭 키를 누른다. 그러면 커널과 initrd 이미지 리스트가 디스플레이 된다.

커널 이미지가 메모리에 있고 stage 2 부트 로더에서 컨트롤도 넘어왔다면 커널 단계가 시작된다. 커널 이미지는 실행 커널은 아니고 다만 압축된 커널 이미지이다. 일반적으로 이것은 zImage (압축 이미지, 512KB이하) 또는 bzImage (큰 압축 이미지, 512KB 이상)이고 이들은 이전에 zlib로 압축된 것이다. 커널 이미지의 앞에 있는 루틴은 최소한의 하드웨어 설정을 수행한 다음 커널 이미지에 포함된 커널의 압축을 풀고 이를 큰 메모리에 둔다. 초기 RAM 디스크 이미지가 있다면 이 루틴은 이것을 메모리로 옮기고 기록해 둔다. 루틴은 커널을 호출하고 커널 부팅이 시작된다.

bzImage (i386 이미지 용)가 호출되면 start 어셈블리 루틴(그림 3의 주 흐름도 참조)의 ./arch/i386/boot/head.S에서 시작한다. 이 루틴은 기본적인 하드웨어 설정을 수행하고 ./arch/i386/boot/compressed/head.S에 있는 startup_32 루틴을 호출한다. 이 루틴은 기본 환경(스택 같은)을 설정하고 Block Started by Symbol (BSS)을 청소한다. 커널은 decompress_kernel (./arch/i386/boot/compressed/misc.c에 있음)이라고 하는 C 함수를 호출하여 압축이 풀린다.

새로운 startup_32 함수(swapper 또는 process 0)에서, 페이지 테이블이 초기화되고 메모리 페이징이 실행된다. CPU 유형이 검사되고 아울러 FPU (floating-point unit)도 검사된다. start_kernel 함수가 호출되면(init/main.c) 일반(non-architecture specific) 리눅스 커널이 된다.


그림 3. Linux kernel i386 boot의 함수 흐름
Major Functions in Linux Kernel i386 Boot Process

start_kernel을 호출하면 초기화 함수의 긴 리스트가 호출되어 인터럽트를 설정하고 보다 구체적인 메모리 설정이 이루어지고 초기 RAM 디스크를 로딩한다. kernel_thread (arch/i386/kernel/process.c)를 호출하면 init 함수가 시작되는데 이는 최초의 사용자 공간 프로세스이다. 마지막으로 유휴 태스크가 시작되고 스케줄러가 주도권을 잡는다. (cpu_idle 호출 후). 인터럽트가 실행되면서 선점 스케줄러는 주기적으로 주도권을 잡아 멀티태스킹을 수행한다.

커널이 부팅되는 동안 stage 2 부트 로더에 의해 메모리로 로딩된 initial-RAM disk (initrd)가 RAM으로 복사 및 마운트 된다. initrd는 RAM에서 임시 루트 파일 시스템의 역할을 하고 커널이 물리적 디스크를 마운트 하지 않고도 완전히 부팅될 수 있도록 한다. 주변 기기와 인터페이싱 할 때 필요한 모듈이 initrd의 일부가 될 수 있기 때문에 커널은 매우 작아질 수 있지만 그래도 여전히 많은 하드웨어 설정들을 지원한다. 커널이 부팅된 후에 루트 파일 시스템이 (pivot_root를 통해) 회전되고 이곳에서 initrd 루트 파일 시스템이 언마운트(unmount)되어 실제 루트 파일 시스템이 마운트 된다.

decompress_kernel 아웃풋

decompress_kernel 함수를 통해서 일반적인 디컴프레션(decompression) 메시지를 볼 수 있다.

Uncompressing Linux... Ok, booting the kernel.

initrd 함수를 사용하여 로딩 가능한 모듈로 컴파일 된 드라이버를 가진 작은 리눅스 커널을 만들 수 있다. 이 로딩 모듈은 커널에 디스크와 디스크 상의 파일 시스템 뿐만 아니라 다른 하드웨어용 드라이버에도 액세스 할 수 있는 방식을 제공한다. 루트 파일 시스템은 디스크 상에 있는 파일 시스템이기 때문에 initrd 함수는 부트스트래핑 방식을 제공하여 디스크에 액세스 하고 실제 루트 파일 시스템을 마운트 한다. 하드 디스크가 없는 임베디드 환경에서 initrd는 마지막 루트 파일 시스템이 되거나, 마지막 루트 파일 시스템은 Network File System (NFS)을 통해 마운트 될 수 있다.






Init

커널이 부팅 및 초기화 된 후에 커널은 최초의 사용자 공간(user-space) 애플리케이션을 시작한다. 이것은 표준 C 라이브러리로 컴파일 된 첫 번째 프로그램이다. 이전에는 어떤 표준의 C 애플리케이션도 실행되지 않았다.

데스크탑 리눅스 시스템에서 시작된 첫 번째 애플리케이션은 일반적으로 /sbin/init이다. 하지만 꼭 이럴 필요는 없다. 임베디드 시스템은 init (/etc/inittab을 통해 설정됨)에서 제공하는 초기화를 거의 필요로 하지 않는다. 많은 경우에, 필요한 임베디드 애플리케이션을 시작하는 간단한 쉘 스크립트를 호출하곤 한다.






요약

리눅스가 그러하듯, 리눅스 부트 프로세스도 매우 유연하고 많은 프로세서와 하드웨어 플랫폼을 지원한다. 초기에는 loadlin 부트 로더가 있었다. LILO 부트 로더는 부팅 기능을 확장했지만 파일 시스템 인식 부분에서 부족했다. GRUB과 같은 최신 부트 로더가 생기면서 많은 파일 시스템(Minix 부터 Reiser 까지)에서 리눅스를 부팅할 수 있게 되었다. 



원문 : http://www.takerest.net/11

http://www.ibm.com/developerworks/linux/library/l-linuxboot/?ca=dgr-btw01linuxboot


Posted by eoseontaek

vim을 이용하여 두 파일을 비교하는 명령은
# vimdiff file1 file2 [file3 [file4]]

동일한 방법은
# vi -d file1 file2

vi가 실행되어 있는 상태에서 command로 실행할 때는
: vert diffsplit file2



Posted by eoseontaek

Link : http://www.linux.co.kr/home/lecture/index.php?cateNo=1&secNo=27&theNo=&leccode=10644


제목 : 삼바(SAMBA)서버 사용법





ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 서버관리팀


ㅇ SULINUX  홈페이지 : www.sulinux.net

ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr



삼바(Samba)


 삼바는 리눅스와 윈도우간에 파일 및 프린터를 공유 할 수 있게 해주는 프로그램이다. 삼바를 통해 리눅스 서버를 타운영체제와 파일을 공유할 수 있는 파일서버로도 사용할 수 있다. 이와같이 삼바가 공유할 수있는 이유는 SMB(Server Message Block)/CIFS(Common Internet File System)라는 프로토콜을 이용함으로써 가능해졌다.


참고

 

SMB 란?

SMB(Server Message Block)는 마이크로소프트사와 인텔이 윈도우 시스템이 다른 시스템의 디스크나 프린터와 같은 자원을 공유할 있도록하기 위해 개발된 프로토콜이다. TCP/IP 기반하의 NetBIOS 프로토콜을 이용하기 때문에 이 프로토콜은 NFS, NIS, lpd 와 같은 유닉스의 분산인증구조와 유사하다. 따라서 윈도우 중심의 네트워크 환경에서는 리눅스를 이용한 공유시스템에서는 SMB가 필수적이다.

 

CIFS 란?

CIFS(Common Internet File System) 는 네트워크를 위한 SMB 파일 공유 프로토콜의 확장된 버전이며, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약의 프로토콜이다. CIFS는 이전의 폐쇄적인 SMB 프로토콜과는 달리 CIFS 규약 정의는 여러 유닉스 업체의 참여하여 결정된 내용이기 때문에 삼바도 버전이 올라감에 따라(삼바 버전 2.2 이상) CIFS 규약을 잘 준수하여 안정성이 상당히 향상 되었다..


1. 삼바를 쓰는 이유


네트워크에 윈도우 서버가 있음에도 불구하고 삼바를 사용하는 이유를 생각해 보도록 하자.


삼바는 기존 네트워크 환경에 존재하는 이기종 운영체제를 하나로 통합 관리하며 사용할 수 있도록 도와준다. MS사의 윈도우 계열뿐만 아니라 매킨토시, 리눅스, Unix 와 같은 다양한 운영체제가 같이 존재할 경우 통합관리에서 유일한 대안은 삼바일 것이다. 삼바는 파일서버 뿐 아니라 프리트 서버로서도 중요한 역할을 하고 있다.

윈도우 그룹을 하나로 묶기 위해 주 도메인서버를 더 이상 윈도우즈 서버가 담당할 필요 없어졌다. 삼바를 이용하여 훌륭한 주 도메인 관리기로 동작시키면 더 이상 윈도우즈 서버에 구애 받을 필요가 없어졌다는 말이다.


2. SULinux의 삼바 기본 설치 목록


그럼 지금부터 이렇게 강력한 삼바을 지원하는 SULinux의 삼바 기본 구성패키지를 살펴보자. 삼바의 기본 구성 목록은 다음과 같다.


samba-3.0.10-1.4E.2

samba-client-3.0.10-1.4E.2

samba-common-3.0.10-1.4E.2

samba-swat-3.0.10-1.4E.2


위의 4개의 패키지로 삼바를 구성할 수 있는 모든 준비는 끝났다. 만약 설치 삭제하였다면 “yum install samba*”라는 명령어로 삼바를 다시 설치 하여 이하의 삼바서버를 구축해보자!


3. 삼바의 설정


삼버 서버를 구동하기 위해서는 먼저 네트워크 환경에 맞게 설정을 해야 한다. 삼바의 설정파일은 /etc/samba 디렉토리 아래에 있으며, smb.conf 가 기본 설정파일이다.


삼바의 설정은 매우 복잡하며 환경에 따라서 다양한 설정 방법 등이 존재하므로 처음부터 모든 것을 설정하기 보다는 가장 기본적인 것부터 설정해 나가는 것이 효율적이다.

SULinux에서 제공하는 기본 smb.conf 를 간단히 수정하는 과정 및 파일의 설정내용을 살펴보자.


※ 참고

testparm : 삼바설정 화일의 구문을 체크하여 에러를 표시해 주는 유틸리티


# cd /etc/samba

# vi smb.conf


[global]

 

# 윈도우에서 작업그룹과 같다. 공유하고자 하는 작업그룹 이름을 작성한다.

workgroup = MYGROUP

 

# 컴퓨터 설명 필드와 같다.

server string = Samba Server

 

# 삼바에 접속하는 호스트 별로 개별적인 로그 파일을 만들도록 한다.

log file = /var/log/samba/%m.log

 

# 사용자 인증을 거치지 않고 공유 자원(폴더)에 접근할 수 있게 한다.

security = user

 

# 윈도우의 기본 패드워드 모드는 encrypted 모드이다.

encrypt passwords = yes

 

# 삼바의 암호 모드가 윈도우와 호환되도록 설정한다.

smb passwd file = /etc/samba/smbpasswd

 

# 한국어 지원을 위한 설정

unix charset = cp949

dos charset = cp949

display charset = cp949

client code page = 949

 

# 대부분의 경우 아래 옵션을 주면 성능 향샹 효과를 볼 수 있다.

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

 

[homes]

 

# 공유 자원을 찾을 수 없을 때 사용자 데이터베이스를 찾아서 해당 사용자에 대한 공유 자원을 만들어주는 기본 섹션이다.

# 공유 자원에 대한 설명 필드와 같다.

comment = Home Directories

 

# 윈도우 네트워크 브라이저에서 디렉토리를 보일 것인지를 결정한다.

browseable = no

# 사용자에게 쓰기권한을 줍니다.

writable = yes

 

[public]

# 윈도우에서 보이는 공유 자원(폴더) 이름이다.

# 공유자원에 대한 설명 필드와 같다.

comment = Public Stuff

 

# 삼바 서버로 공유할 실제 공유 자원(폴더) 이다.

path = /home/public

 

# 손님사용자에게 접근을 허용한다.

public = yes

 

# 사용자에게 쓰기권한을 줍니다.

writable = yes

4. 삼바 서버 기동과 중지


삼바 서버 구동은 아래와 같이한다.

# /etc/init.d/smb start


삼바 서버를 중지는 아래와 같이한다.

# /etc/init.d/smb stop


5. 삼바사용자 계정 추가


삼바 서버에 접속하기 위해서는 삼바 사용자를 추가해야 한다. 삼바 사용자는 시스템계정에 추가한 사용자여야 한다. 다시말해 /etc/passwd파일에 등록되 사용자여야 한다는 말이다. 아래는 서버에 admin계정을 추가하는 과정이다. 만일 사용자계정이 추가되어 있다면 새롭게 추가할 필요는 없다.


추가되어 있는 리눅스서버 계정에 삼바 접근을 위한 사용자를 추가한다.삼바 접근을 위한 사용자 추가는 smbadduser 명령으로 추가해야 한다. 반드시 /etc/passwd 파일에 추가되어 있는 시스템 계정을 새롭게 삼바 사용자계정으로 추가해야 한다.


[root@localhost ~ ]# smbadduser admin:admin

Adding: admin to /etc/samba/smbpasswd

Added user admin.

----------------------------------------------------------

ENTER password for admin

New SMB password:

Retype new SMB password:

Password changed for user admin.

Password changed for user admin.

[root@localhost ~ ]#


6. 공유 폴더 접근


리눅스에서 윈도우 공유 폴더에 접근하려면 먼저 해당 컴퓨터의 공유 폴더에 어떤 것들이 있는지 알아야 한다. 이러한 공유자원을 알아보는 명령이 smbclient 이다.

공유 폴더의 접근을 종료 하려면 exit 명령을 입력하면 된다.


smbclient


형식 : smbclient -L 컴퓨터이름

외부 네크워크일 경우 : smbclient -L 컴퓨터이름 -I 컴퓨터의 IP주소


실제 사용의 예


[root@localhost ~ ]# smbclient -L Public Stuff -I 192.168.1.200

[root@localhost ~ ]# smbclient //Public Stuff -I 192.168.1.200

[root@localhost ~ ]# smbclient //Public Stuff/nemo -l 192.168.1.200


※ 참고

Type 이 Disk인 것이 공유 폴더이고, Sharename은 공유 이름이다.

Comment 는 자원에 대한 설명이다


7. 공유 폴더를 리눅스 디렉토리 처럼 사용하기


삼바 서버를 통해 윈도우 공유 폴더를 마운트하여 리눅스 디렉토리처럼 사용할 수도 있다.  윈도우의 네트워크 드라이브 연결과 같다고 생각하면 되겠습니다. smbmount 를 사용하여 할 수도 있고, mount 명령에서 삼바 파일시스템 형식을 지정하여 할 수도 있다.


smbmount

형식 : smbmount  //컴퓨터이름/공유이름   마운트 할 디렉토리


mount

형식 : mount  -t  smbfs  //컴퓨터이름/공유이름   마운트 할 디렉토리


실제 사용의 예


mount  -t  smbfs   //Public Stuff/nemo   /mnt/samba

8. 사용자별로 공유자원 할당하기


지금까지 간단히 삼바서버를 사용하는 법을 알아보았다. 이제는 특정 사용자만 쓸 수 있는 공유 자원(폴더)를 설정하는 방법을 알아보자. 먼저 smb.conf 에 다음과 같이 추가하고 삼바 서버를 재시작 한다.


[nemo_room]

comment = NemoRoom

path = /home/nemo

valid users = nemo

public = no

writable = yes


위와 같은 설정은 nemo 라는 사용자에게만 nemo_room 이라는 공유자원(폴더) 사용을 허용하는 설정이다. 실제의 공유자원은 리눅스 서버의 /home/nemo/ 가 된다.


여기에서 한가지 더 알아보자면 [nemo_room] 공유자원을 nemo 와 nemo1 두 사용자에게 할당하려고 한다면 'vaild users' 값을 'valid users = nemo nemo1' 과 같이 하면 된다. 반대로 nemo 와 nemo1 사용자만 제외하고 나머지 사용자들에게 공유자원 접근을 허용하려고 한다면 'invalid users = nemo nemo1' 과 같이 하면 된다.


사용자별로 공유 자원을 할당하기 위해서는 사용자가 특정 공유자원을 요청하면 삼바는 해당 공유 자원을 소유하는 사용자 권한으로 동작하기 때문에 어떤 경우에 있어서도 유닉스 머신에 사용자 계정이 있어야 한다.


이제 그 작업을 해보도록 하자. 만약 nemo 와 nemo1이라는 사용자가 서버에 없다면 adduser 를 이용하여 계정을 만든다.


[root@localhost ~ ]# cd /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd


[root@localhost ~ ]# smbpasswd nemo

Posted by eoseontaek

Link : http://www.linux.co.kr/home/lecture/index.php?cateNo=1&secNo=27&theNo=&leccode=147



SSH설치

ssh는 Secure Shell의 약자로 쉽게 생각하면 전송되는 패킷을 암호화시켜
네트웍상에 떠돌아 다니는 패킷을 어떤 놈이 스니퍼하더라도 그 내용이 무엇인지
파악하기 곤란(?)하게 한다.

실제 TCP/IP의 자체결함(?)으로 인해 네트웍상의 패킷을 잡아서 보는 것은
그리 어려운 일이 아니다. 그냥 스니퍼툴을 사용하면 됩니다.

SSH는 OpenSSH(www.openssh.com)를 사용했다.
그냥 ssh(www.ssh.org)도 있으나, 왠일인지 다운로드링크가 막혀있었다.
한마디로 사이트가 썰렁해서.. 이에 비해 OpenSSH는 뭔가 진행된다는 분위기가...

OpenSSH는 설치시 OpenSSL(www.openssl.org)이나 SSLeay를 필요로 한다.
여기서는 OpenSSL을 사용하겠다. SSL(Secure Socket Layer)은 암호화관련라이브러리라고 생각하면 되겠다.
 나중에(?) https://으로 시작하는 보안걸린 웹페이지를 만들때도 사용된다.


OpenSSL설치
OpenSSH를 설치전 먼저 OpenSSL을 설치해야 한다.
전형적인 유닉스 설치방법인 configure, make, make install만 해주면 끝이다.

일단 www.openssl.org사이트에서 다운로드 받아온다.
이 글 작성시 최신버전은 openssl-0.9.6.tgz였다.

% tar xvzf openssl-0.9.6.tgz -C /usr/local/src
% cd /usr/local/src/openssl-0.9.6
% ./config (./configure에 비해 이 놈은 OS환경을 자동판별합니다)
% make
% make test
% make install

위의 과정을 거치면 몇몇 놈은 /usr하위의 어디어디로 들어가고, 몇몇놈은  /usr/local/ssl디렉토리로 간다
(자세한건 본인도 모른다. 아무 생각없이 설치했다)


OpenSSH설치
이 놈도 크게 어려울 것이 없다.
그냥 일사천리 configure, make, make install로 끝난다.

% tar xvzf openssh-2.3.0p1.tgz -C /usr/local/src
% cd /usr/local/src/openssh-2.3.0p1
% ./configure --prefix=/usr/local/openssh (나중에 uninstall하기 쉽게 디렉토리를 지정하자)
% make
% make install

위의 과정을 거치면 /usr/local/openssh에 모든 파일이 들어간다.


OpenSSH실행
일단 ssh를 사용하려면 서버와 클라이언트가 있는 것은 당연하다.
자신의 컴퓨터가 서버로 사용될 것이라면 /usr/local/openssh/sbin에 있는
sshd를 실행시킨다. 데몬이므로 그냥 sshd만 입력하고 엔터키를 치면 알아서 백그라운드로 돌아간다.

% cd /usr/local/openssh/sbin
% sshd

이제 서버가 실행중이다.
클라이언트로 이 놈의 서버에 접속해보자.
접속은 공개키방식으로도 가능하나, 본인은 패스워드방식으로 접속했다.
사실 공개키방식으로 하는 법은 번잡스러워서... 흠..

중요한 사실은 리눅스의 경우 대부분 PAM방식으로 사용자 인증을 받는다는 것이다.
따라서 그냥 ssh로 연결하면 십중팔구 인증실패가 발생한다.

서버로 접속하기 전에, ssh에서 pam인증을 사용하기 위해 아래와 같이 해준다.

cp /usr/local/src/openssh-2.3.0p1/contrib/sshd.pam.generic /etc/pam.d/sshd

이제 인증방식도 제대로 설정이 되었다.
다음과 같이 하여 접속테스트 해본다.

[kang@maddog kang]$ ssh localhost
kang@localhost's password: 
Last login: Sat Jan 27 13:43:03 2001 from localhost
[kang@maddog kang]$ 

위에서 묻는 패스워드는 유닉스계정에서 자신의 암호를 입력하면 된다.
흠.. 어려운 내용없다.

윈도에서 리눅스의 SSH를 이용해 접속하고 싶다면 SecureCRT를 이용하면 좋다.
설정방법은 알아서 하도록..
리눅스에서 어떤 암호방식을 사용하고.. 대충 연결이 어떤 식으로 되는가보려면
ssh에서 -v옵션(verbose)을 사용하면 SecureCRT에서 설정시 도움이 될 것이다.

다음의 본인의 SecureCRT의 설정내용이다. 
인증방식은 password방식이다.


SecureCRT메인화면
Connect 다이얼로그
옵션화면 끝 << 추가부분 2001-07-14 >>
ssh에 관련된 명령어 사용법 정리 다음은 외부로 ssh접속하는 예이다. 접속하고자 하는 호스트의 계정은 @나 -l옵션으로 지정한다. [kang@ns 일기]$ ssh kang@dev2.dbakorea.pe.kr The authenticity of host 'dev2.dbakorea.pe.kr (211.41.23.252)' can't be established. RSA key fingerprint is 17:77:be:5d:d2:c9:8d:d9:a5:70:27:bf:5c:9c:95:cc. Are you sure you want to continue connecting (yes/no)? yes [처음 ssh연결시에만 표시된다] Warning: Permanently added 'dev2.dbakorea.pe.kr' (RSA) to the list of known hosts. .ssh디렉토리의 known_hosts2파일에 dev2호스트가 등록됨 kang@dev2.dbakorea.pe.kr's password: Last login: Sat Jul 14 22:38:48 2001 from 211.222.174.13 [kang@dev2 kang]$ l [kang@ns 일기]$ ssh kang@dev2.dbakorea.pe.kr kang@dev2.dbakorea.pe.kr's password: Last login: Sat Jul 14 23:22:30 2001 from 211.41.23.236 [kang@dev2 kang]$ [kang@dev2 kang]$ exit logout Connection to dev2.dbakorea.pe.kr closed. [kang@ns 일기]$ ssh -l kang dev2.dbakorea.pe.kr @대신 -l 옵션으로 지정해도 된다. kang@dev2.dbakorea.pe.kr's password: Last login: Sat Jul 14 23:25:54 2001 from 211.41.23.236 다음은 로컬에 존재하는 파일을 외부호스트에 복사하는 예이다. [kang@ns 학습할 것]$ scp make.txt kang@dev2.dbakorea.pe.kr:test [로컬에 있는 make.txt파일을 외부호스트dev2의 test디렉토리에 복사] kang@dev2.dbakorea.pe.kr's password: 비밀번호 입력 make.txt 100% |***************************************************| 70276 00:00 다음은 외부호스트에 존재하는 sample1.pc파일을 로컬로 복사하는 예이다. [kang@ns kang]$ scp kang@dev2.dbakorea.pe.kr:test/sample1.pc . kang@dev2.dbakorea.pe.kr's password: sample1.pc 100% |***********************************************************************| 2352 00:00 사실 외부호스트와 계정이름이 동일하다면 계정을 지정하지 않고 다음과 같이 해도 된다. [kang@ns kang]$ scp dev2.dbakorea.pe.kr:test/sample1.pc . kang@dev2.dbakorea.pe.kr's password: sample1.pc 100% |***********************************************************************| 2352 00:00 [kang@ns kang]$ 하위디렉토리까지 모두 복사하고 싶으면 cp명령어와 마찬가지로 -r옵션도 사용가능하다. 다음은 ftp기능을 해주는 sftp를 사용하는 예이다. [kang@ns 학습할 것]$ sftp kang@dev2.dbakorea.pe.kr ssh명령과 유사하다. Connecting to dev2.dbakorea.pe.kr... kang@dev2.dbakorea.pe.kr's password: 비밀번호입력 sftp> put gcc1.txt Uploading gcc1.txt to /home/kang/gcc1.txt sftp> get smsgw.log Fetching /home/kang/smsgw.log to smsgw.log sftp> << 추가부분 끝 >> << 추가부분 2001-11-15 >> Secure Shell관련사이트 OpenSSH (www.openssh.org) 가장 유명한 SSH사이트 유닉스계열 OpenSSH사이트 - 원래 FreeBSD용이나, 다른 OS에 포팅하는 개념으로 제공 FreeSSH (http://www.freessh.org/) 무료로 사용가능한 SSH툴들의 정보를 제공 Networkdimplicity (http://www.networksimplicity.com/openssh/) 윈도용 OpenSSH사이트 Openssh.org의 윈도버전 사이트 [윈도 SFTP 클라이언트(ftp기능)] 1. Cuteftp Pro(www.globalscape.com) 상용 - 제일 좋다.(ftp, sftp, ..) 2. WinSCP(http://winscp.vse.cz/eng) 무료 - 모든 윈도버전에서 사용가능(XP제외..) ssh서버만 사용가능 인스톨과정없음 3. Secure iXplorer(http://i-tree.org/ixplorer.htm) 무료 - ssh서버만 사용가능 인스톨필요 [ssh클라이언트(telnet기능)] 1. SecureCRT(www.vandyke.com) 상용 - 제일 좋다. 2. PuTTY(http://www.chiark.greenend.org.uk/~sgtatham/putty/) 무료 - 무료치고는 상당히 괜찮다.(권장) telnet, ssh모두 지원 인스톨필요없음 3. Tera Term Pro(http://hp.vector.co.jp/authors/VA002416/teraterm.html) 무료 - 사용이 좀 불편(SSH지원을 위해선 Plugin을 별도 설치해야함) TTSSH(ssh plugin) - http://www.zip.com.au/~roca/ttssh.html << 추가부분 끝 >>
Posted by eoseontaek

'[D-01] Linux' 카테고리의 다른 글

[Linux] 삼바(SAMBA)서버 사용법  (0) 2010.03.22
[Linux] SSH 설치 및 운영  (0) 2010.03.22
[Linux] find 명령 사용해 보기  (0) 2010.03.22
[Linux] rpm 명령 사용해 보기  (0) 2010.03.22
[Fedora10] Linux에 nfs 설치  (0) 2010.03.22
Posted by eoseontaek

Link : http://whiteat.com/zbxe/WhiteAT_etc/19508

Link : http://mwultong.blogspot.com/2006/10/find-linux-file-find-command.html


find 라는 명령으로, 디스크에 저장된 각종 파일/디렉토리를 검색할 수 있습니다.


파일 찾기 (파일명 검색)


현재 디렉토리에서, pl 확장자를 가진 모든 파일 찾기
find -name '*.pl'

(현재 디렉토리 밑의 하위 디렉토리까지 다 찾습니다.)


루트에서부터, 즉 전체 하드에서, pl 확장자를 가진 모든 파일 찾기
find / -name '*.pl'



전체 하드 디스크에서, 파일명이 ab 로 시작하는 모든 파일 찾기
find / -name 'ab*'



전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
find / -name '.bash*'



전체 하드 디스크에서, 파일명이 .bash 로 시작하는 모든 파일 찾기
+ ls 명령 형식으로 출력
find / -name '.bash*' -ls

뒤에 -ls 라는 옵션을 붙이면 됩니다.




디렉토리명 찾기


전체 하드 디스크에서, 디렉토리 이름이 et 로 시작하는 모든 디렉토리 찾기
find / -name 'et*' -type d


주의! 옵션 순서를 바꾸면 에러가 납니다.

'[D-01] Linux' 카테고리의 다른 글

[Linux] SSH 설치 및 운영  (0) 2010.03.22
[Linux] TFTP 서버 설치 및 사용  (0) 2010.03.22
[Linux] rpm 명령 사용해 보기  (0) 2010.03.22
[Fedora10] Linux에 nfs 설치  (0) 2010.03.22
[Fedora10] Linux에 Samba 서버 설치하기  (0) 2010.03.22
Posted by eoseontaek

Link : http://www.fduser.org/blog/63


RPM 명령 사용 해보기

<패키지 설치시 명령>

(1) 설명: 새로운 패키지를 설치하거나 업그레이드시 사용한다.
(2) 관련옵션
  -i : 새로운 패키지를 설치할 때 사용한다.  (--install)
  -U : 기존의 패키지를 새로운 버전의 패키지로 업그레이드할 때 사용하고 설치된 패키지가
       없을 경우 패키지를 설치를 한다.( -i 옵션과 같음)
  -F : 이전 버전이 설치되어 있는 경우에만 설치한다.(--freshen)
  -v : 메시지를 자세히 보여준다.
  -h : '#'기호로 표시해 준다.

  --force : 기존에 설치된 패키지와 관계없이 강제로 설치 한다.
  --nodeps : 의존성 관계를 무시하고 설치 한다.
  -vv : 메시지를 아주 자세히 보여준다.
  --oldpackage : 구버전으로 다운그레이드할 때 사용한다.
  --rebuilddb : 특정한 패키지 설치후에 rpm패키지로 검색했으나 나타나지 않을 때 rpm데이
                 터베이스를 업데이트한다

(3) 정리
  -ivh : 새로운 패키지 설치
  -Uvh : 업그레이드하거나 새로운 패키지 설치
  -Fvh : 이전 버전의 패키지가 있는 경우에만 패키지 설치

(4) 예제
# rpm -Uvh proftpd-1.2.9-1.9.i386.rpm
==> proftpd 패키지를 설치하거나 업데이트 한다.

#rpm -Fvh /usr/local/src/update/*.rpm
=> /usr/local/src/i386/에 있는 패키지들중 설치되어 있는 패키지들을 업데이트 한다.

<패키지 삭제시>

(1) 설명 : 시스템에 설치된 패키지를 삭제할때 사용된다.

(2) 옵션
  -e : 설치된 패키지를 제거한다.
  --nodeps : 제거시 의존성을 무시한다.

(3) 예제
# rpm -qa | grep sendmail  (sendmail 패키지 리스트를 확인)
   sendmail-devel-8.11.6-27.73
   sendmail-8.11.6-27.73
   sendmail-cf-8.11.6-27.73
# rpm -e sendmail-devel-8.11.6-27.73
=> sendmail-devel-8.11.6-27.73 라는 rpm 패키지를 삭제 한다.
삭제시 의존성 에러 메세지로 삭제가 안될 경우 --nodeps를 붙이면 강제로 삭제를 하는데 주의를 요한다.
# rpm -e proftpd --nodeps
=> proftpd 패키지에 의존성이 있더라도 무조건 제거한다.

<패키지 검색시>

(1) 설명: 설치된 패키지와 각 패키지에 포함된 파일들을 검색하여 확인해 볼수 있다.
(2) 관련옵션
  -q : 질의시에 꼭 써야하는 옵션이다. 패키지를 찾으면 패키지이름과 버전만 표시한다.
  -i : 설치된 패키지의 정보를 보여준다. -p옵션과 사용하면 패키지 파일정보를 보여준다.
  -l : 패키지에 포함된 모든 파일을 보여준다. 역시 -p와 사용하려면 정확한 파일명을 적는다.
      (--list)
  -p 파일명: 패키지의 파일에 대한 정보를 보여준다.  정확한 이름을 입력해야 한다.
  -a : 시스템에 설치된 모든 패키지목록을 보여준다. (--all)
      패키지명을 잘 모르는 경우에는 '| grep 패키지명'을 붙여 사용하면 유용하다.
  -f 파일명: 지정된 파일이 포함된 패키지를 출력한다.
  -c : 해당패키지의 설정파일이나 스크립트파일을 보여준다.
  -d : 해당패키지의 문서파일을 출력한다.
  -R : 어떤 패키지에 의존하고 있는지를 보여준다. (--requires)

(3) 사용예
# rpm -q sendmail
     sendmail-8.11.6-27.73
       => 설치된 sendmail의 패키지이름과 버전을 보여준다.
# rpm -qi sendmail
       => sendmail 패키지의 많은 정보를 보여준다.
# rpm -qa
       => 현재 설치된 모든 패키지를 보여준다.
# rpm -qa |grep sendmail
   sendmail-devel-8.11.6-27.73
   sendmail-8.11.6-27.73
   sendmail-cf-8.11.6-27.73
      => sendmail관련 패키지를 보여준다.
# rpm -ql sendmail
      => sendmail이 설치되어 있는 경로를 보여준다.
# rpm -qf /etc/sendmail.cf
sendmail-8.11.6-27.73
      => sendmail.cf 파일을 사용하는(관련된) 패키지를 보여준다.

# rpm -qd proftpd
      => proftpd 관련 문서파일을 보여준다.
# rpm -qR sendmail
      => sendmail이 의존하고 있는 패키지를 보여준다.

# rpm -qlp proftpd-1.2.7-3kr.i686.rpm
       => proftpd 패키지가 설치되는 파일들을 보여준다.

<패키지 검사시>

(1) 설명: 설치된 패키지 파일들을 검증한다. 보통 보안상 침입자에 의해 실행파일들이 권한획
            득을  위해 변조되는 경우가 있는데 이러한 것을 찾아낼 때 유용하다.
(2) 관련옵션
  -V : verify의 약자로 검증할때 쓰는 기본 옵션이다.
  -a : 모든 패키지를 검사한다.
(3) 사용예
# rpm -V sendmail
   .......T c /etc/aliases
   S.5....T c /etc/mail/local-host-names
      => sendmail 패키지를 검사
# rpm -Va
      => 모든 패키지를 검사한다.

(4) RPM 검증코드
  5 : MD5체크섬을 변경
  S : 파일의크기를 변경
  L : 심볼릭 링크를 변경
  T : 파일의 수정일을 변경
  D : 장치파일을 변경
  U : 파일사용자/소유자가 변경
  G : 파일 그룹이 변경
  M : 파일모드(권한과 파일형태)가 변경
  ? : 원인을 알 수 없거나 예측하지 못한 결과인 경우

Posted by eoseontaek
Posted by eoseontaek
Posted by eoseontaek

'[D-01] Linux' 카테고리의 다른 글

[Fedora10] Linux에 nfs 설치  (0) 2010.03.22
[Fedora10] Linux에 Samba 서버 설치하기  (0) 2010.03.22
[Fedora10] Fedora 10 네트워크 설치  (0) 2010.03.19
텔넷 접속 프로그램  (0) 2009.12.27
부팅디스트 만들기  (0) 2009.12.26
Posted by eoseontaek

Link : http://wiz.pe.kr/448


1. 부팅이미지 다운로드
http://mirrors.fedoraproject.org/publiclist//Fedora/ 에서 Fedora의 Version과 Architecture를 확인한 후, Fedora-10-i386-netinst.iso 를 다운받는다.

2. 설치
다운 받은 iso 이미지를 구워서 DVD Rom에 넣고 DVD Rom 부팅이 가능하게 설정한 후 서버를 부팅한다.

2.1 설치화면 로딩
정상적으로 부팅이 된다면 설치옵션을 선택하는 화면이 나타난다. Fedora 10 시스템을 설치 할 것이기 때문에 첫번째 "Install or upgrade an existing system"을 선택하고 Enter를 쳐서 넘어 간다. 선택하지 않으면 60초 후에 자동으로 다음 화면으로 진행된다.

2.2 언어 선택
DVD나 CD로 설치하는 경우 언어 설정은 그래픽모드에 들어가서 나오지만 네트워크 설치 시에는 그래픽 모드 이전에 설정하게 되어 있다. 한글을 사용하기 위해 "Korean"을 선택하고 넘어 간다.

한국어 사용에 대한 경고 문구가 뜨지만 그냥 OK를 누르고 넘어 간다.

2.3 키보드 선택
키보드 선택 화면은 Default인 "us"를 선택하고 넘어간다.

2.4 설치 방법 선택
네트워크를 이용해 파일을 다운받아 설치할 것이기 때문에 URL을 선택한다.

2.5 네트워크 설정
네트워크 설치기 때문에 그래픽모드가 시작되기 전에 네트워크 관련 설정을 진행합니다. 그래픽모드에서 한번 더 설정 확인을 할 수 있습니다. IPv6 지원을 해제하고 DHCP를 이용했다. 설치 환경에 따라 설정 하면 된다.
"Manual configuration"을 선택하면 IP 및 DNS 설정 등을 할 수 있는 화면으로 넘어 간다.

2.6 리포지터리(소스 저장소) 설정
설치에 사용 할 패키지가 있는 리포지터리(저장소)를 설정 하는 화면이다. 보통 CD 이미지를 다운받은 사이트에서 마지막 iso 대신 os 로 변경하면 접근이 가능하다. 

2.7 그래픽 모드 설치 실행
잠시 명령어가 출력된 후 그래픽모드 설치화면이 시작된다. 이 화면에서 다음을 누르고 넘어간다.

2.8 드라이브 초기화 관련 경고
파티션이 없는 시스템의 경우 위 화면과 같은 경고 창이 출력 된다. 그냥 "예(Y)"를 선택한다.

2.9 네트워크 설정 확인
편집을 눌러서 IP와 IPv6에 대한 설정이 가능하다. 예제에서는 IPv6 지원을 해제하고, DHCP로 IP를 할당 받기 때문에 동적 IP 설정(DHCP)로 설정을 했다. 호스트 명은 fedora.wiz.pe.kr 로 설정을 했다.
설치 환경에 맞는 설정을 하면 된다. 여기에 설정한 정보가 시스템에 기본으로 적용된다.

2.10 시간대 설정
서버의 기준시간은 대한민국이기 때문에 "아시아/서울(Seoul)"과 UTC 맞춤 옵션을 기본으로 하고 다음으로 넘어 간다.

2.11 관리자(root) 계정 암호 설정
시스템 관리를 위한 root 계정의 암호를 입력한다.

2.12 HDD 파티션 설정
디폴트 레이아웃을 만들기로 선택하고 넘어 간다. Windows와 멀티 부팅을 하거나 중요데이터가 있을 경우 주의 해야 한다.  HDD의 데이터가 모두 날아갈 수 있다.

"다음"버튼을 클릭하면 정말 적용을 할지 여부를 확인하는 창이 뜬다. 실행을 하려면 "디스크에 변경 사항 기록(W)"버튼을 누르면 된다.

설치이미지를 HDD로 전송하고 파티션을 새로 설정하는 작업을 진행한다. 작업이 끝날 때까지 기다리면 된다.

2.13 리포지터리(소스 저장소) 수정
텍스트 모드에서 설정한 저장소에 접근이 불가능 할 경우 오류 메시지가 나타난다. 편집을 눌러서 다른 곳으로 수정하면 된다.

"리포지터리 URL" 만 수정하면 된다. 계속 오류가 나면 네트워크 상태를 확인 후 재설치해야 한다.

 2.14 설치 패키지 설정 화면
우선 기본 패키지 설정 화면에서 위 화면처럼 시스템 설정을 "소프트웨어 개발"로 선택하고, 리포지터리 설정은 "Fedora"만 설정 한다. 그리고 "지금 사용자 설정"을 선택해 준다. 이렇게 선택해야 다음 화면에서 상세한 패키지 설치 구성이 가능하다. 설정이 되면 다음을 눌러서 상세 설정 화면으로 이동한다.

상세 설정 화면에서는 아래와 같이 설정 한다. 데스크탑 환경 및 관련 없는 기능은 최대한 제거 하고 서버로 사용 하기 위한 설정 이다.

데스크탑 환경 - 모두 체크 해제
응용 프로그램 - 모두 체크 해제
개발용 도구 - 개발용 도구, 개발용 라이브러리 만 기본으로 선택 후 나머지 해제
기반 시스템 - X윈도우 시스템, 전화연결 네트워크 선택 해제 후 나머지는 모두 기본선택 사용
언어 지원 - 모두 체크 해제

2.15 설치화면
설치가 진행이 된다.

2.16 설치 완료
이렇게 설치는 완료 된다.
재부팅 된 후에 기본 설정을 하는 부분이 있다.
Posted by eoseontaek

1.Host IP 주소를 입력한다.



2. Charater set translation on received data를 UTF-8로 설정한다.
 


3. Open을 누르면 아래와 같은 터미널 창이 나온다.
    login ID와 password를 입력 후, Host에 접속한다.
   




PyTTy 다운로드
Link : http://www.putty.nl/




Posted by eoseontaek


#man mkbootdisk    - mkbootdisk의 사용법







Posted by eoseontaek
Posted by eoseontaek


Link : http://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/

남상규님이 작성하신 리눅스 커널 분석






'[D-01] Linux' 카테고리의 다른 글

부팅디스트 만들기  (0) 2009.12.26
The Linux Serial Programming HOWTO  (0) 2009.12.11
Basic Graphics Programming With The Xlib Library  (0) 2009.11.26
X 윈도우 프로그래밍 기초과정  (0) 2009.11.26
The Network File System  (0) 2009.11.18
Posted by eoseontaek
Posted by eoseontaek
Posted by eoseontaek
Posted by eoseontaek
이전버튼 1 2 3 4 5 이전버튼