레이블이 기타인 게시물을 표시합니다. 모든 게시물 표시
레이블이 기타인 게시물을 표시합니다. 모든 게시물 표시

2010년 9월 12일 일요일

USB Memory Stick Booting

USB 메모리로 부팅하여 Debian 설치하기 (간단하게)

  • USB 메모리로 부팅하여 Debian을 설치하려면 다음과 같이 합니다.

    http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/
    위의 hd-media 디렉토리에서 boot.img.gz을 내려 받은 후, 다음과 같이 합니다.

    # zcat boot.img.gz > /dev/sdc
    이제 USB 메모리를 mount한 후에, 데비안 네트워크 설치 ISO, 혹은 비지니스카드 ISO를 USB 메모리에 추가로 복사하면 됩니다.
    이제 이 USB 메모리로 부팅할 수 있습니다.

    이렇게 하면 다른 부팅 설정 없이 USB 메모리로 부팅할 수 있으나, 만들어진 부팅 USB 메모리는 USB 메모리 전체를 사용하지 않은 상태입니다.

USB 메모리로 부팅하여 Debian 설치하기 (직접 만들기)

  • 간단하게 boot.img.gz을 USB 메모리에 쓰면 부팅이 가능하나, USB 메모리를 모두 사용하지 않게 됩니다. 직접 파티션을 만들어 작업을 해야 합니다.

    아래의 USB-Zip 또는 USB-HDD로 부팅하게 만든후 debian 설치 파일을 복사합니다.

  • USB 메모리를 집드라이브 USB-Zip으로 만들기

    USB 메모리로 부팅할 때, 일부 오래된 컴퓨터에서 USB-HDD로는 부팅하지 못하고 USB-Zip만 부팅이 가능한 경우가 있습니다.

    집드라이브는 64개의 헤드, 32개의 섹터로 구성되어 있고 파티션 번호가 4입니다.
    따라서, USB 메모리를 집드라이브로 인식하려면 64개의 헤드, 32개의 섹터로 구성되어야 하며, 메모리 크기에 맞게 실린더를 정해야 합니다.

    데비안에서 패키지 syslinux를 설치하면 mkdiskimage를 사용할 수 있습니다. 사용방법은 다음과 같습니다.

    # mkdiskimage -4 /dev/sdc 0 64 32
    /dev/sdc는 mount되지 않은 USB 메모리로 파티션이 아닌 USB 메모리 전체를 의미합니다. 하드디스크와 혼동하지 않게 미리 # fdisk -l 로 이름을 확인합니다.
    -4는 파티션 4번으로 설정하게 합니다. (이 파티션으로 부팅 설정 됩니다.)
    0은 메모리에 맞게 실린더를 정하는데 프로그램이 자동으로 정해줍니다.
    64는 64개의 헤드를, 32는 32개의 섹터를 의미합니다.

    이렇게 만들어진 USB메모리에 부트 로더를 설치합니다. mount되지 않은 상태에서 sylinux를 실행합니다.
    # syslinux /dev/sdc4
    USB 메모리 루트에 ldlinux.sys가 생깁니다.

  • USB 메모리를 하드 디스크 USB-HDD로 만들기

    # fdisk /dev/sdc
    여기에서 FAT16 또는 FAT32로 파티션을 만들고 Boot를 설정하여 부팅할 수 있게 합니다.

    mkdosfs은 패키지 dosfstools 에 있습니다. 도스용으로 포맷합니다.
    # mkdosfs /dev/sdc1


    syslinux로 부트로더를 설치합니다. (패키지 syslinux와 mtools가 설치 되어 있지 않으면 설치합니다.)
    # syslinux /dev/sdc1
    USB 메모리 루트에 ldlinux.sys가 생깁니다.

  • 데비안 설치 파일 복사하기

    위에서 USB 메모리를 USB-Zip 또는 USB-HDD로 부팅가능하게 만든 후 debian 설치 파일을 USB 메모리에 옮깁니다.

    먼저 USB 메모리를 mount합니다.

    http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/
    위에서 boot.img.gz을 내려 받은 후 압축을 풉니다.
    $ wget http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/boot.img.gz
    $ gunzip boot.img.gz
    # mount -o loop boot.img /media/tmp
    기존 USB 메모리의 ldlinux.sys를 이름 변경한 후 파일을 복사합니다.
    # mv /media/disk/ldlinux.sys /media/disk/ldlinux.old
    # cp -r /media/tmp/* /media/disk


    이제 USB 메모리를 mount한 후에, 데비안 네트워크 설치 ISO, 혹은 비지니스카드 ISO를 USB 메모리에 추가로 복사하면 됩니다.
    이제 이 USB 메모리로 부팅할 수 있습니다.

    참고)
    http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/hd-media/ 에서 boot.img.gz을 풀어서 옮기지 않고 vmlinuz 와 initrd.gz만 USB 메모리에 옮기고, syslinux.cfg를 USB 메모리에 다음의 내용을 입력후 저장할 수 있습니다.
    default vmlinuz
    append initrd=initrd.gz
    이어 데비안 네트워크 설치 ISO, 혹은 비지니스카드 ISO를 USB 메모리에 추가로 복사하면 USB 메모리로 Debian을 설치할 수 있으나 설치 초기 화면을 볼 수 없어
    Gnome Desktop으로만 설치되며, 복구용으로 활용할 수 없습니다.

    이렇게 설치만 할 수 있게 USB 메모리를 만들려면
    http://ftp.nl.debian.org/debian/dists/lenny/main/installer-i386/current/images/netboot/debian-installer/i386/
    위의 neboot 디렉토리의 initrd.gz 과 linux를 USB 메모리에 옮긴 후 syslinux.cfg를
    다음과 같이 합니다.
    default linux
    append initrd=initrd.gz
    이렇게 하면 굳이 데비안 네트워크 설치 ISO, 혹은 비지니스카드 ISO를 복사할 필요가 없습니다.
참고) SYSLINUX의 syslinux.cfg
  • SYSLINUX는  MS-DOS/Windows FAT 파일시스템에서  리눅스로 부팅할 수 있게 하는  boot loader입니다. FAT 파일 시스템에 설치하면 boot sector를 교체하고 root directory에 ldlinux.sys를 설치합니다. SYSLINUX는 처음 리눅스를 설치하려 하거나, 복구용등으로 활용됩니다.
  • SYSLINUX로 처음 부팅하면 화면에 boot: 만 보입니다. 여기에서 직접 커널 파일명을 입력을 합니다. 화면에 boot: 만 보이면 당황하게 되므로, 다음 차례로 자동으로 진행하거나 또는 화면을 보고 선택할 수 있게 해야 합니다.
    이러한 설정은 syslinux.cfg에서 하게 됩니다.

    SYSLINUX가 부팅할 때 syslinux.cfg를 다음 차례대로 읽어 드립니다. 먼저 보이는 syslinux.cfg 설정대로 진행합니다.
    /boot/syslinux/syslinux.cfg
    /syslinux/syslinux.cfg
    /syslinux.cfg
    syslinux.cfg 파일 안에 여러 설정 항목이 있습니다.  특별하게  / 또는 \로 디렉토리를 지정하지 않으면 syslinux.cfg을 읽은 디렉토리에서 먼저 찾게 됩니다.

    syslinux.cfg 안에 default 항목이 있으면 boot: 화면에 default 항목이 자동으로 입력된것 처럼 다음 차례로 진행하게 됩니다. 따로 설정하지 않으면 default 항목이 기본적으로 linux로 설정되어 있습니다. default 항목을 menu.c32 (또는 vesamenu.C32)로 하여 메뉴 구성을 할 수 있습니다.
  • Debian(lenny)의 boot.img.gz의 syslinux.cfg은 다음과 같습니다.

    # D-I config version 1.0
    include menu.cfg
    default vesamenu.c32
    prompt 0
    timeout 0

    include : 설정을 다른 파일에 따로 기록하고 읽어 드립니다. 여기서는 menu.cfg을 읽습니다.
    default : 부팅하면서 화면에 boot: 보일 때 vesamenu.c32를 입력한 것으로 간주합니다.
    prompt : 부팅하면서 화면에 boot:을 감춥니다.
    timeout : 부팅하면서 곧바로 실행합니다.
    여기서는 부팅하면서 곧바로 감추어진 boot: 에 vesamenu.c32를 입력한 것이 됩니다. 따라서 이미 읽어드린 menu.cfg을 바탕으로 화면에 메뉴를 보여줍니다.

    내 입맛에 맞게 다음과 같이 메뉴를 추가하였습니다. 또한 필요한 파일 chain.c32를 USB 메모리에 복사하였습니다.

    $ cp /usr/lib/syslinux/chain.c32 /media/disk/

    syslinux.cfg에 다음과 같이 바꾸었습니다.

    # D-I config version 1.0
    include menu.cfg
    default vesamenu.c32
    prompt 0
    timeout 0
    LABEL myinstall
      MENU LABEL Gnome Install
      KERNEL /netboot/linux
      APPEND initrd=/netboot/initrd.gz
    LABEL hd00
      MENU LABEL 1st hard drive
      KERNEL chain.c32
      APPEND hd0
    LABEL hd12
      MENU LABEL 2nd Partition from 2nd Hard
      KERNEL chain.c32
      APPEND hd1 2

    LABEL : 부팅시 화면에 boot:이 보일 경우 직접 입력할 이름을 기록합니다.
    MENU LABLE : 메뉴 화면에서 보여줄 메뉴 이름입니다.
    KERNEL : 커널파일 이름을 기록합니다. chain.c32로 다른 부트로더로 변경할 수 있습니다.
    APPEND : 커널에 추가할 옵션을 기록합니다.
    hd0 : 첫번째 하드 디스크에서 부팅합니다. 즉 첫번 째 하드 디스크의 MBR로 부팅하는 것입니다.  hd0 0 과 같습니다.
    hd1 2 : 두번째 하드 디스크의 두번 째 파티션에서 부팅하는 것입니다.
참고) install-mbr

  • MBR 오류로 부팅이 안되면 다음과 같이 합니다.
    # install-mbr /dev/sdb
    install-mbr은 패키지 mbr에 있습니다.
  • install-mbr로 윈도우 부팅시 MBR 오류로 부팅이 안되면 다음과 같이 활용합니다. # install-mbr -r /dev/sda
    MBR 지우는 명령입니다.

    2007년 10월 1일 월요일

    Blogger의 웹페이지 폭을 넓게

    구글의 Blogger의 웹페이지 폭을 늘여 쓸 수 있습니다. 참고
    블로그가 2단 구성 아래와 같이 5개의 구성요소가 있습니다. (3단일 경우는 다릅니다.)
    1. Outer
    2. Header.
    3. Post area ("Main").
    4. Sidebar.
    5. Footer.
    유의해야 하는 것은 Outer안에 post와 sidebar가 들어가는데 서로 어느정도 간격이 있어야 합니다. 예를 들면 Outer를 800으로 하면 post를 600과 sidebar를 200으로 설정하면 안되고, 간격을 고려하여 post나 sidebar를 줄여야 합니다. Header와 Footer는 Outer에 맞게 또는 취향에 따라 다르게 정하면 됩니다.
    2단구성의 Blogger에서 게시물을 작성할 때 HTML 편집을 누르고, 아래와 같이 붉은색 숫자를 변경하면 됩니다.

    #header .description {
    margin:0 5px 5px;
    padding:0 20px 15px;
    max-width:700px;
    text-transform:uppercase;
    letter-spacing:.2em;
    line-height: 1.4em;
    font: $descriptionfont;
    color: $descriptioncolor;
    }


    #outer-wrapper {
    width: 660px;
    margin:0 auto;
    padding:10px;
    text-align:left;
    font: $bodyfont;
    }

    #main-wrapper {
    width: 410px;
    float: left;
    word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
    overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
    }

    #sidebar-wrapper {
    width: 220px;
    float: right;
    word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
    overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
    }

    #footer {
    width:660px;
    clear:both;
    margin:0 auto;
    padding-top:15px;
    line-height: 1.6em;
    text-transform:uppercase;
    letter-spacing:.1em;
    text-align: center;

    리눅스 팁


    rsync로 백업
    • rsync -avn --delete /media/hda3/files-my/ /media/hdb1/files-my/
      -a : archive옵션 -a는 recursive, coyy symlinks, preserve group and owner 기능을 합니다.
      즉 하위 폴더 포함, 심볼릭 링크파일 포함, group과 owner의 파일속성 유지입니다.
      -vv : verbose옵션 -v보다 더 자세한 설명을 보여줍니다.
      -n : dry-run옵션 -n은 실제로 파일을 복사하지 않고 보여주기만 합니다.
      -- delete : /media/hda3/files-my/ 의 파일이 지워졌으면 /media/hdb1/files-my의 파일도 지웁니다.

    • -avn옵션으로 확인 후 실제로 파일을 백업합니다.
      rsync -av --delete /media/hda3/files-my/ /media/hdb1/files-my/
    evolution 백업 참고

    evolution은 자료를 다음과 같이 저장합니다.
    • $HOME/.evolution (data)
    • $HOME/.gconf/apps/evolution (account settings)
    • $HOME/.gnome2_private/Evolution (passwords)
      패스워드는 암호화되지 않고 just base64 encoded
    • $HOME/.camel_certs (SSL Certificates)
    evoution을 백업합니다.
    • 먼저 evolution의 휴지통 비우기를 합니다.
      필요없는 파일 예를 들어 ~/.evolution/cache/http 및 ~/.evolution/mail/pop/계정/cache 각각 제거합니다.

    • 기존 운영체제에서 evolution과 관련 프로세스 (Evolution Data Server, Evoution Alarm Notify)를 중지합니다.
      $ evolution --force-shutdown

    • Gnome에서 빠져나와서 gconf를 중지합니다.
      먼저, 그놈에서 빠져나오고 gconf가 실행되고 있는지 보고 중지합니다.
      $ ps ax | grep gconf
      $ gconftool-2 --shutdown

      Home 디렉토리에서 다음과 같이 파일을 백업합니다.
      $ tar -czvf evolution-backup.tar.gz .evolution .gnome2_private/Evolution .camel_certs
      기존운영체제에서 GConf에 저장된 evolution 설정을 파일로 저장하고 백업합니다.
      $ gconftool-2 --dump /apps/evolution > my-file.xml
      마지막으로 위의 파일을 하나로 묶어 저장하고 필요없는 파일을 지웁니다.
      $ tar -czvf evolution.backup-2007.09.12.etch.for.transfer.tar.gz evolution-backup.tar.gz my-file.xml
      $ rm evolution-backup.tar.gz my-file.xml

      또는 간단히 쉘스크립트로 만들어 실행합니다.
      #!/bin/bash
      gconftool-2 --shutdown
      tar -czvf evolution-backup.tar.gz .evolution .gnome2_private/Evolution .camel_certs
      gconftool-2 --dump /apps/evolution > my-file.xml
      tar -czvf evolution.backup-2007.09.12.etch.for.transfer.tar.gz evolution-backup.tar.gz my-file.xml
      rm evolution-backup.tar.gz my-file.xml

      기존 시스템에서 백업 및 기존 시스템에서 복구 목적이면, 간단히 다음과 같이 압축 백업하고, 나중에 필요시 복구합니다.
      $ tar -czvf evolution.backup-2007.09.12.etch.for.transfer.tar.gz .gnome2_private/Evolution .camel_certs .gconf/apps/evolution
    evolution 복구하기
    새 운영체제를 설치한 상태라면 새 운영체제의 evolution을 실행해보지 않은 상태에서 복구하게되면 기존상태를 그대로 복구활 수 있습니다.
    • 기존 운영체제에서 evolution과 관련 프로세스 (Evolution Data Server, Evoution Alarm Notify)를 중지합니다.
      $ evolution --force-shutdown

    • Gnome에서 빠져나와서 gconf를 중지합니다.
      먼저, 그놈에서 빠져나오고 gconf가 실행되고 있는지 보고 중지합니다.
      $ ps ax | grep gconf
      $ gconftool-2 --shutdown

      미리 홈 디렉토리에 백업파일을 복사한 후에, 이제 복구합니다.
      $ tar -xzvf evolution.backup-2007.09.12.etch.for.transfer.tar.gz
      $ tar -xzvf evolution-backup.tar.gz
      $ gconftool-2 --load my-file.xml
      $ rm evolution.backup-2007.09.12.etch.for.transfer.tar.gz evolution-backup.tar.gz my-file.xml
    이제 evoution을 실행하면 기존 메일, 연락처등, 또한 계정설정도 모두 원상태로 복구됩니다.



    프로그램 자동실행하기

    KDE 또는 GNOME에서 autostart 폴더에 /usr/share/applications의 설정파일(*.desktop)을 넣으면 자동으로 실행됩니다

    • KDE
      ~/.kde/Autostart/sample.desktop
      모든 사용자에서 자동실행하려면
      /usr/share/autostart/sample.desktop
    • GNOME
      ~/.config/autostart/segio.desktop
      모든 사용자에서 자동실행하려면
      /usr/share/gnome/autostart/sample.desktop
    패키지
    • 어떤 패키지가 파일을 사용하고 있는지 보려면, 예를 들어 dhclient.conf를 사용하는 패키지는 다음과 같이 알아 볼 수 있습니다.
      $ dpkg --search /etc/dhclient.conf
    • 어떤 파일이 설치되어 있는지 보려면
      $ dpkg -L dhcdbd
    synaptic
    • log 파일은 /root/.synaptic/에 있습니다.

    시디롬 CD ROM에 대해서

    CD 규격은 다음과 같이 바뀌었습니다.


    CD

    1980년대 초에 Sony와 Philips가 Compact Disc (CD)를 만들었습니다.

    CD-DA (Digital Audio)
    RED Book ('82)


    오디오 CD에 대해서 정한 것입니다. wav 파일이 바로 CD-DA의 데이터 형태입니다.
    1개에서 99개까지의 트랙을 만들 수 있어 최대 99곡까지 담을 수 있으며, 44.1 KHz와 16비트 스테레오의 디지털 데이터를 수록할 수 있습니다.

    Lead Out에 실제로는 1분 30초동안 계속 "0"만을 저장해서, CD 플레이어로 하여금 마지막이라는 것을 알릴수 있도록 제작되어야 합니다.
    디지털 오디오가 들어가는 프로그램 영역에는 위에서 밝혔듯이 최대 99개의 트랙을 만들 수 있습니다.
    Lead in, Program Area, Lead out 세 부분을 "Session" 이라고 합니다.

    CD-ROM
    Yellow Book ('84)


    1984 년에 컴퓨터 데이터를 저장하기 위해 CD-ROM (Read Only Memory)를 만들었습니다. 대부분 내용이 레드북과 동일하지만, 레드북 규격이 데이터 저장에는 적당한 구조가 아니므로 1섹터당 2352 byte 를 저장하고 이 섹터는 분:초:섹터로 표시하도록 하였습니다.
    Error Correction Code (ECC), Error Detection Code (EDC), Mode 1과 Mode 2를 정했읍니다.

    Mode 1
    섹터안에 Error Correction Code가 있어서 사용자는 섹터안에서 2,048 bytes만 사용할 수 있읍니다. 이러한 ECC로 텍스트나 프로그램과 같이 1 비트라도 에러가 있으면 안되는 경우에 적합합니다.

    Mode 2
    ECC 가 없어서 섹터안에 2,336 bytes를 저장할 수 있읍니다. ECC가 없으므로 에러가 있어도 크게 문제되지 않는 그래픽, 오디오, 비디오 데이터를 저장할 때 사용합니다. 비디오 시디(Video CD)가 CD-ROM Mode 2를 사용하고 있습니다.

    그러나 세세한 사항은 CD-ROM 개발자에게 남겨 놓았습니다. 이로 인해 초기에 각자 나름의 파일 구조를 만들어 사용하게 되어 서로 호환이 어려었읍니다. 이를 해결하고자 새 규격이 마련되는데 이 것이 바로 ISO 9660입니다.

    ISO 9660

    하나의 CD-ROM은 한 개의 세션 또는 여러 개의 세션으로 구성되어 있고, 각 세션의 16번째 섹터에 PVD (Primary Volume Descriptor)가 있습니다.
    PVD는 "CD001"라는 문자로 시작하여 이 저장매체가 CD-ROM이라고 컴퓨터에 알려 줍니다. 또한 경로 테이블이라고 디렉토리 정보를 담고 있는 부분이 있어서, 파일이 어디에 있는지 기록하고 있습니다.

    3 단계로 구성되어 있읍니다.

    1 단계
    대부분의 운영체제 (도스 포함)에서 읽어들일 수 있읍니다.
    도스의 파일과 같이 파일이름이 8문자, 확장자는 3문자 까지 가능하며, 사용할 수 있는 문자는 "A-Z", "0-9", "_"만 사용할 수 있읍니다. 하위 디렉토리는 8단계까지만 가능합니다. 파일은 연속된 섹터로 저장됩니다.
    2 단계
    1 단계 보다 더 제약이 적어, 긴 파일 이름을 사용할 수 있고, 사용할 수 있는 문자도 제약이 없읍니다. 단지 각각의 운영체제에서 지원하는 파일 형식에 의해서 기록되어지므로 도스는 호환되지 않습니다. 디렉토리도 기존의 8단계에서 32단위 까지 가능합니다.
    3 단계
    파일을 연속된 섹터가 아닌 형태로 저장할 수 있습니다.. Packet Writing등의 소프트웨어에서 사용됩니다. 호환성이 많이 적어집니다.

    ISO 9660을 기초로 해서 여러 가지가 생겼습니다.

    Rock Ridge
    ISO 9660 Level 1 파일 시스템의 제한으로 유닉스나 리눅스의 긴 이름을 저장할 수 가 없습니다. Rock Ridge extension을 만들어 긴 이름을 저장할 수 있도록 합니다.

    Joliet
    ISO 9660 Level 1 파일 시스템의 제약을 극복하려고 Rock Ridge extension을 채택하지 않고 자체적으로 만든 파일시스템입니다.
    윈 도우 95에서 에서 긴 파일 이름을 사용하여 CD에 기록할 수 있으며, 이후 윈도우 버전에서 읽을 수 있습니다. 여기에는 Unicode 국제 문자 세트도 사용할 수 있읍니다. 공백을 포함하여 최재 64 문자까지 기록할 수 있습니다.
    DOS 및 이전 버전의 윈도우에서도 CD를 읽을 수 있도록 긴 파일 이름에 대해 DOS에서 사용하는 방식도, 8문자 파일이름과 3문자 확장자, 기록할 수 있습니다. 또한 DOS 이름 대신에 ISO 9660 표준에 맞는 파일 이름도 만들 수 있습니다.
    ISO9660 에서 각 세션의 16번째에 PVD가 있습니다. 여기에서 경로 테이블이 있어서 파일이름이 8문자 확장자 3문자의 디렉토리 구조를 인식할 수 있게 됩니다. PVD의 뒤에 있는 SVD(Supplementary Volume Descriptor : 부 볼륨 기술자)을 찾아 참조합니다. 이로써 파일 이름이 64문자까지 확장된 디렉토리 구조를 인식하게 됩니다. 즉 디스크상에는 한 개의 파일에 대하여 2개의 디렉토리 구조가 존재하는 것으로, ISO9660만 지원하는 OS에서는 PVD만을 참조하고, Joliet에도 지원하는 OS에서는 먼저 SVD부터 참조를 하는것입니다. 다만 어느쪽으로 디렉토리를 찾아가도 같은 파일을 가리키고 있기 때문에 같은 파일을 2번 기록할 필요없이 사용할 수 있게 되는 것입니다.

    따라서 CD에 저장시에 파일 시스템을 ISO 9660 Level 1 파일 시스템 + Rock Ridge로 합니다. 윈도우와 호환을 인하여 추가로 Joliet을 선택하여 저장합니다.

    CD-R
    Orange Book ("86-"90)


    레 드북과 옐로우북의 규격을 벗어나지 않으면서, Track At Once(TAO), Disk At Once(DAO), Multi-Session, CD-RW, Packet Writing등에 관한 물리적인 기록방법에 관한 규정도 포함되어 있습니다.
    레드북이나 옐로우북과 동일한 구조에 PCA와 PMA가 Lead in 앞에 추가된 형태입니다.


    CD는 가운데에서 바깥 쪽으로 PCA, PMA, Lead In, 실제로 데이터가 저장되는 Program Area, Lead Out의 다섯 부분으로 이루어져 있습니다.
    여기서 Lead In과 Lead Out은 꼭 한 개일 필요는 없읍니다. 여러 개가 있으면 바로 멀티세션(Multisession)이 되는 것입니다.



    PCA 는 Power Calibration Area의 약자로, 레코딩을 시작하기 전에 레코딩을 테스트하는 부분입니다. 사용하는 레코더가 가장 알맞는 레이저 빔의 강도를 결정하기 위해 시험적으로 레코딩을 합니다. 싸구려 CD를 사용하는 경우에 이 부분에 문제가 있어서 "Power Calibration Error"가 생기기도 합니다.

    PMA는 Programmable Memory Area의 약자로, 레코딩하고 있는 데이터의 정보를 임시로 저장하는 부분입니다. 보통 시디를 닫는다고 하는 말 (finalize라고도 하지요.)은 이 PMA에 저장되어 있는 데이터의 정보 (TOC : Table of Contents)를 Lead In 부분으로 옮기는 것입니다. 이렇게 CD를 닫아 버리면 더 이상의 추가적인 레코딩은 할 수 없겠지요.

    Program Area란 첫 번째 track부터 마지막 track까지가 저장하고자 하는 데이터가 저장되는 부분입니다. 실제로는 각각의 Tract Data안에 여러 섹터가 있고 여기에 데이터가 저장됩니다.

    Disk at Once와 Track at Once의 비교

    DAO는 Disk at Once, 즉 디스크 한 장을 한번에 굽는 것이고, TAO는 Track at Once로 디스크 한 장을 트랙 단위로 굽는 것을 뜻합니다.
    TAO가 먼저 사용되었으며, TAO에서 발생하는 몇 가지 문제점을 해결하기 위하여 사용된 방식이 DAO입니다.
    가 장 기본적인 TAO 방식은 오디오 CD를 구울 때 사용하는 것으로, Audio CD 구조는 Red Book 규격으로 되어 있으며, 구조는 [Lead In] [Audio Track1] [Audio Track2] ............. [Lead Out]처럼 되어 있습니다. 이는 한곡을 트랙 단위로 나누어 사용하며, 트랙과 트랙간에 2초 간격으로 오디오 데이터를 기록합니다.
    보 통 TAO 방식은 Audio CD 제작 시에만 사용되며, 레이저빔이 한 트랙별로 On/Off 를 반복하는 방식입니다. 여기서 Off된 구간이 오디오 갭(Gap)으로 나타나게 되는 것으로, 원본의 이미지와는 달리 Off된 구간이 존재하기 때문에 원본과 같은 사본을 기대할 수 없습니다.
    이 방식으로 레코딩하면 먼저 레코딩할 데이터를 시디에 기록하게 됩니다. 이 때 시디의 PMA(Programmable Memory Area)에 레코딩하고 있는 데이터의 정보 (TOC : Table of Contents)를 임시로 저장하게 됩니다. 데이터를 모두 시디에 기록하였으면 마지막으로 이 PMA에 저장되어 있는 데이터의 정보 (TOC : Table of Contents)를 Lead In 부분으로 옮깁니다. 이 부분이 보통 말하는 시디를 닫는다고 하는 말 (finalize라고도 하지요.)에 해당되지요. 마지막으로 Lead out이 만들어집니다. 1개에서 99개까지의 트랙을 만들 수 있습니다. 트랙을 기록할 때마다 레이저 빔이 멈추고 다시 동작하기 때문에 마스터링 시디를 만들기에 적당하지 않겠지요.

    반 면에 DAO 방식을 사용한다면 [Lead In] [All Audio Track] [Lead Out] 비교적 간단한 구조로, TAO에서 모든 트랙을 구운 후, 리드아웃을 하기 전에 TOC의 갱신 작업을 하는데 비하여, DAO는 CD의 첫 부분에 있는 TOC 작업부터 순서대로 시작하는 것입니다.
    직접 Copy시 일반적으로 사용하는 방법으로 DAO로 만든 CD는 하나의 Session으로 구성되며 레이저를 중단하지 않고 처음부터 끝까지 연속으로 레코딩합니다. 따라서 Track간 Gap을 만들지 않고 PQ 채널을 그대로 복사할 수 있기 때문에 Master CD 제작, 게임 CD 백업 시에는 이 방식을 사용해야 합니다.
    TAO처럼 트랙단위로 굽지 않기 때문에, Audio CD를 만들 때 이 방식을 이용하여 원하는 트랙간에 2초간의 간격을 제거할 수도 있습니다.
    Multi session 같이 나중에 Data를 추가하려면 이 방식을 사용하면 절대 안됩니다. 그것은 Lead-in(TOC)을 기록한다는 것은 Closing 작업을 의미하며 모든 기록을 종료하여 완전한 CD를 만든다는 것이기 때문에 이 방식을 사용하면 더이상 Data를 추가할 수 없습니다.
    이 DAO는 오버버닝에서도 언급이 되는 중요한 기능입니다.

    Multi-Session

    세션이란 시디 구조인 PCA, PMA, Lead In, Program Area, Lead out을 합한 것이 하나의 세션(session)이 됩니다. 멀티 세션이한 한장의 시디에 여러 개의 세션을 만드는 경우입니다.
    각 세션이 레코딩 된 다음에 바로 일반 시디롬 드라이브에서 인식이 가능하도록 되어 있습니다. 세션을 만들때마다 해당 세션의 정보를 저장하는 공간으로 약 13.5메가 정도의 공간이 추가로 필요합니다.
    멀티세션을 만드는데는 두가지의 방법이 있습니다.

    Multi Volume Multi Session
    CD내의 각 세션은 독립적으로 존재하며, 나중에 추가되는 세션에 대한 정보를 기록하고 난 뒤에는 이전의 세션에 대한 정보가 따로 기록되지 않으므로 최신 시디롬이 아닌 경우에는 앞쪽의 세션을 인식하지 못합니다.

    Linked Multi Session
    CD 내의 각 세션의 정보가 서로 연결되어 있습니다. 세션을 추가하는 과정에서 이전에 존재하는 세션에 대한 정보를 모두 읽어들여 새로운 세션의 정보와 함께 기록하므로 일반적인 시디롬에서는 마치 하나의 세션으로 구성된 시디를 읽는 것과 동일하게 작동됩니다.

    Multi-Track
    한 개의 세션안에 몇 개의 트랙이 있는 경우입니다. 트랙마다 300 byte 정도의 정보 저장 공간이 필요합니다.
    최대 99개의 트랙까지 추가할 수 있습니다.

    부팅 CD

    컴퓨터의 BIOS에서 El Torito Bootable CD-ROM Format Specification v1.0를 지원하여, 부팅시디로 부팅할 수 있습니다.

    1995 년 1월에 Curtus E. Stevens (Phoenix)와 Stan Merkin (나중에 IBM)가 "El Torito grill" 레스토랑에서 El Torito Specification V1.0을 만들었습니다. 이는 ISO-9660와 호환되고 바이오스에서 지원되면 CD로 부팅할 수 있습니다.

    부팅시디의 구조는 일반 시디에 크게 두가지가 더 추가되어 있읍니다. 바로 Boot Record와 Boot Catalog입니다.

    아래그림을 보면 이해가 될 것입니다.

    Boot Record

    일반시디의 Secondary Volume descriptor에 해당됩니다.
    부팅시디에서는 Primary Volume descriptor 다음에 이 Secondary Volume descriptor인 Boot Record Volume descriptor가 있습니다.
    ISO -9660에서 Primary Volume Descriptor는 session의 시작에서 sector 10h (16 decimal)에 있어야 한다고 정의했습니다. 또한 El Torito specification에서 Boot Record Volume Descriptor는 시디의 마직막 session에서 sector 11h (17 decimal)이라고 하였습니다.
    Primary Volume Descriptor에 의해 이 저장매체는 CD-ROM이며, Boot Record Volume descriptor에 의해 이 시디가 부팅시디이라고 선언되는 것입니다.
    아 래 그림과 같이 Boot Record 섹터 17은 항상 ".CD001.EL TORITO SPECIFICATION"로 시작하는데 이 부분이 부팅시디라고 알려주는 것입니다. (섹터 17의 offset은 17x2048=34816이며 34816의 hex 값이 8800입니다.)
    또한 Boot Record는 다음의 Boot Catalog가 어느 섹터에 있는지 기록하고 있읍니다.
    아래 그림에서 hexadecimal number 13 00 00 00 (5번 째 줄)는 섹터 19에 대한 absolute pointer입니다. 바로 이 섹터 19에 boot catalog가 있읍니다.

    윈도우 XP 다이어트

    • 설치후 작업표시줄/시작메뉴, 바탕화면, 내 컴퓨터 속성을 맞게 조절합니다.
      • 작업표시줄/시작메뉴 속성 알맞게 바꾸고
      • 바탕화면에서
        • 최소 전원 관리, 모니터 끄기(15분), 하드 디스크 끄기(20분)를 설정합니다. 간혹 바이오스에서 모니터 끄기 설정으로 이상이 보이면 XP에서 모니터 끄기를 설정하지 않습니다.
    • 내 컴퓨터 속성에서
      • 불필요한 효과 없애기 "바탕화면의 아이콘 레이블에 그림자 사용" 과 "창 및 단추에 시각 스타일 사용"에만 선택합니다.
      • "자동으로 다시 시작" 선택하지말고, " 오류보고 사용 안함"을 선택 및 "치명적인 오류가 발생하면 알림" 선택합니다.
      • 필요한 드라이브에서 시스템 복원을 사용합니다.
      • "업데이트를 다운로드하고 사용자가 원하는 시간에 설치합니다."를 선택합니다.
    • 추가설정
      • 최대 암호 사용 기간
        기 본값은 42일입니다. 바꾸려면 제어판->성능 및 유지 관리->관리 도구->로칼 보안 정책에서 계정정책->암호 정책을 눌러 최대 암호 사용 기간을 정합니다. 기간을 0으로 설정하여 암호가 만료되지 않도록 지정할 수 있습니다.
      • 바탕 화면 정리 마법사 사용 안하기
        gpedit.msc 라고 치면 그룹 정책이라는 메뉴가 뜰 것입니다. 여기서 로컬 컴퓨터 정책의 하위메뉴 사용자 구성에서 관리 템플릿에 보면 바탕화면이라는 항목이 있을 것입니다. 바탕 화면 정리 마법사 제거를 눌러 사용에 체크합니다.


    Shutdown

    • 2시간 후에 컴퓨터 종료시에 shutdown -s -t 3600
      취소시에 shutdown -a

    절전설정
    • 과 거의 APM (Advanced Power Management)에서는 BIOS에 절전관리가 있었으나 ACPI (Advanced Configuration and Power Interface)에 의해 operating system, BIOS, and device drivers에 절전관리 기능이 생겨 새로 S0에서 S5까지 6단계가 있습니다.
    • S0 normal full-power state
    • S1 simplest energy-saving state
      단지 하드드라이브와 모니터를 shut down한 상태입니다. 보통 sleep 또는 standby라 합니다.
    • S3
      RAM 상태를 유지하기 위한 전원과 wake-up action을 받아드리기 위한 전원만 유지하며, 다른 전원은 모두 절전합니다. suspend to RAM상태입니다. 구분되지 않고 sleep 또는 standby라 하며, suspend, instant on, on now라 하기도 합니다.
    • S4 hibernation state
      RAM과 CPU 상태를 하드드라이브에 파일 (종종, hiberfil.sys)에 저장하고 전원을 끈 상태이나, wake-up action을 받아들이질 않아 전원스위치로 hiberanation에서 빠져나옵니다.
    • S5 complete power-off state
      예를 들면 shut down command 같이 전원을 끈 상태입니다.

    부팅디스크 건들이기

    1.44MB 플로피 디스크

    • 1.44MB 의 플로피 디스크은 고밀도(HD)디스크이므로섹터당 바이트는 512바이트 이며 트랙당 섹터는 18개 입니다. 물론 트랙은 80개 이구요. 한면에 80트랙씩 양면으로 구성되어 있습니다. 그러므로 512 X 18 X 80 X 2 = 1,474,560 입니다.
    • 플로피 디스크 이미지 만들기 : dd
      dd if=/dev/fd0 of=/home/sam/floppy.image bs=2x80x18b conv=notrunc 또는 dd if=/dev/fd0 of=/home/sam/floppy.image conv=notrunc

      18b 는 18 sectors of 512 bytes를, 2x 는 head 숫자 만큼 sector size를 배로 늘리며 (플로피 디스크는 양면이므로), 80x 는 cylinders 수입니다. (따라서 모두 1474560 bytes) 위의 명령어로 a single 1474560-byte read request to /dev/fd0와 a single 1474560 write request to /home/sam/floppy.image를 하며, hard drive image of the floppy, with bootable info intact를 만듭니다. 두번 째 명령어에서 default "bs="는 512입니다. (the sector size of a floppy)

      conv=notrunc option
      Without notrunc, multiple blocks of zeros get abbreviated with a string of asterisks, saving a lot of space. if you use notrunc, all the zeros will be written out.
    • 플로피 디스크 이미지 만들기 : cat
      cat /dev/fd0 > floppy.flp (다른 예로 cat /dev/cdrom >cdromimage.iso)
    • 플로프 디스크 이미지에서 플로피 디스크 만들기
      dd if=/home/sam/floppy.image of=fd0 bs=2x80x18b conv=notrunc
    • 참고로 플로피 디스크 이미지로 새 플로피 디스크를 format하려면
      전에 사용한 적이 없는 포맷된 빈 플로피 디스크에서 플로피 디스크 이미지를 만듭니다.
      dd if=/dev/fd0 of=/home/sam/floppy.bin
      플로피 드라이브에 포맷하려는 플로피 디스크를 넣은 후
      dd if=/home/sam/floppy.bin of=/dev/fd0

      참고로 1.44MB diskette image는 다른 확장자로 이름을 바꾸어 사용할 수 있습니다. VMware는 FLP를 사용하며,WinImages는 IMA를 사용하지만 같은 구조로 보입니다.

    MBR & boot sector

    • 하드디스크의 MBR과 파티션 테이블을 백업
      dd if=/dev/sda of=/home/sam/MBR.image bs=512 count=1
      백업한 하드디스크의 MBR과 파티션 테이블을 복구
      dd if=/dev/sda of=/home/sam/MBR.image bs=512 count=1
      위의 MBR.image (512바이트)에서 파티션 테이블을 제외한 MBR만 복구하려면 다음과 같이 합니다.
      dd if=/home/sam/MBR.image of=/dev/sda bs=446 count=1
      물론 처음부터 하드디스크의 MBR만 백업하려면
      dd if=/dev/sda of=/home/sam/MBR.image bs=446 count=1

    • 특정 파티션의 부트섹터를 파일로 저장하여 윈도우XP로 멀티부팅
      dd if=/dev/hda2 of=/bootsect.lnx bs=512 count=1
      위의 bootsect.lnx를 윈도우 XP의 boot.ini 파일에서 마지막 줄에 아래와 같이 써넣습니다.
      c:\bootsect.lnx="리눅스"

    Grub으로 윈도우 멀티 부팅

    title WindowsXP (on /dev/hda1)
    unhide (hd0,0)
    hide (hd0,1)
    rootnoverify (hd0,0)
    makeactive
    chainloader +1

    title WinTesting (on /dev/hda2)
    unhide (hd0,1)
    hide (hd0,0)
    rootnoverify (hd0,1)
    makeactive
    chainloader +1

    시디롬 없이 하드디스크에서 부팅하여 설치하기

    기존 컴퓨터에 linux가 설치되어 있으면 GRUB을 이용하여 시디 없이 설치할 수 있습니다.

    데비안
    • 기존 리눅스로 부팅한 상태에서 알맞은 곳 (여기서는 /new-install/etch)에 2개의 파일을 저장합니다.
      여기(etch)에서 32 bit인 i386의 linux와 initrd.gz을 새로 만든 디렉토리 /new-install/etch에 저장합니다.
      64 bit인 amd-64의 lenny에 해당하는 linux와 initrd.gz은 여기에서 구할 수 있습니다.

      기존 리눅스 시스템의 /boot/grub/menu.lst에 부팅할 메뉴를 만듭니다.
      # nano -w /boot/grub/menu.lst

      다음과 같이
      title Debian (Etch) Install Disk
      kernel (hd1,1)/new-install/etch/linux
      initrd (hd1,1)/new-install/etch/initrd.gz
    우분투
    • LiveCD를 하드디스크에 저장한 후 grub으로 LiveCD로 부팅하여 설치

      받은 liveCD (iso)을 마운트 한후에
      # mount -t iso9550 -o loop liveCD.iso /media/live-cd

      CD (iso)을 파일을 임의의 파티션에 저장합니다.
      # cp -r /media/live-cd/* /new-install/ubuntu
      # cp -r /media/live-cd//.disk /new-install/ubuntu

      grub 설정파일 (/boot/grub/menu.lst)에 다음을 추가합니다.

      title Ubuntu Live CD
      root (hd0,0)
      kernel /casper/vmlinuz boot=casper root=/dev/ram ramdisk_size=1048576 rw
      initrd /casper/initrd.gz

      * root (hd0,0)은 시스템에 맞게 고쳐야 합니다.

    • 부팅 파일만 저장하여 grub으로 부팅하여 설치하기 (Netboot설치로 데비안과 비슷)

      여기에서 구할 수 있습니다. 32 bit용의 linux와 initrd.gz를 임의의 디렉토리 /new-install/ubuntu에 저장합니다.

      grub 설정파일 /boot/grub/menu.lst에 다음과 같이 기록합니다.
      title Ubuntu Network Install
      root (hd0,0)
      kernel /new-install/ubuntu/linux
      initrd /new-install/ubuntu/initrd.gz
      boot

      * root (hd0,0)은 시스템에 맞게 고쳐야 합니다.

    MEPIS
    • MEPIS 리눅스 (Live CD임)는 CD-ROM에 있는 파일을 하드 디스크에 저장하면 시디롬 없이 부팅할 수 있습니다.
      1. MEPIS 설치 CD (SimplyMEPIS-CD_7.0-rel_32.iso)와 다른 파티션를 mount합니다.
        # mount -t iso9660 -o loop SimplyMEPIS-CD_7.0-rel_32.iso /media/cdrom
        # mount -t ext3 /dev/hdb2 /media/hdb2

      2. CD 파일 복사
        # cp -rp /media/cdrom/* /media/hdb2/

      3. 기존 리눅스 grub boot loader에 아래와 같이 추가합니다.

        title MEPIS Install Disk
        root (hd1,1)
        kernel /boot/vmlinuz root=/dev/hdb2 apm=power-off vga=791 quiet
        initrd /boot/initrd.gz
        boot

    PSP 인코딩

    PSP

    • PSP의 실제 화면 크기는 대각선으로 110 mm (4.3인치)이며, 픽셀 해상도가 480x272로 16:9 (1.777777778)입니다.
      동영상은 firmware 3.30부터 H.264/MPEG-4 AVC Main Profile의 비디오를 볼 수 있으며, 해상도는 720×480, 352×480, 그리고 480×272을 지원합니다. 이전까지 화면에 맞는 해상도는 368x208 (또는 320x240)입니다.
    • PSP 동영상 만들기
      1. 오디오 조정

        오디오는 특히 AC3인 경우에 소리가 작게 나오는데다 일부분에서 너무 크게 나오는 경우가 있어 필요하면 조정합니다.
        원본 동영상의 소리가 이미 알맞게 들린다면 필요없는 과정입니다.

        먼저 오디오를 pcm파일로 저장합니다.
        ffmpeg에서는
        $ ffmpeg -i input.avi -vn -acodec pcm_s16le -ar 44100 -ac 2 extract.wav
        mplayer에서는
        $ mplayer input.avi -ao pcm:file=extract.wav -vc null -vo null pcm:fast

        Audacity 의 effect -> Compressor...에서 Threshold를 기본갑 -12 db에서 -24 db로 낮추고 (너무 크게 나오는 부분을 낮추고), Ratio는 기본값대로 2:1, Attack Time도 기본값 그대로 0.2secs로 하였습니다. 소리가 조금 더 크게 들리게 Normalize to 0db after compressing는 체크된상태 그대로 합니다.

        윈도우 XP에서는 GoldWave의 Effect -> Volume -> Match 에서 조정할 수 있습니다. Average를 -12.0으로 하여 소리를 크게 한후 저장합니다.

        새로 만든 extract.new.wav를 기존의 동영상과 합칩니다.
        ffmpeg에서는
        $ ffmpeg -i input.avi -i extract.new.wav -map 0:0 -map 1:0 -vcodec copy -acodec copy input.audio.avi
        mencoder에서는
        $ mencoder -oac copy -ovc copy -o input.avi -audiofile extract.new.wav input.audio.avi

      2. Mencoder에서 사용할 srt 자막파일을 만듭니다.
        $ mplayer -dumpsrtsub input.audio.avi -sub input.smi -subcp cp949

      3. 동영상을 PSP에 맞게 368 x 208로 바꾸고 자막입혀 새 동영상을 만듭니다.

        $ mencoder input.audio.avi -ovc xvid -xvidencopts bitrate=2000 -vf crop=660:336:60:0,scale=368:208,harddup -sub dumpsub.srt -font /usr/share/fonts/truetype/unfonts/UnDotum.ttf -utf8 -oac copy -o output.avi

        위에서 원본 input.audio.avi의 원래 크기는 680(660+60+60) x 336입니다.

        필요하면 -ovc xvid -xvidencopts bitrate=2000 대신에 -ovc lavc -ffourcc DX50을 사용해도 됩니다. lavc 기본값이 비디오는 비트레이트가 800인 mpeg4 (DivX 4/5), 오디오는 비트레이트가 224인 mp2입니다. DivX 4/5의 mpeg4를 만들 때 default header가 FMP4입니다. 이는 폭넓게 인식되지 않으므로 -ffourcc DX50하여 DivX 5로 설정합니다.

      4. 동영상 합치기
        필요하면 avimerge로 동영상을 합칩니다.
        $ avimerge -o output.avi -i output-1.avi output-2.avi

      5. PSP 최종 동영상 만들기
        $ ffmpeg -i output.avi -f psp -title name -r 30000/1001 -b 384k -ar 24000 -ab 64k -s 368x208 M4V00001.MP4

        -b 512k로 -ab 128k로 하여 화질과 소리를 좋게하나 파일 크기가 커집니다.

        다음과 같이 그림파일을 저장합니다.
        $ ffmpeg -y -i output.avi -f image2 -ss 5 -vframes 1 -s 160x120 -an M4V00001.THM

        참고ffmpeg FAQ에서
        MPEG4/SP로는 ffmpeg -i input -acodec libfaac -ab 128(또는 64)kb -vcodec mpeg4 -b 512(또는 384)kb -ar 24000 -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 368x208 -r 24000/1001 -title X -f psp output.mp4
        MPEG4/AVC로는 ffmpeg -i input -acodec libfaac -ab 128kb -vcodec h264 -b 1200kb -ar 48000 -mbd 2 -coder 1 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -title X -f psp -flags loop -trellis 2 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 output.mp4
        PSPVC를 설치후 만들기도 합니다. ( MPEG4/SP (16/9) 368x208 vb=384kb ab=64kb, Volume은 110으로 합니다.)

    • 참고
      • mencoder로 PSP용 동영상 만들기 : 제대로 안됩니다.
        mencoder input.video -ofps 24000/1001 -af lavcresample=24000 -vf crop=660:336:60:0,scale=368:208,harddup -of lavf -oac lavc -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=aac -lavfopts format=psp:i_certify_that_my_video_stream_does_not_use_b_frames -info name=MovieTitle -o output.psp

    데비안에서 한글키 설정

    데비안에서에서 한글키 설정이 전에는 키보드 스캔을 해서 (showkey -s와 xev) 설정했는데, xevxorg.conf에서 korean 106-key가 지원되어 이젠 쉽게 설정할 수 있습니다.


    Xorg.conf에서 한글키 설정

    데비안 etch 설치시 언어는 한국어, 키보드는 영어를 선택하여 설치하면 xorg.conf에
    "XkbModel" "pc104", "XkbLayout" "us"로 설정됩니다. 다음과 같이 바꾸어 줍니다.

    # nano -w /etc/X11/xorg.conf
    다음과 같이 kr106과 kr을 변경합니다.

    Section "InputDevice"
    Identifier "Generic Keyboard"
    Driver "kbd"
    Option "CoreKeyboard"
    Option "XkbRules" "xorg"
    Option "XkbModel" "kr106"
    Option "XkbLayout" "kr"
    EndSection
    SCIM을 사용할 경우 전환키에 한글키로 되어있는지 확인압니다.

    키보드를 직접 설정
    데비안 (etch) 설치시 언어는 한국어, 키보드는 영어를 선택하여 다음과 같이 바꾸어 줍니다.
    데비안

    설치할 때 언어는 한국어, 키보드 레이아웃은 미국으로 하였습니다. 설치 후 시스템 -> 기본 설정 -> 키보드하면 키보드 모델은 일반 104키 PC, 키배치는 U.S. English 입니다. 키 배치에 대한민국 101/104 호환을 추가하여 맨위로 올리면 한글키/한자키는 잘 됩니다.
    그러나 VMware를 설치하고 VMware에서 lenny를 설치하면 한글키/한자키가 인식이 안됩니다. VMware에서도 키설정이 제대로 되게 하려고 인터넷을 찾게 되었고, 다음과 같이 하였습니다.

    먼저 키보드의 키배치 탭에서 기본갑으로 리셋을 눌러 원래대로 키보드 모델은 일반 104 PC로 하고, 키배치는 U.S. English로 하였습니다.

    데비안 etch와 lenny의 /usr/share/xmodmap/xmodmap.kr 파일에 한글키와 한자키 설정이 keycode 121 = Hangul_Hanja 및 keycode 122 = Hangul
    로 설정되어 있습니다.

    • $ less /usr/share/xmodmap/xmodmap.kr
      빠져나오기는 q 입니다.

    xmodmap.kr은 건들이지 않고 다음과 같이 하였습니다. 먼저 X윈도우를 빠져나와서 (
    Ctrl + Alt + F1하면 됩니다.)

    • $ showkey -s

    한글키를 눌러보고 한자키를 눌러보니 scan code값이 한글은 0xf2 이며 한자는 0xf1 입니다. 이 scan code 값을 xmodmap.kr에 있는 keycode 122, 121로 되게 아래와 같이 하였습니다.

    • $ su -
    • # setkeycodes f2 122
      한글 scancode 0xf2를 keycode 122로
    • # setkeycodes f1 121
      한자 scancode 0xf1를 keycode 121로

    다시 X윈도우로 들어가(Ctrl + Alt + F7하고) 키를 누르니 한글키와 한자키 모두 인식을 못합니다.
    X윈도우에서 xev를 실행하고 한글키와 한자키를 누르면 NoSymbol 이 보입니다.
    그리고 한글키를 누르면 setkeycodes f2 122로 keycode 122 정한 한글키가 X윈도우에서 keycode 210로 인식되고, setkeycodes f1 121로 keycode 121로 정한 한자키는 X윈도우에서 keycode 209로 인식이 됩니다. 커맨드 창에서 X윈도우가 인식한 keycode를 아래아 같이 하였습니다.

    • $ xmodmap -e "keycode 210 = Hangul"
    • $ xmodmap -e "keycode 209 = Hangul_Hanja"

    한글키를 누르니 setkeycodes f2 122로 keycode 122 정한 것이 X윈도우에서 keycode 210로 인식되고 이 키가 한글키로 잘 인식하였습니다.
    한자키를 누르면 setkeycodes f1 121로 정한것이 X윈도우에서 keycode 209로 인식되고 이 키가 한자키로 인식되었습니다.
    xev 실행하여 한글키와 한자키를 눌러보면 NoSymbol이 없어지고 Hangul 및 Hangul_Hanja로 맞게 보입니다.

    이제 컴퓨터를 켜면 setkeycodes f2 122 및 setkeycodes f1 121 명령이 실행되게 다음과 같이 하였습니다.
    • # nano -w /etc/rc.local
      맨 밑줄에 있는 exit 0 보다 위에서 다음과 같이 입력하고 저장하였습니다.
      setkeycodes f2 122
      setkeycodes f1 121

    이 keycode 122와 121이 X윈도우선 keycode 210 및 209로 인식됩니다. 이 keycode 210 및 209가 한글키 및 한자키로 설정이 되게 ~/.xinitrc와 ~/.xmodmap을 다음과 같이 하였습니다.

    • $ nano -w ~/.xinitrc
      다음과 같이 입력하고 저장하였습니다.
      #! /bin/bash
      xmodmap ~/.xmodmap
      저장은 Ctrl + 영문 o 이며, 끝내기는 Ctrl + x 입니다.
    • $ nano -w ~/.xmodmap
      다음과 같이 입력하고 저장했습니다.
      keycode 210 = Hangul
      keycode 209 = Hangul_Hanja
    다시 부팅해도 한글키와 한자키 모두 잘 됩니다.
    언어는 한국어, 키보드는 미국에, 한글키 및 한자키가 추가된 106키로...

    VMware에서

    처음 설치시에 언어는 한국어, 키보드 레이아웃은 미국으로 선택했습니다.
    처음 설치 후 데스크탑 -> 기본 설정 -> 키보드에서 키보드 모델은 일반 104키 PC, 키배치는 U.S. English 입니다. 키보드 모델과 키 배치를 그대로 나두고 xev를 실행하고 한글키와 한자키를 눌러보니 전혀 반응이 없었습니다. X윈도우를 빠져나옵니다.
    그냥 Ctrl + Alt + F1하면 Host 컴퓨터가 X윈도우를 나와버립니다. 물론 다시 Ctrl + Alt + F7하면 됩니다. VMware에서 설정이 안되어 있으면 커맨드 창을 열고 다음과 같이 합니다.

    • $ su -
      Gnome이면
      # /etc/init.d/gdm stop
    • X윈도우를 빠져 나와서 scan code를 알아봅니다.
      $ showkey -s

    한글키늘 눌렀을 때 알지 못하는 키가 눌려졌으니 setkeycodes 72 를 사용하라는 하며, 한자키를 누르니 setkeycodes 71 로 하라는 글이 보입니다.
    데비안 etch와 lenny의 /usr/share/xmodmap/xmodmap.kr 파일에 한글키와 한자키 설정이 다음과 같이 보입니다.
    keycode 121 = Hangul_Hanja
    keycode 122 = Hangul
    그래서 scan code 72와 71을 다음과 같이 각각 key code 122 와 121로 정했습니다.

    • # setkeycodes 72 122
      # setkeycodes 71 121
    • $ showkey -s 하여도 화면에 아무런 응답이 없을 수 있습니다.
      $ showkey -s 하고 한글키를 몇 차례 누릅니다. 10초가 지나면 다시 명령어를 입력할 수 있습니다. 다음과 같이 하면 메시지를 볼 수 있습니다.
      $ dmesg | tail
      $ showkey -s 하고 이번엔 한자키를 몇 번 눌러줍니다. 다시 또
      $ dmesg | tail

    다시 X윈도우로 들어가 xev를 띄어 한글키를 누르니 keycode 122로 정한 것이 X윈도우에서는 keycode 210 인식이 되나 NoSymbol로 설정이 되어있지 않았고, 한자키를 누르면 keycode 121로 정한것이 X윈도우에서 keycode 134로 정해지며 NoSymbol 입니다.
    커맨드창에서 다음과 같이 하였습니다.

    • $ xmodmap -e "keycode 210 = Hangul"
    • $ xmodmap -e "keycode 134 = Hangul_Hanja"

    이제 한글키와 한자키가 바르게 됩니다.
    xev를 실행하고 한글키를 누르면 keycode 122로 정한 것이 X윈도우에서 keycode 210으로 인식되고 Hangul로 맞게 설정이 되며, 한자키를 누르면 keycode 121로 정한것이 X윈도우에서 keycode 134로 정해지며 Hangul_Hanja로 설정이 맞게보입니다.

    이제 컴퓨터가 켜질 때 위의 설정이 되게 다음과 같이 하였습니다.
    먼저 setkeycodes 71 122 및 setkeycodes 71 121 명령이실행되게
    • # nano -w /etc/rc.local
      맨 밑줄에 exit 0 이 보입니다. exit 0 보다 위에서 다음의 내용을 입력하였습니다.
      setkeycodes 72 122
      setkeycodes 71 121

    scan code 72와 71을 keycode 122와 121로 설정되고, X윈도우선 각각 keycode 210과 keycode 134로 인식됩니다. 이제 keycode 210과 134가 각각 한글키 및 한자키로 설정이 되게 ~/.xinitrc와 ~/.xmodmap을 다음과 같이 하였습니다.

    • $ nano -w ~/.xinitrc
      다음과 같이 입력하고 저장하였습니다.
      #! /bin/bash
      xmodmap ~/.xmodmap
    • $ nano -w ~/.xmodmap
      다음과 같이 입력하고 저장했습니다.
      keycode 210 = Hangul
      keycode 134 = Hangul_Hanja

    다시 부팅하니 한글키 및 한자키가 모두 잘 인식하였습니다.
    언어는 한국어, 키보드는 미국에, 한글키 및 한자키가 추가된 106키로...