리넠스

From Hidden Wiki
(Redirected from 리눅스)
Jump to navigation Jump to search
필독 사항 유닠스 계열 저작물, 성인물, 도박 웹 써버 보안 프로그래밍 그래핔 파싱
필독 사항 고스트BSD 표면 웹 싸이트 제작 리눅스 마스터 파이썬 트킨터 뷰티펄 숲
수학 아이투피 마약, 아청물, 해킹 웹 싸이트 보안 웹 프로그래밍 데이터 분석 게임 제작
통계학 뮤와이어 다크넽 싸이트 제작 정보 보안 기사 쟁고우 팬더즈 파이게임

개요

리넠스 (Linux)는 커널의 일종이다. 또한 그 커널을 사용하는 운영 체제를 가리키는 말이기도 하다. 핀란드헬싱키 대학의 학생이었던 리누스 토르발스(Linus Torvalds)라는 사람이 1991년에 취미 삼아 만들었던 미닉스(Minix)의 터미널 에뮬레이터가 그 시초이다. 그 뒤로 개발이 계속 이루어지다가 1993년부터는 소스 코드GPL을 따라 공개되었다. 또 그 뒤로 전 세계의 프로그래머들이 달려들어 이런저런 프로그램과 모듈을 만들면서 더 많은 기능과 더 높은 안전성을 갖추게 되었다.


GNU쪽 사람들은 리눅스는 커널일뿐이고, 이 커널을 가져다가 GNU 프로그램들을 올려 만든 운영체제는 GNU/Linux라고 이야기하며 이런 명칭에 민감하게 반응하는 경우도 있다. 물론, 리눅스의 최초 개발자인 리누스 토르발스그누쪽의 그런 소리를 개소리 취급한다. 왜냐하면 핵심을 개발한 자신을 밀어내고, 서드 파티 소프트웨어나 개발한 GNU쪽이 주인 행세를 하려고 하기 때문이다. 소스 코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어이다. 어쩌다 보니 자유 소프트웨어계의 구세주가 되기도 했다. 컴퓨터 역사상, 사람이 가장 많이 들어간, 가장 큰 프로젝트이다. Linux는 원래 Linus' Minix의 줄임말이었지만 현재는 Linux Is Not UniX의 줄임말을 의미하기도 한다.


리눅스에 익숙해지려면 자신의 컴퓨터와 웹 써버에 직접 리눅스를 깔아서 쓰면 좋다. 리눅스를 잘 쓰려면 리눅스 마스터 교재를 사서 시험을 공부하면 좋다. 안드로이드 중에 에듀락에서 만든 리눅스마스터2급, 리눅스마스터1급, 그리고 Certification에서 만든 리눅스 마스터 2급, 리눅스 마스터 1급 앱으로 공부하는 것도 괜찮다. 구글 플레이 스토어에서 다운로드 받을 수 있다.

정보 보안쪽으로 좀 더 공부하려면 정보보안 기사 시험을 공부하는 것도 괜찮다.


https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Tux.png/220px-Tux.png

리눅스 커널의 마스코트인 Tux(턱스)


왜 하필 펭귄이냐 하면 별다른 이유는 없고, 그저 개발자인 리누스 토르발스펭귄을 좋아해서라고..... 때는 93년 경, 토르발스가 오스트레일리아를 여행하던 때의 일이다. 토르발즈는 유닉스 모임에서 리눅스에 대해 말하려 가던 중에 작은 펭귄에게 물리게 된다. 그 일로 인해 토르발스가 펭귄을 좋아하게되고 리눅스의 로고로 떠올리게 되었다고 한다.

배포판 선택

리눅스는 크게 보면 레드 햇 계열과 데비안 계열이 있다. 기타 계열도 있는데 소수에 불과하니 스마트폰에 쓰이는 안드로이드를 제외하면 몰라도 된다. 써버에 많이 쓰이는 건 센트OS우분투이고, 데스크탚랲탚에 많이 쓰이는 건 우분투리눅스 민트이다.


레드 햇 계열 리눅스들은 rpm(Red Hat Package Manager)과 yum(Yellow dog Updater, Modified)을 사용하여 프로그램을 설치한다. 레드 햇 엔터프라이즈 리눅스(RHEL), 페도라, 센트OS, 아시아눅스 등이 있다.

데비안 계열 리눅스들은 dpkg(Debian Package)와 apt(Advanced Packaging Tool)를 사용하여 소프트웨어를 설치한다. 데비안, 우분투, 리눅스 민트, 칼리 리눅스 등이 있다.

그 외 다른 계열의 리눅스들이나 비에스디(BSD), 유닉스들도 각자 다른 소프트웨어 설치 방법을 사용한다. 물론 리눅스유닉스 계통의 사람들은 이런 운영 체제 종속적인 패키지 매니저를 사용하지 않고, 소스 코드를 직접 컴파일하여 설치하는 경우도 많다.


리눅스 민트같은 우분투 계열 리눅스를 추천하는데 밸브 코퍼레이션스팀(Steam)이나 일렉트로닉 아츠오리진(Origin) 등의 전자 소프트웨어 유통망(ESD)이 우분투를 기준으로 개발이 되어, 지원이 잘 돼서 게임을 쉽게 할 수 있고, 운영 체제 설치시 전체 암호화를 할 수 있기 때문이다. 또한, 오픈 뱅킹으로 인터넷 뱅킹도 할 수 있고, 인터넷 쇼핑도 할 수 있다. 븨엘씨(VLC)로 동영상 감상, 리브레 오피스로 문서 작성, 김프로 이미지 제작 등 윈도우즈로 할 수 있는 건 대부분 다 할 수 있다.


시대에 맞지 않게 CDDVD 설치만 되고, USB 메모리 설치가 안 되는 칼리 리눅스는 갖다 버리고, 리눅스 민트 쓰자. 어차피 칼리 리눅스에 있는 해킹 툴들도 오픈 소스 소프트웨어라 다른 리눅스에서도 그냥 설치해서 쓰면 된다. 리눅스 민트는 시나몬마테가 있는데 Cinnamon그놈 3를 쓰고, MateGNOME 2를 쓰는데 그냥 시나몬 쓰면 된다. 그리고 32비트와 64비트가 있는데 역시 그냥 64비트 쓰면 된다. Rufus라는 프로그램을 다운로드 받아서 linuxmint-18.2-cinnamon-64bit.iso라는 ISO 파일은 부팅 가능한 USB 메모리로 만들면 된다. 1.56 GB 정도 공간이 필요하니까 2 GB 이상의 USB 메모리를 준비한다. 부팅 USB 메모리를 만들면서 모두 지우니, USB 메모리에 있던 파일은 미리 옮겨놓는다.


우분투 18.04부터는 유니티(Unity)를 버리고 다시 그놈(GNOME)으로 돌아온다고 한다. 쓰기 불편한 유니티 때문에 많은 우분투 사용자들이 리눅스 민트로 떠나갔었다.[1]

소프트웨어 설치 방법

최초에 리눅스에서 소프트웨어 설치에 사용한 방식은 소스 코드컴파일하는 것이었다. 이 방식이면 리눅스 종류에 상관없이 설치가 가능하다.


그 다음으로 나온 것이 레드 햇 계열의 rpm데비안 계열의 dpkg(deb)이다. 먼저 rpm 파일이나 deb 파일은 다운로드 받은 후 터미널에 다음과 같이 입력한다.

rpm -ivh google-chrome-stable_current_x86_64.rpm

구글 크롬 rpm 파일을 설치한다.

rpm -ev google-chrome-stable_current_x86_64.rpm

크롬 rpm 제거한다.

rpm -Uvh google-chrome-stable_current_x86_64.rpm 

크롬 rpm 설치되어 있으면 업그레이드하고, 설치되어있지 않으면 새로 설치한다.


데비안 계열에선 아래와 같이 한다.

dpkg -i google-chrome-stable_current_amd64.deb

크롬 deb 파일을 설치한다.

dpkg -r google-chrome-stable_current_amd64.deb

크롬 deb 삭제한다.


하지만 rpm과 deb은 소프트웨어를 설치하기 위해 다른 소프트웨어가 필요한 경우 필요한 소프트웨어를 먼저 설치해야 내가 설치하려는 소프트웨어를 설치할 수 있다는 의존성 문제로 설치가 복잡했고, 32 비트냐 64 비트냐, 또는 가끔씩은 운영 체제 버전(우분투 12.04와 17.10같은 식으로)에 따라 이전의 rpm이나 deb이 설치 안 되는 경우도 있다. 의존성이 걸린 선행 설치 소프트웨어를 자동으로 찾아서 설치해주는 것이 레드 햇의 yum과 데비안의 apt이다. rpm이나 dpkg와는 달리 rpm 파일이나 deb 파일을 다운로드 받을 필요없이, 터미널에서 명령어만 치면 소프트웨어 저장소에서 자동으로 다운로드 받아 설치해준다.

yum update

내 컴퓨터에 설치된 패키지 전체 업데이트

yum install httpd

아파치 패키지 설치

yum remove httpd

아파치 패키지 삭제

yum update httpd

아파치 패키지 업데이트


apt 명령어는 사용을 편리하게 하기 위해 apt-cache(패키지 정보 검색)와 apt-get(패키지 설치) 명령어의 기능을 하나로 합친 명령어이다. 즉, apt-cache와 apt-get에 붙이던 search나 install 등의 옵션을 apt에 붙여서 사용해도 대부분의 경우 동작한다는 의미이다. 하지만 몇 가지 명령어와 옵션이 빠졌다고 한다. 예를 들어, apt-get에는 있지만 apt에는 없는 대표적인 명령어 옵션으로는 apt-get -f install과 같은 게 있다.

apt-cache search apache2
apt search apache2

아파치2 패키지 정보 검색

apt-get install apache2
apt install apache2

아파치2 패키지 설치

apt remove apache2

아파치2 패키지 제거

apt purge apache2

아파치2 패키지가 만든 설정 파일까지 제거

apt update

저장소에 있는 모든 패키지의 정보 갱신

apt upgrade

내 컴퓨터에 설치된 전체 패키지의 업그레이드

apt dist-upgrade

배포판 업그레이드

리눅스 설치 방법

알파고운영 체제우분투유니티(Unity) 환경은 태블릿 위주로 만들어져서 윈도우즈와 매우 다르므로 윈도우즈만 사용해본 사람들은 윈도우즈와 비슷한 그놈(GNOME)을 사용하는 리눅스 민트를 쓰는 게 더 적응하기 쉬울 것이다. 해킹이나 보안을 공부하고 싶은 사람들은 해킹 툴이 포함된 칼리 리눅스를 쓰는 게 좋다.

리눅스 민트 설치시 화면의 크기가 작은 랲탚 등의 기기에 설치할 때 설치 창이 화면보다 커서 확인 버튼을 누를 수 없어서 설치를 못 하는 경우가 있다. 그럴 때는 Alt 키를 누를 상태로 창을 클릭하여 드래그하면 창을 움직여서 아래에 안 보이는 부분을 위로 올릴 수 있다.


UEFI 및 GPT 사용

Legacy BIOSMBR에서 설치 및 사용 방법은 리넠스 문서 참조.

UEFI BIOS와 GPT에서 설치 및 사용 방법은 리넠스 민트 문서 참조.


부팅 가능한 USB 드라이브 제작

이제 구식인 부팅CDDVD는 사용하지 말자. 부팅 가능한 USB 드라이브 (USB 메모리)를 만드는 방법을 설명할 것이다.


윈도우즈에서 부팅 USB 제작

https://rufus.akeo.ie/



부팅 가능한 USB 드라이브루푸스(Rufus)로 만들면 된다. https://rufus.akeo.ie/ 에서 다운로드 받으면 된다. Rufus 3.2와 Rufus 3.2 Portable이 있는데 설치할 필요는 없으니 Portable 버전으로 다운로드 받으면 된다.


리눅스 민트 19의 iso 파일의 경우 Rufus에서 "파티션 방식"을 MBRGPT 중 하나를 고를 수 있다. MBR을 고르면 "대상 시스템"은 "BIOS 또는 UEFI"가 뜨고, GPT를 고르면 "UEFI (CSM 지원 안 됨)"이 뜬다.


BIOS와 MBR 조합은 3 TB(테라바이트) 미만의 하드 디스크 드라이브(HDD)만 지원하며 주 파티션을 4개까지 밖에 못 만들어 불편하다.(논리 파티션은 더 많이 만들 수 있다.) 그래서 나온 게 UEFI와 GPT이다.

CSM은 구형 기기를 사용하는 사람들을 위해 UEFI에서 UEFI 부트 매니저 대신에 MBR 파티션으로도 부팅 가능하게 해주는 기능이다.


윈도우즈 10의 경우 공식 웹싸이트에서 MediaCreationTool1803.exe 파일을 다운로드 받아 실행하면 Windows.iso 파일을 다운로드 받거나 직접 부팅 가능한 미디어(DVD나 USB 메모리)를 만들어준다. 이 때 제품 키를 통한 정품 인증은 필요없으며 설치가 끝난 다음에 인증 안 하고 써도 정품 인증하라는 글자가 뜨고, 운영 체제 일부 설정을 변경 못 할 뿐, 사용에 큰 지장은 없다.


Windows.iso 파일을 다운로드 받아 Rufus에서 부팅 가능한 USB 드라이브를 만들려고 하면 "파티션 방식"에서 MBR과 GPT 중 하나를 고를 수 있다. MBR을 고르면 "대상 시스템"은 "BIOS (또는 UEFI-CSM)"이 뜨고, GPT를 고르면 "UEFI (CSM 지원 안 됨)"이 뜬다.


2010년도 초반에는 MBR만 지원하는 메인보드도 있었지만 2018년도 기준으로는 그냥 GPT를 선택하면 된다.


기존에 USB 메모리에 있던 내용은 다 지워지니 하드 디스크 드라이브(HDD)로 옮겨놓자.


컴퓨터는 2진법을 쓰기 때문에 저장 공간의 크기를 따질 때도 2진법을 쓴다. 하지만 사람은 10진법을 쓰므로 10진법 표기도 사용된다.


1 kB (킬로바이트) = (10^3)^1 = 10^3 = 1,000^1 = 1,000 바이트

1 KiB (키비바이트) = (2^10)^1 = 2^10 = 1,024^1 = 1,024 바이트

1 MB (메가바이트) = (10^3)^2 = 10^6 = 1,000^2 = 1,000,000 바이트

1 MiB (메비바이트) = (2^10)^2 = 2^20 = 1,024^2 = 1,048,576 바이트 = 1,024 키비바이트

1 GB (기가바이트) = (10^3)^3 = 10^9 = 1,000^3 = 1,000,000,000 바이트

1 GiB (기비바이트) = (2^10)^3 = 2^30 = 1,024^3 = 1,073,741,824 바이트 = 1,024 메비바이트


1 GiB는 1 GB보다 용량이 7% 더 크다. 즉, 1 GB에 73,741,824 바이트를 더해야 1 GiB가 된다. 즉, 1 GiB는 1.07 GB이다.


7.53 GiB인 USB 메모리의 경우 기가바이트로 표기하면 8.09 GB이므로 용량이 커보이는 효과가 있어 USB 메모리나 HDD 업체는 대부분 GB 표기를 선호한다. 컴퓨터 메모리의 경우 2진법으로 숫자가 정확하게 나눠 떨어지는 GiB 표기를 선호한다. 리눅스의 경우 GiB와 GB를 구분해서 표기하지만, 윈도우즈의 경우 기비바이트라는 용어를 쓸 자리에도 기가바이트라는 용어를 써서 정확한 용량을 알려면 바이트 단위로 확인해야 해서 사용자를 불편하게 한다.


1.90 GB (1,896,832 바이트)인 리눅스 민트 19 iso 파일로 부팅 가능한 USB 드라이브를 만들면 1.94 GB (1.80 GiB)이다.


3.85 GB (3,848,192 byte)인 윈도우즈 10 iso 파일로 부팅 가능한 USB 드라이브를 만들면 3.57 GB (3.32 GiB)이다. 이 용량은 좀 안 맞을 수 있는데 iso 파일은 최근에 다시 다운로드 받았지만, USB 드라이브는 한참 전에 다운로드 받은 iso 파일로 만들었기 때문이다. 즉, 그 사이에 iso 파일에 업데이트된 내용이 추가돼서 용량이 늘어났을 수 있다.

MediaCreationTool1803.exe로 부팅 가능한 USB 드라이브를 만들려고 하면 4 GB 이상이 아닌, 8 GB 이상의 USB 메모리를 사용하라고 뜬다. MediaCreationTool1803.exe 파일로 부팅 가능한 USB 드라이브를 만들면 MBR과 GPT 버전이 모두 포함되는 것 같지만, Rufus로 만들면 둘 중 하나만 만들 수 있다.



리눅스에서 부팅 USB 제작

  • 리눅스에서 하모니카OS 부팅USB 만들기

부팅USB를 만들어 주는 리눅스용 프로그램으로는 usb-creator-gtk , unetbootin , image-writer(mintstick) 등이 있습니다. 이 중 usb-creator-gtk를 사용한 방법입니다.

http://hamonikr.org/index.php?mid=board_manual&document_srl=3767


  • 리눅스에서 iso 이미지 파일로부터 부팅 가능한 USB메모리 만들기

리눅스 또는 윈도우 iso 이미지 파일로부터 부팅 가능한 USB메모리를 만드는 방법이다. 터미널창에서 명령어로 쉽게 가능하다(데비안/우분투 기준).

우선 USB메모리를 연결한 후, 장치명을 확인하자. 터미널창에서 아래와 같이 입력.


장치 목록 표시

lsblk


출력된 결과로부터 USB메모리에 대응하는 장치명을 파악한다. 통상 /dev/sdc, /dev/sdd 이런식이 될 것이다. 여기서는 장치명이 /dev/sdc라고 가정해 보자.

만약 해당 USB메모리가 마운트 되어 있다면 해제해야 한다. 디스크 빈 공간을 확인하기 위한 df 명령으로 간단히 확인 가능하다. 만약 마운트되어 있다면 장치명과 마운트된 디렉토리가 표시될 것이다.


디스크 빈 공간 확인

df


/dev/sdc 마운트 해제

sudo umount /dev/sdc


이제 dd 명령을 이용해서 iso 이미지 파일을 옮기면 된다. 예를 들어 ubuntu.iso 파일을 /dev/sdc로 옮긴다면 아래와 같이 입력.


ubuntu.iso 파일을 /dev/sdc 장치로 보냄

sudo dd if=ubuntu.iso of=/dev/sdc bs=4M && sync


dd의 옵션을 보자면, if는 입력대상(읽어야 할 파일, iso 이미지), of는 출력대상(USB메모리), bs는 한번에 읽어서 처리할 용량 단위인데 iso의 블록 단위인 2048바이트의 배수로 적당히 정하면 될 듯(위의 예시에서는 4MB)

dd 명령이 종료된 후에도 USB메모리에 쓰는 작업은 아직 끝나지 않았을 수가 있다. 따라서 dd 명령이 정상적으로 종료되고 나면 sync 명령으로 메모리와 디스크를 동기화해 주면 완료.

http://bahndal.egloos.com/593581


  • 우분투에서 Windows 7 설치 USB 만들기

소프트웨어 관리자에서 gparted를 설치합니다.

gparted를 실행 후 파티션 메뉴에서 ntfs 포맷을 선택하고 포맷합니다.

http://sourceforge.net/projects/unetbootin/files/UNetbootin/506 에서 unetbootin-linux-506을 다운 받고 "속성 → Permissions → Allow executing file as program" 체크하고 변경 사항을 저장합니다.

unetbootin-linux-506을 다운받는 이유가 이 버전 이후는 "Show All Drives (Use with Care)"가 없어서 USB 선택이 안됩니다. UNetbootin 실행 후 윈도우 ISO 선택하고 ntfs 포맷한 USB를 선택 후 OK를 클릭하시면 모든 작업이 완료됩니다.

https://kjvvv.kr/17102

파티션 분할

우선 윈도우즈를 설치한 후 리눅스를 설치한다. 리눅스에서 파티션 분할은 자동으로 하면 안 되고, 수동으로 해야 한다.

리눅스 민트의 경우 수동이 아닌 "기타"라는 이름으로 되어있을 것이다. 하드 디스크 드라이브가 하나면 sda 하나, 두 개면 sda와 sdb가 보일 것이다.

윈도우즈를 설치한 상태라면 sda1은 NTFS 파일 시스템으로 104 MB로 Windows 7 (loader)와 같은 식으로 써져있을 것이다.

sda2도 NTFS 파일 시스템으로 윈도우즈 C: 드라이브가 보일 것이다. 크기는 사람마다 다르지만 1TB HDD라면 대략 100-200GB 정도 될 것이다.

이제 남은 공간에 + 버튼을 눌러서 파티션을 만든다. 크기는 1,000 MB, 파티션 종류는 "주 파티션", 파티션 위치는 "이 공간이 시작하는 지점", 용도는 EXT 4, 마운트 위치는 /boot로 한다. 이 파티션이 sda3이다. 그 후 그 밑에 리눅스를 설치할 파티션을 만든다. 파티션 크기는 1TB HDD라면 400,000 MB정도면 될 것이고, 종류는 논리 파티션, 위치는 "시작하는 지점", 용도는 "암호화할 물리 볼륨"으로 하고, 보안 키는 HDD 전체 암호화에 사용할 비밀번호를 넣으면 된다. 이 비밀번호를 부팅시에 넣어야 리눅스로 부팅이 된다. "빈 디스크 공간 덮어쓰기"는 하면 좋지만 더럽게 오래 걸린다. HDD가 1TB고, 랲탚이나 데스크탚의 성능이 좋지 않다면 10시간 정도 걸린다. 이 파티션은 sda5이다. 다음으로 sda5 파티션 안에 있는 sda5_crypt 파티션을 암호화한다. sda5_crypt는 용도는 EXT4, 마운트 위치는 / 로 해준다.

그 다음 나머지 공간은 전부 다 sda6 파티션으로 잡아준다. 이 공간은 윈도우즈의 D: 드라이브가 될 것이다. 1TB HDD라면 크기는 대략 400 GB 정도 될 것이다. 종류는 "논리 파티션", 위치는 공간이 시작하는 지점, 용도는 "FAT 32 파일 시스템", "마운트 위치"는 아무 것도 쓰지 않고 비워놓는다.

"부트로더를 설치할 장치"는 /dev/sda를 선택해주면 된다.


sda6를 마운트할 위치를 정하지 않았다고 경고창이 뜨는데 무시하고 계속 버튼을 누른다. 역시 스왑 파티션을 설정하지 않았다고 뜨는데 무시하고 계속을 누른다.

키보드 배치 선택 창에서는 "한국어"와 "한국어 - 한국어(101/104키 호환)"이 있는데 "한국어"를 선택하면 된다.

이름, 컴퓨터 이름, 사용자 이름을 넣는 공간이 있는데 이름에 Liam, Noah, Ethan, Mason, Lucas, Sophia, Emma, Olivia, Ava, Mia 등 적당히 가짜 이름을 집어넣는다. 만약 이름에 Sophia를 넣었다면 컴퓨터 이름은 자동으로 sophia-XXXX와 같은 식으로 지정되고, 사용자 이름도 sophia로 정해진다. 여기서 컴퓨터 이름은 공유기 등 네트워크상에서 이 컴퓨터를 식별하는 이름이고, 사용자 이름은 리눅스에 로그인시 사용하는 계정이름이다. 이름은 리눅스 GUI 화면 여기저기에 뜨는 사용자의 이름으로 별로 중요하지 않다. "자동으로 로그인"과 "로그인할 때 암호 입력"이 있는데 "로그인할 때 암호 입력"을 선택한다. 그리고 "개인 폴더 암호화"는 체크하지 않는다. 왜냐하면 처음에 sda5를 통채로 암호화했기 때문이다.

리눅스 민트의 설명은 여기까지고 아래는 칼리 리눅스의 설명이다.


리눅스에서는 하드 디스크 드라이브디스크 파티션을 sdb3과 같은 식으로 표기한다. b는 두번째 HDD라는 의미이며 3은 세번째 "주 파티션"이라는 의미이다. "논리 파티션"은 5번부터 번호가 매겨진다. 주 파티션은 4개까지 만들 수 있는데 주 파티션이 4개이면 논리 파티션을 만들 수 없으므로 주 파티션은 3개까지만 만들고 나머지 파티션은 모두 논리 파티션으로 만든다.


윈도우즈와 듀얼 부팅하려면 윈도우즈를 리눅스보다 먼저 설치해야 한다. 윈도우즈는 일단 운영 체제가 설치되는 "C 드라이브"와 자동으로 생성되는 "시스템 예약"만 파티션을 만든 후 설치한다.(윈도우즈 7 미만, 즉 비스타 이하에서는 C 드라이브만 만든다.) 그 후 리눅스 민트를 설치할 때 7단계 중 4단계인 "설치 형식"에서 "기타"를 선택해서 보면 /dev/sda1에 104MB의 "시스템 예약" 파티션이 보이고, /dev/sda2에 "C 드라이브"가 보일 것이다.

그럼 그 밑의 "남은 공간"을 클릭한 후 "+" 버튼을 눌러서 /boot 파티션을 추가해준다. 크기는 500~1,000MB에 파티션 종류는 "주 파티션"을 선택하고, 용도는 ext4(확장 파일 시스템 4), 마운트 위치는 /boot로 선택하면 된다. 그럼 /boot 가 /dev/sda3에 생성될 것이다. 암호화를 하지 않는다면 /boot를 별도 파티션으로 만들지 않아도 되지만 암호화를 하면 반드시 boot 파티션을 따로 만들고 얘는 암호화를 하면 안 된다. 전부 암호화를 시켜버리면 처음에 부팅을 수행할 영역이 없기 때문이다. 일단 부팅을 시켜야 암호화를 풀 것 아닌가?

그 후 그 아래에 암호화할 파티션을 추가해준다. 역시 "논리 파티션"에 "용도"는 "암호화할 물리 볼륨"을 선택하면 된다. 그 후 새로 생성된 /dev/mapper/sda5_crypt를 누른 후 Change...를 클릭하여 마운트 위치를 / 로 바꿔준다.

그 후 그 아래에 또 + 버튼을 눌러서 윈도우즈의 D 드라이브로 사용할 공간을 추가해준다. 파티션 종류는 "논리 파티션"을 선택해주면 되고, "용도"는 "FAT32 파일 시스템"을, 마운트 위치는 /windows를 선택하면 된다. 그럼 /dev/sda6가 생성될 것이다. 칼리 리눅스의 경우는 "마운트 위치"에 "마운트 안 함"을 선택해줘야 한다.


"부트로더를 설치할 장치:"는 boot 파티션이 있는 /dev/sda3를 선택해준다.

그 후 "지금 설치"를 누르면 스왑 파티션을 설정하지 않았다고 뜬다. 스왑 파티션은 윈도우즈의 가상 메모리같은 건데 요즘엔 메모리 용량이 커서 없어도 별로 상관은 없다. 나중에 필요하면 스왑 파일을 만들어서 사용해도 되니 신경 쓸 필요없다. 만약 스왑 파티션을 사용하려면 스왑 파티션에 써진 임시 파일들에서 정보가 유출될 수 있으므로 스왑 파티션도 암호화해야 한다.


7단계는 계정 설정 단계로 sda5를 통채로 암호화했기 때문에 "개인 폴더 암호화"를 선택할 필요는 없다.


그 후 윈도우즈를 부팅하여 sda6 파티션을 NTFS(신기술 파일 시스템)로 포맷해도 되고, 그냥 FAT32(파일 할당 테이블, 4GB 이하의 파일만 사용 가능)로 써도 된다. D 드라이브를 포맷하면 더 이상 자동으로 리눅스의 /windows 디렉터리에 마운트되지 않는다. 하지만 리눅스 민트의 니모(Nemo) 파일 관리자에서 D 드라이브를 클릭하면 /media/username 디렉터리에 마운트되니 윈도우즈의 파일을 리눅스에서 사용할 필요가 있을 때는 그렇게 마운트해서 쓰면 된다.


/dev/sda1 윈도우즈 시스템 예약

/dev/sda2 윈도우즈 C 드라이브

/dev/sda3 리눅스 /boot

/dev/sda5 리눅스 /

/dev/sda6 윈도우즈 D 드라이브


위와 같이 리눅스의 /를 윈도우즈의 D 드라이브보다 앞쪽에 설치하는 이유는 운영 체제 영역이 데이터 저장 영역보다 데이터 읽고 쓰기 속도가 더 중요하기 때문이다. 운영 체제 영역은 읽고 쓰기 속도가 빠르면 컴퓨터 사용시 빨라진 걸 느낄 수 있지만 데이터 저장 영역은 별 차이가 없다. 하드 디스크는 하드 디스크 플래터라는 원형의 금속 판에 자기장의 극성 변화(극성이 변하면 1, 안 변하면 0)로 데이터를 저장하며 이 판이 회전하면서 데이터를 읽고 쓰는데 판의 중심쪽이나 바깥쪽이나 각속도는 같으므로 속도는 바깥쪽 섹터일 수록 빨라서 데이터를 읽고 쓰는 속도도 중심쪽보다는 바깥쪽 섹터가 빠르다. 리눅스 설치시 파티션을 나눌 때 보면 "새 파티션의 위치"에 "시작"과 "끝"을 설정할 수 있는 게 보일 것이다. 시작은 바깥쪽 섹터이고, 끝은 중심쪽 섹터이며 시작이 끝보다 번호가 빠르다.(sda에서 숫자가 작은 쪽) 결론은 리눅스의 /를 윈도우즈의 D 드라이브보다 앞쪽에 파티셔닝(partitioning)하면 된다.


참고로 /dev/sda1에서 dev는 device의 약자이다. sd는 원래 스카시(SCSI)에 쓰던 용어지만 지금은 직렬 ATA(Serial ATA)에도 사용한다. 예전 병렬 ATA(Parallel ATA, IDE) 방식의 하드 디스크 드라이브는 /dev/hda1처럼 표기한다.


칼리 리눅스리눅스 민트우분투와 거의 똑같다. 파티션을 나눌 때 /dev/sda1은 윈도우즈 예약 파티션이고, /dev/sda2는 윈도우즈가 설치된 C 드라이브이고, /dev/sda3에는 boot 파티션을 만들 것이다. boot 파티션을 만들 때 "새 파티션의 종류"는 "주 파티션"으로, "새 파티션의 위치"는 "시작"으로, "마운트 위치"는 /boot로, "부팅 가능 플래그"는 "켜기"를 선택하면 된다. /boot의 크기는 1GB 정도로 만들어준다.

그리고 "논리 파티션"으로 /dev/sda5에 파티션을 만들고 마운트 위치는 /로 만들고, /dev/sda6에도 파티션을 만들고 "용도"는 FAT32, 마운트 위치는 "마운트 안 함"을 선택해주면 된다. 만약 마운트 위치를 /windows로 한 후 리눅스 민트처럼 나중에 윈도우즈로 부팅해서 D 드라이브(sda6)를 FAT32에서 NTFS로 변경하면 리눅스 부팅시 오류가 나면서 부팅이 안 된다. 포맷하면 sda6의 범용 고유 식별자(UUID)가 변경되기 때문이다. 그런 경우에는 칼리 리눅스 CD로 부팅한 후 라이브(live) 모드로 들어간다. 라이브 모드의 root 비밀번호는 toor이다. 거기서 암호화된 sda5를 더블클릭 후 암호화 비밀번호를 넣어서 마운트한다. 그 후 /etc/fstab 파일을 열어 sda6의 UUID를 수정해준다. 각 파티션의 UUID는 터미널을 연 후 blkid를 입력하면 확인할 수 있다. 아니면 sda6를 /windows에 마운트한다는 내용을 fstab에서 지운 후 변경 내용을 저장해도 된다. fstab에 아래와 같이 적혀있을 것이다. UUID는 *로 적어놓았지만 실제로는 알파벳과 숫자가 섞여서 적혀있다.


# /windows was on /dev/sda6 during installation
UUID=****-****  /windows        vfat    utf8            0       0


그리고 "암호화 볼륨 설정"에서 "암호화 볼륨 만들기"를 선택 후 / 파티션인 /dev/sda5를 선택하고, 다른 설정은 기본 설정(암호화: aes, 암호화 키 길이: 256, IV 알고리즘: xts-plain64, 암호화 키: 암호문) 그대로 두고, 데이터 지우기만 "예"에서 "아니요"로 바꿔준다. 몇 백GB 정도를 덮어씌우는데 몇 시간 정도 걸리니 시간이 없거나 기다리기 싫다면 "아니요"를 선택하지만 시간이 충분하다면 "예"를 선택하는 게 보안상 더 좋다. 우분투리눅스 민트는 설치시 덮어쓰기를 선택해도 순식간에 끝나는 걸 봤을 때 모든 영역을 덮어씌우지 않는 것 같지만 칼리 리눅스트루크맆트처럼 시간이 오래 걸리는 것으로 봤을 때 모든 영역에 대해 데이터를 덮어씌우는 것 같다. 파티션을 임의의 데이터로 덮어씌우면 그전에 있던 데이터를 한 번 지우는 효과도 있고, 파티션에 빈 공간을 없애버려 어느 위치에 암호화된 데이터가 있는지 찾기 힘들게 만드는 효과도 있다. Cryptsetup 1.6.0까지는 cbc-essive:sha256이 기본 설정이었는데 공격에 취약하다는 보안상 문제로 1.7.0 버전부터는 xts-plain64로 바뀌었다.

https://security.stackexchange.com/questions/39306/how-secure-is-ubuntus-default-full-disk-encryption

https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Encryption_options_for_LUKS_mode

/dev/sda5를 암호화한 후에는 "암호화한 볼륨" 목록에 있는 #1에 가서 마운트 위치를 /로 설정해줘야 한다.


IV 알고리즘: cbc-essiv:sha256

초기화 벡터 (Initialization Vector) 혹은 IV 알고리즘은 암호화 기법에서 같은 키의 일반 텍스트 (clear text)이 항상 유일한 암호화된 텍스트 (cipher text)를 만들도록 합니다. 이렇게 하면 공격하는 사람이 암호화된 데이터에 반복된 패턴을 통해 정보를 알아내지 못하게 됩니다. 사용할 수 있는 여러 가지 방법 중에서, 기본값인 cbc-essiv:sha256이 알려진 공격 방법에서 현재 가장 위험이 적은 방법입니다. 다른 방법은 예전에 설치한 (새 알고리즘을 사용할 수 없는) 시스템과의 호환성을 유지할 때만 사용하십시오.

https://www.debian.org/releases/etch/hppa/ch06s03.html.ko


/와 스왑(swap)을 별도 파티션으로 만들면 암호를 2개 만들어 부팅할 때마다 암호도 두 번 입력해야 하므로 스왑은 아예 만들지 않거나 스왑 파티션 대신에 스왑 파일을 만든다.









스왚 파일 생성

최대 절전 기능을 사용하려면 스왚 파일(swap file) 또는 스왚 파티션(swap partition)의 크기는 메모리(memory) 크기보다 커야 한다. 최대 절전 기능에 들어가기 위해서는 메모리의 데이터를 모두 스왚(swap) 공간으로 옮겨야 하는데 스왚 영역으로 옮기기 전에 메모리가 모자라 이미 스왑 파일에 옮겨진 데이터가 있을 수 있으므로 최대 절전 기능을 사용하기 위해 필요한 스왑 파일의 크기는 메모리 크기보다 커야 안전하다.


메모리가 8GB 이상이면 컴퓨터 그래픽스(computer graphics)나 3차원 컴퓨터 그래픽스(3D computer graphics)의 렌더링(rendering) 작업, 과학, 통계, 금융 등의 연산 작업이 아닌 이상 스왚 파일이 필요한 경우는 별로 없다.


최대 절전 상황에서는 암호화가 안 된 상태이니 그 상태로 컴퓨터를 압수당하거나 도난당하면 위험하기 때문에 다크넽 사용자인 여러분이 최대 절전 기능을 사용할 일도 없을 것이다. 스왚 파일의 크기는 메모리의 2배 정도로 잡는 것을 추천한다. 메모리가 4GB면 스왚 파일은 8GB 정도면 된다.


free

메모리와 스왚 공간의 크기와 여유 공간 확인


df -h

HDD의 각 파티션별 크기와 여유 공간 확인


sudo dd if=/dev/zero of=/swapfile bs=1M count=8192

/에 swapfile이라는 이름의 8GB짜리 스왚 파일 생성. 즉, /swapfile을 생성하는 명령어이다. swapfile은 다른 이름을 사용해도 된다. bs는 입출력 단위인 블록 사이즈이다. 단위는 바이트(byte)이고, MB의 경우 M만 적어주면 된다. count는 입출력 단위의 몇 배 크기의 스왑 파일을 만들 것인지를 정하는 것이다.


sudo mkswap /swapfile

swap 파일로 포맷(format)


sudo swapon /swapfile

생성한 스왚 파일을 swap 공간으로 활성화 하기


sudo gedit /etc/rc.local

리부팅시 스왚 파일이 비활성화 되기 때문에 부팅시 스왑 공간이 활성화 되도록 rc.local 에 등록한다. /etc/rc.local 파일에

swapon /swapfile 

이라는 내용을 exit 0 위에 추가한다. 다시 부팅해서 free 명령어를 실행해서 rc.local의 명령어가 제대로 작동하나 확인한다. 만약 메모리가 4GB고 스왑 파일이 8GB일 경우

total
Mem: 4014828
Swap: 8388604

라고 뜨면 정상이다. 만약

Swap: 0

이라고 뜨면 rc.local에 있는 swapon /swapfile 명령이 제대로 실행되지 않은 것이다.


sudo gedit /etc/sysctl.conf

리눅스 민트에는 gedit이 설치되어있지 않고 xed가 설치되어 있으므로

sudo xed /etc/sysctl.conf

와 같이 입력하면 된다.

HDD는 메모리에 비해 속도가 엄청나게 느리기 때문에 메모리가 거의 다 찬 상황에서만 스왑 파일을 쓰도록 설정한다. 이 설정을 안 해주면 메모리에 공간이 반 이상 남은 상황에서도 스왑 공간을 사용하기 때문에 컴퓨터가 엄청나게 느려진다. /etc/sysctl.conf 파일에서 vm.swappiness라는 항목을 찾아보고 만약 없으면 맨 밑에

vm.swappiness = 10 

이라고 적어준다. 10의 의미는 메모리에 여유 공간이 10% 남았을 때 스왑 파일을 사용하라는 의미이다. 그런데 실제로 써보니까 이렇게 설정하면 저성능 컴퓨터에서는 메모리 여유 공간이 급격히 줄어들 경우 컴퓨터가 멈추거나 데이터를 가상 메모리로 옮기느라 수십분 동안 마우스와 키보드 입력을 받지 않는 경우가 있는 것 같다. 그냥 앞에 #을 쳐서 주석 처리를 해서 이 코드를 작동하지 않게 해놓거나 지워버리자. 아니면 10을 30처럼 더 높은 숫자로 바꿔주자.


sudo swapon -s

스왑 파일이나 스왑 파티션의 크기와 여유 공간 확인


sudo swapoff /swapfile

Swap 공간으로 쓰던 스왑 파일을 불활성화 하기


sudo rm /swapfile

스왑 파일 삭제하기


리눅스 스왑(SWAP) 파티션이란 무엇? 어떤 일을 하나요? http://sergeswin.com/1034

Swap 메모리 늘리는 방법/ Swap 추가 및 제거 http://www.youtu.kr/1036996

스왑(swap) 파티션, 파일 만들기 http://www.hacker.or.kr/12

[Linux]Swap 파티션 추가하기 http://kiaak.tistory.com/58

우분투 스왑(Swap) 비율 조정. (Swappiness) http://nemonein.egloos.com/5168941


스왑 파일을 만들 경우 리눅스 배포판을 업그레이드했는데 스왑 파일 문제로 부팅이 안 된다거나 하는 등 자잘한 문제가 생길 수 있다. 메모리가 크다면 굳이 만들 필요는 없다.



자동 실행 /etc/rc.local

부팅시마다 자동 실행 시킬 스크립트를 넣는 파일이다. 터미널에서

sudo gedit /etc/rc.local

해서 rc.local 파일을 연다. 만약 아무 내용도 없다면 rc.local 파일이 없어서 지금 새로 생성된 것이다. 원래는 맨 위에

#!/bin/sh -e

와 같은 header와 맨 밑에 종료를 시켜주는

exit 0

가 있어야 한다. 없으면 정상 작동하지 않으니 위 내용을 적어준다.

만약 실행이 안 된다면 위 파일에 실행 권한이 주어졌는지 확인한다. 아마 일반 사용자로서 sudo로 위 파일을 만들었다면 소유자와 소유 그룹은 모두 root이고, 권한은 rwxr__r__일 것이다. 권한을 rwxr_xr_x로 바꿔서 실행 권한을 줘야 한다. 일단

ls -l /etc/rc.local

해서 rc.local 파일의 소유자와 소유 그룹, 권한을 확인해본다. 그리고

chmod 755 /etc/rc.local

해서 권한을 바꿔준다.

하지만 755는 보안상 위험하니 되도록이면 권한은 600으로 주고, 600으로 안 될 경우 644로 준다.

sudo init 6

리부팅해서 제대로 작동하나 확인해보자.


free

로 메모리 상태를 확인해보면 메모리는

Mem:        4014828

처럼 4 GB가 있다고 정상적으로 뜨는데 스왚

Swap:             0

처럼 0으로 뜰 것이다. 위 rc.local이 실행이 되지 않은 것이다. 왜냐하면 rc.local에 실행 권한이 있어야 실행이 되기 때문이다.

ls -l /etc/rc.local

해보면

-rw-------

사용자에 읽기와 쓰기 권한만 있는 게 보인다.

sudo chmod +rx /etc/rc.local

해서 읽기와 실행 권한을 사용자, 그룹, 모두에게 추가해준다.

ls -l /etc/rc.local

해보면

-rwxr-xr-x 

읽기와 실행 권한이 추가된 것을 알 수 있다.


이제 리부팅해서

free

해보면

Mem:        4014828  
Swap:       8388604  

이라고 메모리 4 GB, 스왚 8GB가 있다고 제대로 뜬다.



파일 권한 바꾸기 chmod

권한은 앞에서부터 3자리씩 끊어읽어서 소유자, 소유그룹, 모두(everyone)이다. r은 read(읽기 권한), w는 write(쓰기 권한), x는 execute(실행 권한)이다. r은 4, w는 2, x는 1이다. 그래서 r_x면 4+1 해서 5이다.

chmod 755 /etc

는 etc 폴더의 권한을 755로 바꾼다는 의미이다.

chmod -R 755 /etc

하면 /etc 디렉터리와 그 하위 디렉터리 및 파일 모두의 권한을 755로 바꾼다는 의미이다.



파일 소유주 바꾸기 chown

ll a.txt

와 같은 방식으로 소유자, 소유그룹, 권한을 확인할 수 있다.

chown user a.txt
chown :group a.txt

와 같은 방식으로 a.txt 파일의 소유자, 소유그룹을 바꿀 수 있다.

chown user:group a.txt

와 같이 소유자와 소유 그룹을 동시에 바꿀 수도 있다.

우분투아파치 웹 서버의 폴더 및 파일은 기본적으로 www-data가 소유자 및 소유그룹이다.

전체 디스크 암호화를 위해 LUKS 사용

LUKS 암호 변경

우분투 문서 참조.

리눅스 업데이트시 /boot 여유 공간이 부족할 때

우분투데비안 계열 리눅스 업데이트를 하려는데 디스크 여유 공간이 충분하지 않다고 뜨면서 업데이트를 하려면 /boot 파티션에 몇 MB의 공간이 필요하다고 경고가 뜰 때는 다음과 같이 해주면 된다. 참고로 처음부터 /boot를 1GB 정도로 만들면 이런 오류 메시지를 볼 일이 거의 없을 것이다.

$ df -h /boot

위 명령어로 /boot에 남은 공간을 확인한다. 리눅스에서는 마우스로 긁으면 자동으로 복사되고, 터미널에서 휠을 누르면 자동으로 붙여넣기가 되니 그 기능을 사용하면 편하다. 또한 웬만한 파일 이름이나 디렠터리는 앞 글자만 치고 Tab 키를 누르면 다른 파일 이름과 겹치지 않는 부분까지는 자동 완성을 지원한다. 또한 터미널상에서 df나 apt-get 등 각 명령어의 추가 명령어(commands)와 옵션(options) 및 그들에 대한 설명을 보려면 df --help나 apt-get --help 이런식으로 입력하면 된다.

$ uname -r

현재 설치된 커널 정보를 확인한다.

$ dpkg -S vmlinuz

설치되어있는 vmlinuz 커널 목록을 뽑아본다.

$ dpkg -l "*3.13.0-15*" | grep ^ii

커널과 함께 설치된 패키지 목록을 뽑는다. 여기서는 3.13.0-15 기준이지만 여러분의 컴퓨터는 숫자가 다를 것이다. 가장 오래된 패키지부터 지우면 된다.

$ sudo apt-get purge linux-headers-3.13.0-44 linux-headers-3.13.0-44-generic linux-image-3.13.0-44-generic linux-image-extra-3.13.0-44-generic

위에서 나온 패키지 목록을 purge 명령어 뒤에 나열하여 모두 삭제한다. 세부적인 패키지들은 컴퓨터마다 다를 것이다.

$ df -h /boot

/boot에 확보된 공간이 업데이트를 설치하기에 충분한지 확인한다. 만약 충분하지 않으면 커널 및 그에 부속된 패키지들을 하나 더 삭제한다.


만약 패키지의 의존성 문제 때문에 기존 패키지가 삭제가 되지 않으면 아래와 같이 입력하여 의존성 문제를 해결한다.

$ sudo apt-get -f install
  • [Ubuntu] boot 용량 부족으로 업데이트가 안될 때

http://inia30.tistory.com/9

리눅스 설정 방법

리눅스 민트를 깔았는데, 로그인할 때마다 띠링띠링 소리가 듣기 싫을 경우 "메뉴 -> 기본 설정 -> 소리 -> 효과음"에 가서 다 끈다.

리눅스 민트의 경우 "메뉴 -> 보조 프로그램 -> 텍스트 편집기" 아이콘 위에 마우스 커서를 갖다대고 마우스 오른쪽 버튼을 누른 후 "패널에 추가"를 누르면 된다.

한글 설정

한글이 깨져서 뜰 때

칼리 리눅스 설치시 한국어로 설치했음에도 설치 화면만 한글이지 막상 설치가 끝난 후 부팅해보면 한글이 다 깨져서 나온다. 터미널에서

apt-get update

로 소프트웨어 저장소 목록 업데이트한다. 관리자(root) 권한이 필요한 명령어의 경우

sudo apt-get update

와 같은 식으로 앞에 sudo를 붙여서 실행해야 한다.

apt-get install fonts-nanum*

으로 네이버나눔 글꼴(Nanum font)을 설치 후

init 6

리부팅을 한다.

한글 입력기 설치

fcitx-hangul, uim-byeoru, ibus-hangul 이 세개의 한글 입력기를 가장 많이 쓴다.

  • fcitx-hangul

유일하게 Qt5 어플( 포커스 라이터 1.5 - Focuswriter 1.5 등)을 포함한 모든 곳에서 잘 작동하는 입력기 입니다. 다만 , ibus-hangul 과 마찬가지로 페이스북 메신저에서 입력할 때 한/영키가 바뀌지 않는 경우가 가끔 생깁니다.

sudo apt install fcitx-hangul 
  • uim-byeoru

uim은 지금까지 알려진 한글 입력기 중에서 쓰기 가장 무난한 입력기입니다. 다만, Qt5 어플 (포커스 라이터 1.5 - Focuswriter 1.5 등)에서 한글 입력이 제대로 되지 않습니다.

sudo apt install uim uim-byeoru 
  • ibus-hangul

아이버스 한글은 우분투 15.04의 기본 입력기 입니다. 일반 데스크톱 사용자들은 별도의 설정 없이 한글을 사용하실 수 있습니다. ibus-hangul은 웹브라우저 크롬과 파이어폭스 에서 마지막 글자가 여러번 입력되는 현상이 발생합니다. Qt5 어플 (포커스 라이터 1.5 - Focuswriter 1.5 등)에서 한글 입력이 제대로 되지 않습니다.

sudo apt-get install ibus-hangul


리눅스 민트의 경우 Fcitx가 미리 설치되어 있다. "메뉴 -> 시스템 설정(맨 왼쪽 위에서 세번째) -> 언어 -> 입력기 -> 언어 지원 -> 한국어"에서 설치 버튼을 눌러준다.


칼리 리눅스의 경우 한글 입력은 터미널에서

apt-get install fcitx-hangul

을 하여 Fcitx 설치 후

apt-get install fcitx-lib*

을 하여 관련 라이브러리 설치하고

reboot

하여 재부팅한다.


만약

E: Could not get lock /var/cache/apt/archives/lock - open (11: Resource temporarily unavailable)

E: Unable to lock directory /var/cache/apt/archives/

와 같은 메시지가 뜨면서 fcitx-hangul이 설치되지 않으면 터미널

sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock

를 입력해준다.

Kali GNU/Linux Rolling username tty2

username login:

와 같은 터미널 창이 뜨면서 아무 것도 안 될 수 있다.(위의 username은 자신의 계정 이름이다.) 그럴 때는 당황하지 말고 Ctrl+Alt+Del 키를 눌러서 컴퓨터를 리부팅하면 이제 fcitx-hangul을 설치할 수 있다.


칼리 리눅스에서 화면 맨 오른쪽 위의 ▼를 누르면 렌치(또는 스패너)와 드라이버가 X자로 교차된 아이콘이 보이는데 그걸 누르면 " 전체 설정(All Settings)" 메뉴로 들어갈 수 있다. 거기서 "지역 및 언어(Region & Language)" 선택 후 "영어(미국)"을 클릭 후 밑의 -를 눌러서 삭제하면 된다. 한국어에 영어가 포함돼있어서 "영어(미국)"는 필요없다.


보통 리눅스 배포판의 경우 한글 입력기를 설정한 후 로그아웃했다가 다시 로그인하면 입력기가 자신이 설정한 것으로 바뀐다. 그래도 안 되면 컴퓨터를 재부팅하면 된다.

한/영 키 설정

우분투에서는 "한/영" 전환 키가 안 먹히면 그냥 "Shift + space bar"를 써서 전환해도 된다. 입력기에 따라 "Ctrl+스페이스 바"로 전환해야하는 경우도 있다.

리눅스 민트에서는 "메뉴 -> 기본 설정 -> Fcitx 설정 -> 전역 설정 -> 입력기 전환"에 Ctrl+Space와 Hangul이 떠있는 것이 보일 것이다. 데스크탚이면 그냥 한글 키가 먹지만 대다수의 랲탚은 한/영 키가 안 먹으니 Ctrl+Space라고 써져있는 부분을 누른 후 한/영 키를 누르면 Ctrl+Space가 Ralt라고 오른쪽(right) Alt 키로 바뀔 것이다. 랲탚은 공간이 부족하여 오른쪽 Alt 키에 한/영 키 기능을 같이 넣어놔서 그렇다.


웹 브라우저에서 갑자기 한글 입력이 안 될 때는 보조 프로그램의 텍스트 편집기(gedit)에 한글 입력 후 웹 브라우저에 복사&붙여넣기 한다. 매번 같은 문제가 일어나면 한글 입력기를 다른 것으로 바꾼다.


칼리 리눅스에서는 Fcitx 설치시 한/영 키가 먹는다. 칼리 리눅스에서 키보드 제일 아랫줄 왼쪽에 있는 윈도우즈 키(Windows key)를 누르고 input을 입력하여 검색 후 "입력기"에서 Fcitx를 사용하도록 설정하고, 다시 윈도우즈 키로 fcitx config를 검색하여 "Fcitx 설정"으로 들어가 Global Config에서 "입력기 전환" 오른쪽에 보면 "Ctrl+Space", "Hangul"로 설정되어있고, "Extra key for trigger input method"는 "L_SHIFT"로 설정되어있는 것이 보일 것이다. 말 그대로 컨트롤 키와 스페이스 바를 같이 누르거나 한/영 키를 누르거나 왼쪽 시프트 키를 누르면 한국어와 영어 입력기가 상호 전환된다. 만약 한영 전환에 사용할 키를 바꾸고 싶다면 "입력기 전환" 오른쪽의 "Ctrl+Space"라고 써있는 곳을 눌러서 한/영 전환시 사용할 키나 키 조합을 눌러준다. 그러면 그 다음부터는 Ctrl+Space 대신에 그 키로 한영 전환이 될 것이다. 만약 한영키가 안 먹으면 "입력기 전환"의 Ctrl+Space 키를 한영키로 바꿔준다. 특히 노트북 컴퓨터에서 한영키가 별도로 없고, 오른쪽 alt 키를 한영키와 같이 쓸 경우 한영 전환이 안 되는 경우가 많은데 "입력기 전환" 키를 한영키로 바꾸면 Ralt로 바꼈다고 뜰 것이다. 한영키가 정상적으로 있을 경우 Ralt 대신에 Hangul이라고 뜰 것이다. Global Config에서 "윈도우 사이에 상태 공유"가 No로 되어있는데 "모두"로 바꾸면 창 사이에 현재 상태가 한글인지, 영어인지 입력 상태가 공유된다.

키보드에 "윈도우즈 키"가 없는 경우 칼리 리눅스 바탕화면 맨 왼쪽 위의 "프로그램 -> Usual applications -> 시스템 도구 -> 기본 설정 -> 입력기"와 "프로그램 -> Usual applications -> 시스템 도구 -> 기본 설정 -> Fcitx 설정"으로 들어가면 된다.


칼리 리눅스에서 Fcitx를 설치하면 화면 왼쪽 아래에 태극기 아이콘과 키보드 아이콘이 번갈아 뜨는데 한글 입력 상태일 때는 태극기 아이콘, 영어 입력 상태일 때는 키보드 아이콘이다. <를 눌러 화면 왼쪽으로 숨길 수도 있고, 마우스를 갖다 댄 후 >를 눌러 다시 보이게 할 수도 있다. 영어 입력에서 한글 입력으로 바꾸면 커서 아래에 잠깐 동안 Hangul이라는 창이 뜬다.

한자 키 설정

"한자" 키가 안 될 경우에는 "F9" 키를 한자 키 대신에 사용할 수 있다. 노트북 컴퓨터를 쓸 경우 별도의 한자 키가 없고, 오른쪽 Ctrl 키를 한자키로도 사용해서 이런 문제가 생기는 경우가 있다.


리눅스 민트에서는 "메뉴 -> 기본 설정 -> Fcitx 설정 -> 애드온 -> Hangul (Hangul Wrapper For Fcitx) -> Hanja Mode Toggle Key (한자 모드 변환 키)"에 가보면 Hangulhanja와 F9라고 써있는 것이 보일 것이다. 데스크탚이면 그냥 한자 키가 먹지만 대다수의 랲탚은 한자 키가 안 먹으니 Hangulhanja라고 써져있는 부분을 누른 후 한자 키를 누르면 Hangulhanja가 Rctrl이라고 오른쪽(right) Ctrl 키로 바뀔 것이다. 만약 안 되면 그 옆에 메뉴 키(마우스 오른쪽 버튼 누르면 메뉴 뜨듯이 누르면 메뉴가 뜨는 키)가 있을 경우 메뉴 키를 대신 등록해도 된다. 그러면 Hangulhanja가 Menu라고 바뀔 것이다.


칼리 리눅스에서는 Fcitx 설치시 한자 키가 먹는다. 한자 전환 키 변경은 키보드 제일 아랫줄 왼쪽에 있는 윈도우즈 키(Windows key)를 누르고 fcitx를 검색하여 "Fcitx 설정"으로 들어가 "Addon -> Hangul (Hangul Wrapper For Fcitx) -> 한자 모드 변환 키 -> Hangulhanja"를 누른 후 한자 전환 키로 사용할 키나 키 조합을 눌러준다. "한자 모드 변환 키" 메뉴 옆에 있는 Hangulhanja(한자 키)와 F9가 한자 변환에 쓰일 키라는 의미이다. 윈도우즈 키가 없는 경우 Fcitx 설정은 "프로그램 -> Usual applications -> 시스템 도구 -> 기본 설정 -> Fcitx 설정"으로 들어가도 된다. 노트북 컴퓨터 등에서 한자키가 오른쪽 컨트롤 키와 같은 키일 경우 Hangulhanja 대신에 Rctrl로 뜰 수도 있다.

업그레이드 후 한글이 안 될 때

칼리 리눅스 등에서 문자 입력기로 Fcitx를 쓰다가 배포판 업데이트 후 한/영 전환, 한자 키 등이 안 먹히면 터미널에서

sudo apt-get purge fcitx-hangul

을 하여 fcitx-hangul을 제거 후

sudo apt-get install fcitx-hangul

을 하여 fcitx-hangul을 다시 설치한다. 그 후 컴퓨터를 리부팅하면 된다.


영어 환경에서 입력기만 한글을 사용하고 싶을 때

보이는 메뉴는 다 영어로 뜨면서 한글 입력만 하고 싶을 때는 일단 한국어 버전으로 설치했다 영어로 변경하는 게 편하다. 영어 버전으로 설치하면 한국어로 설정하는 게 힘들다.


우분투의 경우 일단 한국어로 설치하고, 한국어 지원과 한글 입력기를 설치하여 한글이 제대로 보이고 입력되는지 확인한다. 그 후 바탕화면 오른쪽 위의 ▼를 클릭하고, 드라이버렌치(스패너)가 교차하는 모양의 아이콘을 눌러 설정(Settings)으로 들어간다.


"지역 및 언어"를 선택한다. "언어"를 "한국어"에서 "English (United States)"로 변경한다. "형식"도 "대한민국"에서 "United States로 변경한다. "날짜" 형식이 미국은 11/08/2018이고, 영국은 08/11/18이다. 그러나 "날짜 및 시각" 형식은 미국식이 Thu 08 Nov 2018 04:03:53 PM IST처럼 뜨고, 영국식은 Thu 08 Nov 2018 16:03:53 IST처럼 떠서 별 차이가 없다.


시간대(time zone)와 하루를 24시간 기준으로 띄울 지, 오전/오후로 12시간 기준으로 띄울 지는 Settings -> Detail -> Date & Time에서 바꾼다. 시간대는 Time Zone에서 바꾸면 되고, 하루를 24시간이나 12시간 기준으로 할 지는 Time Format에서 24-hour와 AM/PM 중에서 하나를 고르면 된다. 참고로 IST이스라엘(Israel)의 예루살렘(Jerusalem) 기준 시간대이다.


설정을 다 바꾸고, 로그아웃했다가 로그인 하거나, 컴퓨터를 껐다 켜면 바뀐 설정이 적용되어 있다. 그리고 표준 폴더(standard folder) 이름을 현재 언어에 맞게 바꿀거냐고 물어본다.

바탕화면 -> Desktop

다운로드 -> Downloads

템플릿 -> Templates

공개 -> Public

문서 -> Documents

음악 -> Music

사진 -> Pictures

비디오 -> Videos

Update Names를 클릭하면 폴더 이름이 위와 같이 바뀐다.

리눅스 기본 사용 방법

root 계정으로 변경 및 비밀번호 변경

일반 사용자 계정으로 로그인한 상태에서

su

를 하면 최고 관리자(root) 계정으로 로그인 됨.

root 상태에서

su username

를 하면 username 계정으로 로그인 됨.

터미널 종료는

exit

을 입력하면 됨. 일반 사용자 계정에서 su를 입력하여 최고 관리자 계정으로 로그인한 경우에는 exit을 입력하면 최고 관리자 계정에서 로그아웃 되어 다시 일반 사용자 계정으로 돌아옴.


평상시에 su를 사용하는 건 위험하니

sudo

를 명령어 앞에 입력하여 최고 관리자 권한을 잠깐만 빌려와서 써야 한다.

passwd

를 입력하면 현재 계정의 비밀번호를 변경할 수 있다.

다른 옵션을 보려면

passwd --help

를 터미널에 입력하면 된다.

사용자 추가하고 sudo 권한 주기

리눅스가 윈도우즈보다 안전한 이유는 컴퓨터에 대한 통제 권한을 가진 root(컴퓨터 최고 관리자) 계정을 안 쓰고, 일반 사용자 계정을 쓰기 때문에 해커가 root 권한을 획득하기 전에는 컴퓨터에 대한 완전한 통제권을 얻을 수 없기 때문이다. 하지만 리눅스 사용자라도 평상시에도 일반 사용자 계정을 안 쓰고 root 계정을 쓴다면 리눅스도 윈도우즈만큼이나 해킹에 취약해진다. 왜냐하면 root 상태에서 악성 코드라도 실행되었다가는 바로 컴퓨터가 장악되기 때문이다. 하지만 일반 사용자 계정에서는 프로그램 설치 전에 비밀번호를 입력하여 sudo 권한(일반 사용자 계정이 임시로 발급받는 root 권한) 상태로 만들어야하기 때문에 당신이 직접 악성 프로그램을 자신의 컴퓨터에 설치하기 전에는 설치되지 않는다. 그리고 아무리 sudo 권한 사용자 계정이라도 비밀번호는 root와 다른 편이 보안상 더 안전하다.


우분투리눅스 민트는 최초 설치시에 root 계정을 만들지 않으며 일반 사용자 계정만 만든다. 대신에 sudo 명령어를 사용하여 일반 사용자가 임시로 root 권한으로 명령어를 실행할 수 있게 한다. 칼리 리눅스는 설치시에 root 계정만 만들고 일반 사용자 계정을 만들지 않는다. 따라서 설치 후 따로 일반 사용자 계정을 만들어주어야 한다. 왜냐하면 평상시의 평범한 작업까지 root 계정으로 하는 것은 보안상 위험하기 때문이다.


우분투Debian 계열의 경우 useradd와 adduser 모두 사용할 수 있지만, 차이는 있다.

useradd : 순수 계정만 생성해주고, 기본 셸인 sh가 할당된다. (홈 디렉토리 / 패스워드 등을 따로 설정 해 주어야함.)

adduser : 계정생성 및 비밀번호 와 사용자 정보를 입력받아 계정을 생성하고, 사용자가 설정한 기본 셸을 사용자의 셸로 지정해 주고 홈 디렉토리도 만들어 준다.


터미널에서 su 명령어로 root가 된 후

adduser username

을 하여 새로운 유저를 추가한다. username엔 사용할 사용자 이름을 넣으면 된다.

그리고 사용할 비밀 번호 입력하고, 추가 정보 5개는 그냥 입력 안 하고 엔터를 치면 된다.


일반 사용자에게 sudo 권한(명령어 실행 시 root와 같은 권한을 갖게 해주는 명령어)을 주는 건 터미널에서

ls -al /etc/sudoers

해서 /etc/sudoers 파일의 권한을 확인해본다. -r--r-----라고 되어 있으면

sudo chmod u+w /etc/sudoers

해서 해당 파일의 소유주인 root에게 쓰기 권한을 준다. ls -al /etc/sudoers 해보면 -rw-r-----로 바뀐 것을 알 수 있을 것이다.

sudo gedit /etc/sudoers

지에디트에서 sudoers 파일을 연다. 가상 전용 써버(VPS)에서는

vim /etc/sudoers

라고 하면 된다. 그리고 root ALL=(ALL:ALL) ALL 밑에

username	ALL=(ALL:ALL) ALL

을 추가한다. username 자리엔 본인의 사용자 계정을 적어준다. 그리고 sudo chmod u-w /etc/sudoers 해서 root에게서 sudoers 파일의 쓰기 권한을 박탈한다. ls -al /etc/sudoers 해보면 -r--r-----라고 뜨는 걸 볼 수 있을 것이다.


chmod에서 u는 파일의 소유자인 user를 의미하고, g는 group, o는 others, a는 all을 의미한다. chmod u+x somefile은 파일의 소유자에게 somefile의 실행 권한을 준다는 의미이다. chmod +x somefile은 chmod a+x somefile와 같은 의미이다.

파일 및 디렠터리 관리

파일 및 디렠터리 목록과 권한 보여주기

cd yourgirlfriends 

하여 yourgirlfriends 디렠터리로 이동 후

ls 

하면 yourgirlfriends 디렉터리 안의 파일폴더를 보여준다. ls에서 ls는 list의 약자이다. ls (list files in your current directory)

ls -l yourbozy

처럼 ls -l 하면 파일의 목록뿐만 아니라 각 파일과 폴더의 권한(rwxr-xr-x같은 것)도 보여준다. 여기서는 yourbozy라는 파일의 권한을 보여준다.

-rwxr-xr-- 

와 같은 식으로 뜰 것이다.

파일 및 폴더 권한 바꾸기

cmown manager.smgroup /home/myfamily/mywife

와 같이 하면 myfamily 디렉터리에 있는 mywife라는 파일의 소유자가 manager로 바뀌며, 소유 그룹은 smgroup으로 바뀐다.


특정 폴더와 그 하위 폴더 및 파일 전체에 대한 소유자와 소유 그룹을 바꿔줄 경우 터미널에서

chown -R manager.smgroup /home/myfamily/mywife

처럼 해준다.


chown은 change owner의 줄임말로 파일이나 폴더의 소유자를 바꿔주는 유닉스리눅스명령어이다. R 옵션을 디렉터리에 주게되면, 하위 폴더와 파일 전체의 소유자와 소유 그룹이 바뀌게 되어, 파일과 폴더 하나마다 일일이 변경해주는 번거로움이 없어진다.


ls -l mywife

rwxr-xr--

라면 소유주인 는 mywife의 을 벗겨 하얀 속살을 보고(read), 자궁에 새로운 아이를 만들어 임신(write)시키고, 자지삽입하여 성관계실행(execute)시킬 수 있다. 소유 그룹인 myfamily는 mywife의 옷을 벗기고 속살을 볼 수 있고(r), 빠구리 실행도 가능(x)하지만, 임신시키는 것(w)은 불가능하다. 지나가던 동네 양아치건달은 mywife의 을 벗겨 유방이나 엉덩이를 만지고 유두보지를 빠는 건 되지만 강간이나 윤간 실행은 할 수 없다.

chmod 467 mywife

를 해주면 파일의 권한이

r--rw-rwx

처럼 변경된다. r은 4, w는 2, x는 1로 맨 앞자리 숫자는 소유자의 권한, 두번째 숫자는 소유 그룹의 권한, 마지막은 모두(everyone)의 권한이다. 이 10진법 4, 2, 1은 2진법 100, 10, 1이다. 원래 이진법이었던 것을 십진법으로 나타낸 것에 불과하다. 이렇게 권한을 변경하면 나는 mywife의 맨살만 볼 수 있고, myfamily는 옷을 벗겨 알몸을 보거나 시험관 수정으로 임신은 시킬 수 있지만 성관계는 할 수 없으며, 동네발정수캐들 모두는 mywife의 옷을 벗기고, 강간하고, 임신시킬 수 있다.

파일 시스템 내에서 작업 중인 디렉터리 변경

pwd

현재 작업 중인 디렠터리 보여주기. pwd (print working directory)


cd folder_name

folder_name 폴더로 이동한다. cd (change down a directory)

cd ..

바로 위의 상위 폴더로 이동. 점 두개는 상위 폴더, 점 하나는 지금 폴더라는 의미다. cd .. (change up a directory)


cd ../..

cd ../../

는 상위 폴더로 두 번 가라는 소리다.


cd ../../..

cd ../../../

는 상위 폴더로 세 번 가라는 소리다.

/var/www/html/styles/prosilver/template/

와 같은 디렉터리 구조에서 지금 template 디렉터리에 있다면 html 디렉터리로 이동하여

/var/www/html/

처럼 되라는 소리다.


cd ~

자신의 홈 디렉터리로 이동. root 사용자는

/root

가 자신의 홈 디렉터리다. 일반 사용자는 계정이

/home

아래에 있다. 즉, 계정이 user면

/home/user

가 자신의 홈 디렉터리다.

파일 실행

/root/tor-0.3.1.7/src/or/new_folder

와 같은 구조에서 지금 tor-0.3.1.7이라는 디렉터리에 있고, or 디렉터리에 tor라는 파일을 실행시키려고 한다면

/src/or/tor

과 같이 입력하여, 현재 폴더에 있는 src 폴더에 있는 or 폴더에 있는 tor라는 파일을 실행시킨다. 만약

cd src/or

로 or 디렉터리로 이동했다면

./tor

는 현재 디렉터리에 있는 tor라는 파일을 실행하라는 의미이다. 여기서

cd new_folder

해서 하위 디렉터리인 new_folder로 이동했다면

../tor

는 상위 디렉터리인 or에 있는 tor라는 파일을 실행하라는 의미이다.


/home/user_name/folder1/program1

folder1에 있는 program1을 실행시킨다. 이렇게 전체 디렉터리 구조를 다 써주면 지금 자기가 디렉터리 구조상의 어디에 있든지 파일의 실행이 가능하다. 파일 이름 변경이나 이동, 삭제, 생성 등도 이렇게 전체 디렉터리 구조를 다 써주면 자기가 지금 디렉터리 구조 중 어디에 있든 명령을 실행할 수 있다. 위 명령은 각 사용자의 홈 디렉터리라는 의미인 ~를 써서 간단히

~/folder1/program1

으로 입력해도 되고, cd 명령어로 folder1으로 이동한 후

./program1

이라고 입력해도 된다.


파일 및 디렠터리 만들기

touch

파일 만들기. touch (create a new file)

touch baby_girl

baby_girl이라는 파일을 만든다.


mkdir

디렠터리 만들기. mkdir (make directory)

mkdir anal-pussy

anal-pussy라는 디렠터리를 만든다.


파일 및 폴더 이동 및 이름 변경

mv는 move의 약자로 파일이나 폴더를 다른 위치로 이동시킨다. 예를 들어 현재 위치에서 brothel라는 폴더가 있을 경우

mv girl brothel

을 하면 girl이라는 이름을 가진 파일이나 폴더가 brothel이라는 이름을 가진 폴더 속으로 이동한다. 하지만

mv virgin whore

이런식으로 파일이나 폴더의 이름을 바꿀 때도 mv를 쓴다. 위와 같이 입력하면 virgin이라는 이름을 가진 파일이나 폴더의 이름이 whore로 바뀐다.


파일 및 폴더 삭제

rm babytits

처럼 rm 명령어파일을 지운다. 우분투처럼 데비안 계열에서는 그냥 지우지만 센트OS처럼 레드 햇 계열에서는 파일 삭제시 일일이 물어본다. y를 눌러서 yes해서 지워도 되지만 아마

rm -f filename

처럼 오류가 있어도 강제로 지우는 -f 옵션을 넣으면 CentOS에서도 물어보지 않고 그냥 지울 것이라고 생각된다.

rmdir girltits

처럼 rmdir 명령어로 폴더를 지운다.

rm -rf womantits

와 같이 내용물이 있는 디렉터리를 지우려면 rm -rf 로 지워야 한다. r은 하위 폴더까지 지우라는 의미이고, f는 오류가 있어도 무시하고 진행하라는의미이다. 디렉터리 생성 명령은 mkdir이다. rm은 remove의 약자, dir은 directory의 약자, mk는 make의 약자이다. cd는 change directory의 약자이다.


폴더나 파일 이름에 띄어쓰기가 있을 경우

터미널에서 폴더나 파일 이름에 띄어쓰기가 있을 경우, 디렉터리파일 이름 전체를 따옴표로 묶으셔서 처리해도 되고, 아니면 \를 써서 공백문자를 표시할 수도 있습니다. 예컨대, rape girls라는 디렉토리로 들어가시고 싶다면,

cd "rape girls"

cd 'rape girls'

또는

cd rape\ girls

셋 중 아무거나 쓰면 됩니다. \ (백슬래시, backslash) 기호는 한국어 키보드에서는 (원화) 기호인 경우가 많습니다. 키보드의 ₩ 를 눌러도 정상적으로 \가 입력되니 그냥 누르면 됩니다.

참고로 /슬래시(slash) 기호입니다. 유닉스, 리눅스, 비에스디(BSD), 맥OS 등 윈도우즈를 제외한 모든 운영 체제에서 / 를 디렉터리 계층을 나타내는데 쓰고, 오직 윈도우즈에서만 \ 를 디렉터리 계층을 나타내는데 씁니다.


압축하기 및 압축풀기

  • .zip

압축

$ zip -r [압축파일명.zip] [압축할 파일/디렉토리]

압축 해제

$ unzip [압축파일명.zip]

  • .tar

압축

$ tar cf [압축파일명.tar] [압축할 파일/디렉토리]

압축 해제

$ tar xf [압축파일명.tar]

  • .tar.gz

압축

$ tar zcf [압축파일명.tar.gz] [압축할 파일/디렉토리]

압축 해제

$ tar xfz [압축파일명.tar.gz]

  • .tar.bz2

압축

$ tar jcf [압축파일명.tar.bz2] [압축할 파일/디렉토리]

압축 해제

$ tar xfj [압축파일명.tar.bz2]

  • .tar.xz - 이중으로 압축을 풀어야 합니다.

압축 해제 (.xz 압축 해제 -> tar 압축 해제)

$ xz -d [압축파일명.tar.xz]

$ tar -xf [압축파일명.tar]

단축키

  • 수퍼 키

리눅스BSD에서의 수퍼 키(super key)는 윈도우즈에서는 윈도우즈 키(Windows key)이고, 맥OS애플 컴퓨터에서는 커맨드 키(command key, ⌘)이다.

슈퍼 키리눅스 민트에서는 메뉴 버튼(윈도우즈의 시작 버튼) 속 내용을 띄워주고, 우분투칼리 리눅스에서는 메뉴 속 항목이나 파일 검색을 위한 창을 띄워준다. 이건 윈도우즈 XP시작 버튼의 실행창이나, 윈도우즈 7시작 버튼의 프로그램 및 파일 검색과 비슷하다.

https://u.osu.edu/5226sp17/2017/01/30/windows-key/

https://blog.hanschen.org/2012/10/17/open-application-launcher-with-super-key/

http://osxdaily.com/2013/09/24/5-command-key-tricks-for-mac-os-x/

마우스은 버튼이 하나, 윈도우즈는 버튼이 두 개, 리눅스는 버튼이 셋이다. 윈도우즈용 마우스를 리눅스에서 쓸 때는 휠이 가운데 버튼 역할을 한다. 즉, 휠을 클릭하면 가운데 버튼을 클릭했을 때와 같은 동작을 한다.

  • 터미널 띄우기: Ctrl + Alt + T

우분투리눅스 민트에서 터미널 창을 띄웁니다. 칼리 리눅스에서는 단축키로 설정이 되어 있지 않습니다.

  • 터미널에서 새 탭 열기: Shift + Ctrl + T
  • 터미널 종료: Ctrl + D
탭이 여러 개 열려있을 경우, 탭 하나만 닫습니다.
  • 터미널에서 붙여넣기 : Ctrl + Shift + V
복사한 파일이나,경로를 터미널에서 붙여 넣을때 사용합니다. 일반적인 복사는 Ctrl + C, 모두선택은 Ctrl + A, 붙여넣기는 Ctrl + V 입니다.
  • 실행중인 프로그램 전환 : Alt + Tab (역순으로 전환은 Alt + Shift + Tab)

지금 실행중인 프로그램들이 많거나 다른프로그램 실행중에 일일이 창을 찾아가기 번거롭죠? 그럴때 실행중인 프로그램들을 바로 찾아갑니다.(윈도우도 같은 단축키를 사용합니다)

  • 창닫기 : Alt + F4 또는 Ctrl + Q

실행중인 프로그램을 닫아버립니다. 단, 터미널 창은 Ctrl + Q로는 종료되지 않습니다. 터미널 창을 닫으려면 Ctrl + D나 Alt + F4로 해야 합니다.

  • 명령어 바로 실행: Alt + F2

터미널을 실행하지 않고 프로그램을 바로 실행할때 사용합니다. "윈도우의 윈도우 + r"과 같은 기능입니다. 예를 들어, Alt + F2를 한 후 google-chrome을 입력하면 구글 크롬이 실행됩니다.

  • 숨김 파일 및 폴더 보기: Ctrl + H

한 번 더 누르면 원래대로 돌아간다. 숨김 파일 및 폴더는 이름 앞에 점(.)이 붙어있다.

  • 시스템 종료 : Ctrl + Alt + Delete

"사용자 바꾸기, 취소, 로그아웃"의 세 가지 메뉴가 뜬다. 우분투에서는 사용자 바꾸기 또는 로그아웃. 칼리 리눅스에서는 컴퓨터 다시 시작 또는 끄기.

  • 강제로그아웃 : Ctrl + Alt + 백스페이스

주의 하세요,아무 경고도 없이 모든 프로그램을 종료하고 로그아웃시킵니다. 어떤경우에 프로그램이 멈추는 프리즈 상태일때 사용하게 됩니다. 물론 잘못 동작하는 프로그램 강제종료하기가 별도로 메뉴바에 설치되지만 알아두면 좋은, 그리고 평소에도 자주 사용하게 되는 단축키랍니다.

  • 작업공간 화면전환 : Ctrl + Alt + 좌우화살표

게임 화면,오피스화면,인터넷 화면등등 쓰임에 맞게 작업공간을 따로 열어서 사용할때 쓰입니다.

  • 화면 잠금 : Ctrl + Alt + L

라디오를 듣거나, 음악을 들으며 자려고 할때, 모니터를 끄는것 보다는 주로 사용하게 되더군요.

  • 메뉴 바로가기 : 왼쪽Ctrl + 왼쪽Super(윈도우)

메뉴바의 메뉴바로가기 단축키입니다. 리눅스에서는 Super Key, 윈도우에서는 Windows Key 라고 불리죠

  • 자신만의 단축키 만들기

별도의 단축키 설정은 http://blog.daum.net/bagjunggyu/10 를 참고하세요.

리부팅 명령어

init 6
reboot
shutdown -r now

셋 다 리부트(reboot) 명령어이다.

https://unix.stackexchange.com/questions/64280/what-is-the-difference-between-reboot-init-6-and-shutdown-r-now

메모리와 HDD 남은 용량 확인

리눅스에서 남은 메모리 및 스왑(swap) 공간 용량 확인은 터미널에서

free

로 한다.

HDD에 남은 용량 확인은

df -h

로 한다.

파일 시스템 타입(ext4, NTFS, FAT32 등) 확인은

df -T

로 한다.

용량과 파일 시스템 확인을 동시에 하려면

df -Th

df -hT

를 입력한다.

df 명령어에 붙일 수 있는 다른 옵션을 보려면

df --help

를 입력한다. --help는 다른 명령어에서도 대부분 쓰이는 옵션이다. 일부 명령어는 -h가 --help와 같은 기능인 경우도 있다.

파티션 목록 보기

fdisk -l

파티션 목록을 보여준다.

실행 중인 프로세스 종료하기

프로그램이 응답을 하지 않아 강제 종료를 하려면 일단

ps

로 실행 중인 프로세스(process) 목록을 본다. ps로 찾으려는 프로세스가 목록에 안 보일 경우

ps -A

로 실행 중인 모든 프로세스 목록을 확인해본다. CMD 아래의 이름을 보면 무슨 프로그램인지 확인할 수 있다. 그 후 해당 프로그램 왼쪽의 PID의 숫자를 확인한다. 예를 들어 종료하려는 프로세스의 CMD가 tor고, PID가 2104면

kill -15 2104

를 입력한다. 그러면 해당 프로그램에 종료 명령이 가고, 해당 프로그램은 프로그램을 종료하려고 시도한다. 만약 15 옵션이 듣지 않으면 9 옵션을 시도해본다.

kill -9 2104

9 옵션은 커널(kernel)에서 해당 프로세스를 강제 종료시키는 것이다. 같은 프로그램이라도 매번 실행시킬 때마다 PID 번호가 바뀐다.


PID는 process identifier의 줄임말이다.


간단하게

ps -A | grep tor

처럼 검색해도 된다.

5952 pts/0    00:00:08 tor

와 같이 뜨면 5952가 PID이다.

하드 링크, 심볼릭 링크

하드 링크(hard link)는

ln 원본 링크파일

처럼 만든다. cp 명령어는 동일한 파일을 하나 더 만드는 것이라 하드 디스크 드라이브의 공간을 차지한다. 하드 링크는 동일 파일에 대한 링크만 하나 더 만드는 것이라 공간을 더 차지하지 않는다. 심볼릭 링크는 그 파일에 대한 링크를 만드는 것이다. 파일이라는 것은 하드 디스크 드라이브의 여기저기에 나눠서 저장되어있고, 아이노드(inode)의 정보를 통해 우리가 접근할 수 있도록 링크되어 있다. 이것을 하드 링크라고 한다. 심볼릭 링크는 이 하드 링크에 대한 링크이다. 아이노드 넘버(inode number) 또는 아이넘버(inumber)는 inode에 붙은 식별 번호이며

ls -i /root/fuckyou.html

하면 98116 /root/fuckyou.html 처럼 뜬다.


심볼릭 링크(symbolic link)는

ln -s 원본 링크파일

처럼 만든다. 원본은 폴더와 파일이 모두 가능하다.

예를 들어

ln -s /etc/httpd/sites-available/html1.conf /etc/httpd/sites-enabled/html1.conf

처럼 하면 된다. 위 명령의 의미는 /etc/httpd/sites-available/html1.conf 파일의 심볼릭 링크를 /etc/httpd/sites-enabled/ 디렉터리에 html1.conf라는 이름으로 만들라는 의미이다.

그리고 심볼릭 링크를 만들어줄 때는 위의 예시처럼 절대 경로로 만들어줘야지

cd /etc/apache2/sites-available
ln -s html1.conf ../sites-enabled/html1.conf

와 같이 상대 경로로 만들어주면 문제가 생기는 것 같다.


심볼릭 링크 삭제는 파일 삭제와 마찬가지로

rm html1.conf

와 같은 식으로 하면 된다.


윈도우즈에서 바로가기를 클릭하면 원본 파일이 열리는 것처럼 리눅스에서도 심볼릭 링크vim에서 열어서 수정하면 원본 파일이 수정된다. 물론 바로가기를 삭제한다고 원본 파일이 삭제되지 않는 것처럼, 심볼릭 링크를 삭제한다고 원본 파일이 삭제되지는 않는다.

swap 메모리 초기화

리눅스에서 swap 메모리를 초기화하는 것은 아주 간단하다. 일시적 메모리 사용의 증가로 swap을 사용하게될 경우 메모리에 여유가 생겨도 swap 메모리는 자동으로 초기화되지 않는다. 이것을 수동으로 초기화하려면 아래의 명령을 입력하면 된다. 당연히 root 권한에서 실행해야 한다.

swapoff -a && swapon -a

swapoff 처리에 시간이 조금 오래 걸릴 수 있는데 서버가 멈춘 것은 아니므로 걱정하지 않아도 된다. swap 메모리에서 필요한 부분을 물리 메모리로 옮기는 처리중인 것이다.

buffer와 cache 비우기

pagecache 해제

echo 1 > /proc/sys/vm/drop_caches

dentries, inodes 해제

echo 2 > /proc/sys/vm/drop_caches

pagecache, dentries, inodes 모두 해제

echo 3 > /proc/sys/vm/drop_caches

플러싱하기

sync


현재 drop_caches 상태를 확인하기 위해

cat /proc/sys/vm/drop_caches

하면 0이라고 뜬다.

free -m

하면 사용 중인 메모리(memory), 스왚(swap), 버퍼(buffer), 캐시(cache)가 뜬다.

echo 3 > /proc/sys/vm/drop_caches

하고

cat /proc/sys/vm/drop_caches

으로 확인해보면 3이라고 뜬다. 즉, drop_caches를 3으로 조정해서 pagecache, dentries, inodes 캐시 메모리 영역을 해제한 것이다.

다시

free -m

해보면 버퍼와 캐시가 줄어들거나 0이 된 것을 확인할 수 있다.


linux에서 top 또는 free 명령으로 메모리 상황을 보면 "buff/cache" 항목이 있다. 이 부분은 실제로 직접 사용하고 있는 메모리가 아니라 말그대로 버퍼와 캐시에 사용된 메모리를 뜻한다. 그렇다면 "굳이 왜 이것을 비우려고 하는가?"하는 의문이 생길 수 있다.

일반적으로 캐시는 느린 장치의 데이터를 빠른 장치에 임시 보관해두고 사용함으로써 성능을 높이는 것이 목적이다. 따라서 캐시는 당연히 사용하는게 좋다. 하지만 hit(적중률)가 낮은 경우엔 캐시를 사용하는 것이 부정적인 영향을 미칠 수 있다. 빠른 장치는 당연히 공간이 한정되어 있기 때문에 모든 정보를 캐시할 수 없으므로 캐시를 관리해야 한다. 이 과정에서 발생하는 비용이 캐시를 사용하는 것보다 크다면 캐시는 사용하지 않는 것이 좋다는 것이다. 캐시에 관한 자세한 내용은 여기서 다루고자하는 것이 아니니 이정도만 설명하고 넘어가자.

실질적으로 이것이 어디에 필요한지에 대해 알아보자.

linux에서는 기본적으로 디스크 상의 파일을 읽을 경우 해당 파일을 닫아도 free 메모리로 모두가 즉시 반환되지 않는다. 이유는 이 파일의 정보를 다음 사용에 대비해 cache하기 때문이다. 보다 자세한 내용을 확인하고 싶다면 메모리 관리 (Memory Management)를 참고하자. 이런 파일의 cache와 관련하여 os / mysql 등 여러 분야의 성능 튜닝 내용 등을 쉽게 찾을 수 있다.

대량의 파일이 관리되는 서버의 파일 cache hit가 낮은데 비해 buffer / cache 메모리 사용량이 높을 경우 해당 cache 기능을 끄거나 주기적으로 비움으로써 성능을 개선할 수 있다.

우선 아래와 같이 선택적으로 cache를 비울 수 있다. sync 명령을 사용하는 이유는 해당 cache 기능을 비우기 전에 사용중인 데이터를 sync하기 위한 것이다.


pagecache 비우기

sync
echo 1 > /proc/sys/vm/drop_caches

또는

sync
sysctl -w vm.drop_caches=1


dentries, inodes 비우기

sync
echo 2 > /proc/sys/vm/drop_caches

또는

sync
sysctl -w vm.drop_caches=2


pagecache, dentries, inodes 모두 비우기

sync
echo 3 > /proc/sys/vm/drop_caches

또는

sync
sysctl -w vm.drop_caches=3


위에서 1,2,3으로 지정한 값들은 영구적 설정이 아니라 설정되는 그 시점에만 적용된다. 바꿔서 이야기 하자면 /proc/sys/vm/drop_caches는 파일이 아니라 명령어인 셈이다. 실제로 아래와 같이 기본값인 0으로 되돌리려고하면 오류가 난다.

echo 0 > /proc/sys/vm/drop_caches

하면

-bash: echo: write error: 부적절한 인수

라고 뜬다.


참고로 VPS에서

echo 3 > /proc/sys/vm/drop_caches

하면

-bash: /proc/sys/vm/drop_caches: Permission denied

라고 뜬다. 심지어 root 사용자임에도 위와 같이 권한이 없어서 실행이 안 된다는 메시지가 뜰 수 있다. 저런 게 싫으면 가상 사설 써버가 아니라 진짜 써버를 임대하면 된다.

소프트웨어 설치 및 사용

python torchat.py


./i2prouter start


cd iMule-2.3.2.3/
cd bin/
./imule 


http://127.0.0.1:7657/i2psnark/

아이투피를 쓰도록 설정된 웹 브라우저의 주소창에 위와 같이 입력한다.

프로그램 설치 및 제거

프로그램의 설치, 제거, 업그레이드는 apt-get으로 한다.

apt-get --help

를 하면 apt-get과 함께 쓸 수 있는 옵션과 설명을 보여준다.

apt-get update

업데이트가 나온 프로그램이 있는지 확인 후 패키지 목록을 새로 가져옵니다.

apt-get upgrade

설치된 프로그램들의 업그레이드를 합니다.

sudo apt-get dist-upgrade 

리눅스 배포판 업그레이드

sudo apt-get install package_name

package_name 설치

sudo apt-get remove package_name

package_name 제거

sudo apt-get purge package_name

package_name 및 설정 파일 제거

sudo apt-get -f install

의존성이 맞지 않는 패키지를 지우고 의존성이 맞는 패키지 설치


sudo dpkg -i package_name.deb 

package_name.deb 패키지 파일 설치(install)

sudo dpkg -r package_name

package_name 패키지 제거(remove)

sudo dpkg -P package_name

package_name 패키지와 설정 파일 제거(purge)

구글 크롬

https://www.google.com/chrome/browser/desktop/index.html 에서 google-chrome-stable_current_amd64.deb을 다운로드 받는다. 다운로드 받은 deb 파일을 홈 디렉터리로 옮긴다. 터미널에서

sudo dpkg -i google-chrome-stable_current_amd64.deb

을 눌러 설치한다. sudo dpkg -i goo까지만 치고 Tab 키를 누르면 자동완성된다. dpkg는 소프트웨어 설치 명령어라 관리자 권한이 필요하여 앞에 sudo를 붙인다.

google-chrome &

을 눌러 구글 크롬을 백그라운드(background)로 실행시킨다. 역시 goo까지만 누르고 Tab 키를 누르면 자동완성된다. 크롬은 &를 안 붙이고 포어그라운드(foreground)로 실행시키면 터미널에 계속 떠있어서 다른 명령어를 입력하려면 새 터미널 창을 띄워야한다. 게다가 지금 쓰는 터미널 창을 닫으면 크롬도 같이 종료된다.


리눅스 민트의 경우 "메뉴 -> 인터넷 -> Google Chrome" 아이콘 위에 마우스 커서를 갖다대고 마우스 오른쪽 버튼을 누른 후 "패널에 추가"를 누르면 된다.

칼리 리눅스의 경우 크롬이 실행된 후 왼쪽 대시보드(dashboard)의 크롬 아이콘에 마우스 오른쪽 클릭하여 "즐겨찾기에 추가"를 해주면 다음부터는 마우스 클릭만으로 실행할 수 있다.

트루크맆트

https://github.com/DrWhax/truecrypt-archive 에서 truecrypt-7.1a-linux-x64.tar.gz 파일을 다운로드 받은 후

tar xfz truecrypt-7.1a-linux-x64.tar.gz

하여 tar.gz 압축을 풀어준다. 그러면

truecrypt-7.1a-setup-x64

라는 파일이 생겼을 것이다. 그 후 터미널

./truecrypt-7.0a-setup-x64 

와 같은 명령어를 입력해서 트루크맆트를 설치를 시작한다.

1) Install truecrypt_7.1a_amd64.tar.gz

2) Extract package file truecrypt_7.1a_amd64.tar.gz and place it to /tmp

라고 뜨는데 1을 입력 후 엔터를 친다. 그리고 또 엔터를 쳐서 license terms가 뜨게 한다. 그 후 키보드의 End 키로 라이선스 조항을 끝까지 내린다. 그 후 yes를 입력하여 라이선스 조항에 동의한다고 쓴다. 이제 자신의 사용자 비밀번호를 입력하여 관리자 권한으로 TrueCrypt를 설치한다. 설치가 끝나면 엔터를 눌러 종료한다. 이제 터미널에서

truecrypt &

을 입력하여 트루크맆트를 실행시킨다. 터미널에서 포어그라운드(foreground)는 사용하기 불편하니 &을 뒤에 붙여 백그라운드(background)로 트루크맆트를 실행시킨다.


우분투의 경우 실행 후 런처에 고정시켜 놓고 사용하고, 리눅스 민트의 경우 "메뉴 -> 보조 프로그램 -> TrueCrypt"에 있다. 칼리 리눅스도 런처가 있으며 트루크맆트를 실행시킨 후 런처에 아이콘이 뜨면 마우스 오른쪽 클릭 후 "즐겨찾기에 추가"를 눌러서 즐겨찾기에 고정시키면 된다. 메모장에 해당하는 지에디트(Gedit)와 Truecrypt 정도는 즐겨찾기에 추가해놓으면 편하다.

토어 브라우저 번들

https://www.torproject.org/download/download-easy.html.en 에서 tor-browser-linux64-7.0.6_en-US.tar.xz 파일 또는 더 최신의 파일을 다운로드 받는다. 그리고

xz -d tor-browser-linux64-7.0.6_en-US.tar.xz

하여 xz 압축을 해제 후

tar -xf tor-browser-linux64-7.0.6_en-US.tar

하여 tar로 묶인 꾸러미를 풀어준다. 그러면 tor-browser_en-US라는 폴더가 생길 것이다. 그 후

cd tor-browser_en-US

하여 tor-browser_en-US 디렉터리로 이동한다. cd tor 정도만 입력하고 (tab) 키를 누르면 자동 완성된다. 그리고

./start-tor-browser.desktop

하여 토어 브라우저 번들을 실행시킨다. 이것도 ./s 까지만 누르고 탭 키를 누르면 자동 완성된다.

gedit

우분투에서는 지에디트(gedit), 리눅스 민트에서는 엑스이디(xed), 칼리 리눅스에서는 리프패드(Leafpad)가 기본 문서 편집기이다. 윈도우즈메모장(Notepad)같은 존재이다.

지에디트가 없는데 깔고싶을 경우 터미널에서

sudo apt-get install gedit

sudo apt install gedit

를 입력하여 설치하면 된다. 그 후

gedit

를 입력하여 실행하면 된다.

리눅스 민트에서는 "메뉴 -> 보조 프로그램 -> 지에디트"에서 마우스 오른쪽 버튼을 눌러 "패널에 추가"를 해주면 된다.


gedit에서는 Ctrl + T를 누르면 새 탭을 띄울 수 있다.


리눅스 민트의 기본 편집기인 엑스이디(xed)에서는 Ctrl + N을 누르면 새 탭이 뜬다.

vi와 Emacs

유닉스 계열에서는 전통적으로 븨아이(vi)와 이맥스(Emacs)라는 텍스트 편집기를 많이 쓴다. 둘 다 텍스트 기반인 터미널 환경에서 개발되었기 때문에 키보드만으로 조작이 가능하게 설계되어있다. 이맥스의 경우 점차적으로 마우스그래픽 환경에도 대응하고 있다. 요즘엔 vi 대신에 비슷한 븨아이엠(Vim)도 많이 쓴다.


예를 들어, 아파치 설정 파일을 수정하고 싶으면 리눅스에는 vi는 설치되어있지 않고 Vim만 설치되어 있으니

vim /etc/apache2/apache2.conf

을 입력해서 수정한다. 리눅스의 경우 Vim 대신 vi를 입력해도 자동으로 Vim이 실행된다. i 또는 a를 누르면 커서가 있는 위치의 앞이나 뒤의 수정이 가능하고, Esc 키를 누르고 :wq를 입력하면 수정 내용을 저장하고 vim을 종료하고, :q!를 입력하면 저장하지 않고 종료한다. w는 쓰기(write), q는 종료(quit)라는 의미이다.

웹 써버 운영

아파치, MySQL, PHP 설치

터미널에서

apt-get update

로 패키지 설치 정보를 업데이트 해줘야 한다. 이걸 안 하면 apache2 등의 설치 패키지명이 달라 잘 안 될 거다. root 권한이 필요하니 sudo를 붙여

sudo apt-get update

명령어를 실행한다. 이후의 명령어들도 웬만한 건 다 root 권한이 필요하니 맨 앞에 sudo를 붙여서 입력한다.


apt-get upgrade

를 하여 기존에 설치되어 있는 패키지들을 업데이한다. apt-get 역시 업데이트 된다.


apache2 -v

로 아파치 버전 확인. 우분투라면 아파치 2가 미리 깔려 있지만 칼리 리눅스처럼 아파치가 안 깔려있을 경우

apt-get install apache2

로 apache2를 설치한다.


mysql --version

으로 MySQL 버전 확인. 보통 리눅스에는 MySQL이 설치되어있지 않으므로 새로 설치해야 한다.

apt-get install mysql-server

로 mysql-server를 설치한다. 만약 잘 안 되면

apt-cache search mysql-server

로 최신 버전 확인한다. 아마 5.7이나 그 이상이 최신 버전일 것이다. 그리고

apt-get install mysql-server-5.7

로 mysql-server 5.7 버전을 설치한다.

계속 설치할 건지 물어보면 y 입력.

MySQL의 root의 비밀번호를 뭐로 설정할지 물어본다. 적당히 입력. 잘못 입력하는 걸 막기 위해 비밀번호를 한 번 더 입력하라고 한다. 한 번 더 입력. 잊어버리면 안 되니 어디에 잘 적어둔다.


php -v

PHP 버전 확인. 일반적으로 리눅스에는 안 깔려 있을 것임.

apt-get install php

을 입력하여 php 설치. 중간에 이 패키지는 얼마의 크기이며, 설치시 얼마의 추가 공간이 필요하다고 뜨고

Do you want to continue? [Y/n] 

라고 계속 설치할 거냐고 물어보면 y를 눌러 계속 진행.

php -v

로 php 버전 확인. PHP 7 버전일 것이다.

아파치 설정 변경

아파치(Apache) 2 설정 파일은 센트OS(CentOS)면 /etc/httpd/conf/httpd.conf에, 우분투데비안 계열이면 /etc/apache2/apache2.conf 와 그 외 여러 파일에 저장된다. 구체적으로 apache2 폴더의 apache2.conf와 ports.conf, apache2 폴더 내의 mods-enabled, conf-enabled, sites-enabled 폴더 안의 *.conf와 *.load 파일들이다. apache2.conf 파일이 메인 설정 파일이고, ports.conf 파일은 listening port 등을 설정하는 두번째로 중요한 설정 파일이다.


만약 설정 파일을 수정하고 싶으면 리눅스에는 vi는 설치되어있지 않고 Vim만 설치되어 있으니

vim /etc/apache2/apache2.conf

을 입력해서 수정한다. 리눅스의 경우 Vim 대신 vi를 입력해도 자동으로 Vim이 실행된다. i 또는 a를 누르면 커서가 있는 위치의 앞이나 뒤의 수정이 가능하고, Esc 키를 누르고 :wq를 입력하면 수정 내용을 저장하고 vim을 종료하고, :q!를 입력하면 저장하지 않고 종료한다. w는 쓰기(write), q는 종료(quit)라는 의미이다. 수정한 게 없는 상태에서는 q만 해도 되지만 수정한 게 있는 상태에서 종료하려면 :q!를 해야한다.

아파치, PHP, MySQL 연동

아파치 2와 PHP를 연동하려면

apt install php libapache2-mod-php

를 설치해야 한다. 이걸 설치 안 하면 웹 브라우저로 웹 싸이트에 접속했을 때 php 파일이 써버쪽 스크맆트 언어로 실행되는 게 아니라 그냥 텍스트 파일처럼 뜬다.


또한 PHP와 MySQL도 연동해야 하므로 php-mysql 패키지도 설치해야 한다.

apt-get install php-mysql

중간에 계속 설치할 거냐고 물어보면 y를 누른다.


이 상태로 웹 사이트에 접속해보면 워드프레스를 설치하기 위해 PHP의 MySQL 확장이 필요하다고 뜰 것이다. 그러면 터미널에서

service apache2 restart

를 입력하여 아파치 2를 재시작시키면 위 경고 메시지가 뜨지 않고 워드프레스 설치 화면이 뜰 것이다.

참고로 말하자면 service apache2 start는 아파치2 시작 명령, service apache2 stop은 아파치2 정지 명령이다.

추가 설치

여기서부터는 웹 싸이트 운영에 꼭 필요한 내용은 아니고, 필요한 사람만 설치하면 된다.


클라이언트 측(설치하는 서버) 쪽에서 MySQL 접속을 위해 클라이언트 패키지도 설치해준다.

apt-get install mysql-client


추가로 mysql DB 관리 툴인 phpMyAdmin 도 설치해 주자.

apt-get install phpmyadmin

설치 중간에 mysql의 루트 비밀번호를 물어볼 것이다.


패키지 설치하면서 아파치가 수도 없이 리스타트 되었겠지만 찝찝하니 직접 리스타트 한 번 시켜줍시다.

service apache2 restart


apache2 설치 확인

자신의 호스트 IP로 접속해 아래와 같은 화면이 출력하면 성공


MySQL, phpMyAdmin 설치 확인

자신의 호스트IP/phpmyadmin 으로 접속해 아래와 같이 나오면 phpMyAdmin은 설치 성공

MySQL 루트 계정으로 로그인 하고, 데이터베이스 서버와 웹 서버의 정보가 아래와 같이 잘 나오면 성공


php 설치 확인

아파치가 잘 설치 되었으면, /var/www 가 웹 페이지 기본 경로가 되었을 겁니다. 여기에 간단한 php 문을 짠 후 외부에서 접속해보면 되겠죠?

<?php echo "<script>alert(\"hello world\")</script>";  ?>

이런거 ㅎ.ㅎ

어잌후 수고하셨슴니다.

phpBB 3 웹 포럼 만들기

우분투에서 피에이치피BB(phpBB) 3 웹 포럼 만들기

http://mcchae.egloos.com/10812538

1) mysql 서버 설치

mysql 서버가 설치되어 있어야 합니다.

sudo apt-get install mysql-server

설치 중간에 MySql root 사용자의 암호를 물어봅니다. 여기에 암호를 입력하고, 같은 암호로 암호 확인을 하면 됩니다.

2) phpbb3 설치

sudo apt-get install phpbb3

설치 과정 중에 다음과 같은 것 들을 답변하면 됩니다.

웹서버를 apache2 로 지정합니다.

dbconfig-common 으로 설정한다고 <예> 합니다.

mysql 데이터베이스를 선택합니다.

처음 MySQL 서버를 설치할 당시 지정한 root 사용자 암호를 입력합니다.

phpbb3에서 별도의 사용자를 만들 것인데 그 사용자의 암호를 입력합니다.

phpBB의 admin 로그인 암호를 입력합니다.

위와 같이 /etc/phpbb3/apache2.conf 에 해당 아파치 설정 파일이 있습니다.

해당 파일을 확인하면,

위와 같이 설정되어 있습니다.


이제 설치한 호스트의 /phpbb 로 접속해 보겠습니다.

상단 오른편 Login을 눌러,

로그인을 하고,

위와 같이 익숙한 토론 게시판이 나옴을 알 수 있습니다.

특성

뭔 리눅스가 이리 많아?

같은 리눅스라고는 해도 모양이 생판 다른 수백 종류 이상의 변종들이 존재하며 생긴 모양이 어쨌든 커널이 리눅스면 전부 리눅스라고 부른다.

왜 이런 현상이 생겼냐면, 모든 소스가 공개되어 있다 보니 같은 역할을 하는 프로그램이라도 편리성을 지향하는 프로그램, 속도를 지향하는 프로그램, 확장성을 지향하는 프로그램, 가벼움을 지향하는 프로그램 등등 여러가지 선택지가 존재하기 때문. 기존의 프로그램이 마음에 안 들면 작게는 개인에서 크게는 기업 단위로 직접 새로 하나 만들어내 버리면 되니까.

운영체제 하나를 구성하는 데에도 핵심부 커널부터 해서 그 상위 미들웨어를 거쳐 사용자가 접하는 인터페이스에 이르기까지 수십~수백가지의 프로그램이 들어가고 그걸 엔드유저가 직접 하나하나 신경쓸 순 없기 때문에[* LFS나 젠투, 아치리눅스 같은 경우에는 그 모든걸 유저가 선택해서 쓰는 걸 목표로 하고 있다. ㅎㄷㄷ] 일정한 단체에서 자신만의 기준을 가지고 하나의 세트(배포판)를 만들어 내고 엔드유저가 그걸 가져다 쓰는 것이라고 보면 된다.

여러 사용자층 입맛에 맞추어서 수십가지의 배포판이 나오긴 했지만 처음 리눅스 입문하는 엔드유저는 너무 많은 배포판에 압도되어 리눅스를 포기하는 경우가 왕왕있다. 어차피 엔드유저 입장에서는 쉽고, (커뮤니티) 지원 잘되는 배포판이 장땡이므로 우분투(혹은 리눅스 민트)가 제일 적절하다고 할 수 있다. 배포판이 너무 많아 고민된다면 우분투를 선택하여 어느정도 감을 익히고, 맘에 들면 계속 우분투를 쓰거나 자기 입맛에 맞는 다른 배포판으로 갈아타면 된다.


'Linux'가 아니라 'GNU/Linux'라고 불러야한다는 주장도 있다. 자유 소프트웨어 운동을 창시한 리처드 스톨먼도 'GNU/Linux'라고 부르지 않는 기자들에게는 대화도 하지 않는다고. GNU 진영에서 리눅스를 마음대로 가져다 쓰고 있을 뿐이다.


하지만 리누스 본인은 GNU/Linux라고 부르는걸 이상하다 생각하고 Linux라 부르는걸 선호한다. 'Linux'라는 상표를 가지고 있는 원 제작자가 좋아하지 않은 행위이다보니 이쪽 관련으로 본인의 자서전에서 리처드 스톨먼을 언급하기도 한다. 또한 안드로이드도 리눅스는 리눅스다보니 최고로 많이 보급된 리눅스 배포판으로 볼 수 있는데, 이녀석은 GNU 라이센스가 아니다.


또한 리눅스 커널 자체도 다양한 변종이 있다. 각 배포판 제작팀에서 자기 입맛에 맞춰 약간씩의 수정을 가하기도 하고, 공식 리눅스에는 포함되지 않은 패치를 집어넣어서 직접 컴파일할수도 있다. 그렇다고 윈도마냥 비스타에서 옛날프로그램 돌리기 어렵고 뭐 그런건 아니다. 사실 옛날프로그램이 지금과 호환되지 않는 것은 커널의 잘못이 아니라 API의 문제다. 리눅스 커널에서의 수정은 드라이버의 포함 여부, 자원을 다루는 규칙의 선택, 최대 절전 모드 등의 기능 포함 여부 정도가 전부다. 커널 패치도 마찬가지. 따라서 변종이라고 해 봐야 일반적인 의미의 그런 변종은 아니다. 커널 컴파일 옵션 중 보면 실행파일 형식도 두어가지(a.out과 ELF)가 나오는데, 이미 한참 예전에 바뀐 표준이라 큰 의미는 없다. 굳이 호환성을 신경써야 할 상황이라면 둘다 체크해도 된다. 윈도 API는 메이저 업데이트마다 우수수 바뀌고 상용프로그램도 일정 기간마다 야!끝났다!하고 버그픽스 외엔 손을 놓아버리고 다음 버전으로 넘어가기 때문에 그런 인식이 강하다. 반면 리눅스는 API도 프로그램도 지속적으로 계속 발전돼나가기 때문에 전체가 유기적으로 움직여서 그런 느낌이 덜하다. 일반적으론 API가 업데이트되더라도 소스코드가 개방돼있는 이 동네 특성상 재컴파일만 하면 쓸 수 있으며, 그렇지 않으면 죽기 직전의 프로그램이라도 누군가가 새 라이브러리에 맞게 수정한 패치만 올려주면 연명가능. 우분투만 해도 메이저 버전마다 패키지가 따로 만들어져 나오는 걸 생각해 보자. 참고로 한번 설치하면 지속적으로 업데이트해 나가는 아치 리눅스같은경우, 어떤 라이브러리에 큰 수정이 있으면 그에 관련된 프로그램들이 동시에 우수수 업데이트되기도 한다. 그만큼 업데이트가 잦은 편이며 너무 업데이트를 드물게 해 주면 업데이트 한 방에 부팅 불가능한 상황이 오기도 한다(...).


http://distrowatch.com/index.php?language=KR 리눅스 배포본 정보와 출시에 대한 뉴스 정리 사이트.

다양한 플랫폼

소스 코드가 공개되어 있기 때문에 해당 CPU 및 보드에 맞도록 설정만 주고 컴파일하면 원칙적으로 CPU가 딸린 어떤 기계에서도 돌릴 수 있다(물론 기본 사양은 되어야 한다)[* 사실 소스 상에 플랫폼 의존적인 부분이 존재하며, 이 부분이 준비되어 있는 플랫폼에 대해서만 작동한다.]. 일반적으로 생각하는 PC용 운영체제 말고도 임베디드 시스템에 리눅스 커널을 얹어서 돌리는 경우도 많으며, 인터넷 공유기나 PDA휴대폰에도 리눅스를 OS로 사용하는 경우가 있다. 2011년 들어서 각광을 받고 있는 안드로이드도 자주 쓰이는 x-window가 서피스플링거로 대체되고 Dalvik 가상머신 등의 안드로이드 프레임워크 계층이 추가된 리눅스이다. 심지어 냉장고TV에서도 사용하는 경우가 있다. 대표적으로 LG전자의 TV인 엑스캔버스 일부 모델의 메뉴 시스템이 리눅스인데, 리눅스의 기본 라이센스가 GPL 라이센스인지라, LG전자에 연락하면 메뉴 시스템 소스를 배포에 필요한 최소한의 비용(배송료 등)만 받고 CD에 담아 보내주게 되어 있다(…).

주변기기들로 따지면 마이크로소프트가 가만히 놀고 있어도 주변기기 제작하는 회사들에서 알아서 윈도우즈 지원을 해주는 윈도우즈 계열이 가장 호환성이 높다고 할 수 있지만, 지원되는 플랫폼으로 본다면 리눅스가 더 많다. 물론, 호환성을 최대의 미덕으로 삼아 개발되는 NetBSD 에 비하면 많은건 아니다.[* NetBSD 의 경우 공식적으로 지원되는 플랫폼만 따져도 57개이다. NetBSD 의 모토가 "Of course it runs NetBSD!" 이다. ]

심지어 리눅스는 CPU 핫플러깅[* 플러그 앤 플레이와 비슷하다고 보면 된다. 같지는 않은 모양]도 지원한다. 다시말해 컴퓨터가 작동되는중에 CPU를 갈아끼워도 된다는 소리. 물론 여러 조건이 만족돼야 하겠지만…흠좀무. 사실 이런 기능은 대형 서버에 필수라서 지원할 수밖에 없다.

attachment:/ps2_linux.JPG 플레이스테이션2에서는 공식적으로 리눅스를 지원한 적이 있었다. 이를 위해서 네트워크 카드, 40GB HDD, VGA 케이블, 키보드, 마우스, 메모리카드와 더불어 리눅스 인스톨 키트를 세트로 해서 판매하였다. 다만 리눅스를 설치한 상태에서는 게임 구동이 불가능하였으며, 게임을 돌리기 위해서는 리눅스를 포맷하고 PS2 기본 펌웨어로 변경해야 했다. 나중에 나온 슬림모델에서는 HDD 를 설치할 수가 없으므로, 리눅스 설치가 불가능해졌다.

플레이스테이션3에서도 공식적으로 리눅스 설치가 가능했었다.관련정보. Yellow Dog Linux라는 배포판이 유명한데, 이는 페도라에서 파생되어 나온 물건이다. 다만 PS3에서 데스크탑용 리눅스처럼 쓰려면 PS2 와 마찬가지로 싹 밀고 다시 깔아줘야 하는데 가끔씩 이 짓을 정말로 저지르는 용자들이 꽤 있다. 다만, PS3 초기형에서만 가능하며, 2010년 펌웨어 버전 3.21이 넘어가면서 리눅스 지원을 중단하였다.[* 이전에도 PS3 크랙 시도가 있긴 있었으나 이 사건을 빌미로 PS3 보안이 완전히 붕괴되었다고 봐야 한다. 해커들로서는 뭐가 오픈되었던 것이 다시 사라지는 것을 해킹의 대의명분으로 쓰기 참 좋기 때문. 참고로 이전에 PSN 해킹 대란이 원인이라 되어 있었는데, 이건 2011년 일이다.]

또한, 구형 엑스박스는 CPU로 펜티엄 3를 사용하고, 주요 하드웨어 구성이 PC랑 별 차이 없기 때문에 비교적 쉽게 리눅스를 설치 할 수 있다. 약간의 꼼수만 쓰면 모드칩같은 것을 사용하지 않아도 가능하다. 이렇게 리눅스를 설치하여 미디어 플레이어로 쓰거나 서버로 돌리는 사람도 있다(…). ~~자 여기에 QEMU를 깔고 안에 윈도를 까는거야!~~

아이팟에도 리눅스를 설치할 수 있다! iPodLinux라는 배포판이 있는데, 아쉽게도 서버가 왔다갔다 하더니 결국 중단되었다. --wiki:"음모론" 애플의 음모다!!-- 포럼과 일부 시스템이 나중에 복구되었는데, 원래 프로젝트를 주도하던 사람 말로는 원래 웹호스팅을 해 주던 업체가 죽은지 너무 오래돼서 자료를 담고 있던 서버 자체가 남아있는지조차 모르겠다고...


게임도 된다

리눅스에서는 밸브스팀 게임을 가장 많이 한다. 우분투를 기본으로 리눅스를 지원해주기 때문이다. 남한 시각으로 2013년 2월 15일 오전 3시경부터 스팀의 리눅스 정식판이 공개되었다.


리눅스 깔면 게임 할게 없다는 소문은 옛말이다. DirectX가 아닌 OpenGL 계열 게임들은 상당히 부드럽게 돌아간다. 그러나 리눅스 그래픽 지원문제 때문에 많이 느리다. Nvidia 는 그나마 지원해줘서 어느정도 성능이 나오지만, ATI는 거의 지원포기 상태이다. Intel은 회사측에서 소스를 오픈했기 때문에 호환성 문제는 없다. 다만 카드 자체의 성능이 낮은건 안습. OpenGL 하면 윈도우에서 게임할때 몇번 본 사용자들은 DirectX 에 비해 좀 열등한것으로 생각할지 모르겠지만, 사실 OpenGL 이 우월했고, DirectX 는 계속 그 뒤를 열심히 쫓아온것이 진실이다. DirectX 신 버전에서 이것도 된다며 게이머들의 가슴을 설레게 하던것중에는 사실 OpenGL 에서 이미 한참 전에 구현이 되어있던것도 많다. 예를 들어 다이렉트 X 10이후 지원되기 시작한 앰비언트 오클루젼 기술은 OpenGL 1.5를 가지고도 코드를 만들어 낼 수 있다. 현재도 전문적인 용도에서는 OpenGL 을 많이 사용하며, DirectX 가 뒤를 쫓고있는중이다. 게임에서 DirectX 에 밀려버린 이유는, 아무래도 MS 가 뒤에서 막대한 돈을 쏟아부어 빠르게 개발한것도 있고, OpenGL 에 비해 MS 의 DirectX 서포트가 훨씬 뛰어났던것이 그 이유이다.(성능이 아무리 좋아봤자, 아무설명이나 예시없이 불친절하면 그것으로 만들어진 결과물도 좋지 않고, 결국 버림받는게 당연하다.) 리눅스에도 유명 게임들을 포팅하는 회사도 있으며 Wine으로 잘 돌아가는 게임도 있다. 스타크래프트2도 돌아가며, 문명 5도 잘 돌아간다는 보고가 몇 건 나왔다. 월드 오브 워크래프트도 설정 파일 한 줄만 손대주면 리눅스에서 OpenGL 기반으로 돌릴 수 있다! 다만 업데이트는시망… 상대적으로 게임이 잘 나오지 않는 것 자체는 어쩔 수 없다. 스팀에선 리눅스에서 스팀 구동 방법을 알려준다. 그리고 프리웨어로 웬만한 상용보다 더 빵빵한 게임을 내놓는 용자도 있다.

대인배 존 카멕의 이드 소프트웨어에서 출시하는 PC게임은 거의 다 리눅스를 지원한다. 물론 패치도. DirectX를 사용하지 않고 OpenGL을 사용하기 때문에 가능한 모양.

둠3, 퀘이크3, 리턴 투 캐슬 울펜슈타인 등 철지난 게임들의 바이너리 파일을 리눅스용으로 공개하였고(다만 게임은 실행 파일만으로 즐길 수 없으므로 윈도우용 카피에서 실행 파일을 제외한 패키지 파일들(.pak)을 가져와야 한다.), BraidWorld of Goo등의 몇몇 인디 게임들도 리눅스용 Full버젼을 팔고 있다.

다만 게임사들이 맘먹고 포팅을 한다고 가정한다면, 성능측면에서는 오히려 리눅스+OpenGL 조합이 윈도우+DirectX 조합을 능가할 가능성도 분명히 존재한다. 실제로, 윈7+DirectX 조합에서 레포데2 270 프레임을 찍었던 컴퓨터에 밸브가 리눅스+OpenGL 로 소스엔진을 포팅하여 돌려봤더니 처음에는 6 프레임 나오던것이 최적화가 진행되니 결국 315 프레임으로 윈도우에 비해 무려 20% 가까이 상승했으며, 이에 힘입어 윈도우에서도 DirectX 대신 OpenGL 조합으로 바꿔봤더니 역시 300 프레임으로 상승했다고 한다.~~DirectX 의 굴욕~~ 이미지퀄리티등의 문제가 있던것도 아니었다고 하니, 리눅스 커널이나 OpenGL 의 최적화수준은 게임측면에서도 윈도우에 뒤지지 않거나 혹은 그 이상이라는 결론이 나온다. 다만, 그래픽 드라이버의 문제가 있다. 밸브가 소스 엔진을 포팅할때도 그래픽 카드 제조사들과 긴밀히 협조해서 드라이버 개선(특히 멀티스레딩 지원)을 동시에 진행했다고 한다.

주요 배포판

http://futurist.se/gldt/wp-content/uploads/12.10/gldt1210.svg

광대한 리눅스 배포판의 계보도.


이 계보도 안에 없는 리눅스 배포판도 많다. 리눅스 계열은 주로 패키지 관리자를 기준으로 묶는다. 배포판 특징상 불가능한 경우가 아니라면 서로 다른 패키지를 변환해서 사용할 수도 있다.


데비안 계열

데비안에서 파생된 배포판들. 패키지 형식은 .deb이며, 패키지 관리자로 apt를 이용한다. 수많은 리눅스를 제치고 점유율 순위권에 드는 배포판이 몇 개씩 나오는 뼈대있는 계열이다.


레드 햍 계열

레드 햍 계열이라고 부르는 것들로, 레드 햍 리넠스를 시조로 파생된 배포판들이다. 패키지 관리자로 rpm을 사용하는 것이 특징이다. 한때 엄청난 인기를 끌다가 데비안 계열에 자리를 많이 내주었다.

앤드러이드 계열

모바일 운영체제인 안드로이드 계열 배포판들. 패키지 형식은 apk이다. 기존 리눅스와는 구조가 크게 달라서 다른 배포판과 함께 엮지 않는 경우도 많지만, 어쨌거나 리눅스로 본다면 현재 일반 사용자를 대상으로 한 리눅스 배포판 중에는 가장 메이저하다.

  • 앤드러이드 (안드로이드, 안드로이드(운영체제))
  • 리밐스 OS (Remix OS): Jide社의 태블릿 컴퓨터, PC용 안드로이드 기반 운영체제. Jide社의 태블릿 컴퓨터 등에 기본 탑재되며, 다른 회사의 기기에 포팅되기도 한다.
  • 폴라리스 OS (Polaris OS): Polaris Office를 개발한 인프라웨어에서 만들었던 안드로이드 기반 OS이다. 안드로이드 기반이면서 PC와 유사한 경험을 제공한다. 이와 비슷한 것으로 Remix OS가 있으며 Remix OS 쪽이 먼저 나왔다.
  • 피닠스 OS (Phoenix OS): 중국의 베이징초탁과학기술유한공사(北京超卓科技有限公司, Beijing Chaozhuo Technology Co., Ltd.)에서 만든 안드로이드 기반 운영체제이다. 여러모로 Remix OS와 흡사한 운영체제인데, Remix OS와 마찬가지로 안드로이드 X86 기반의 커스텀 운영체제로, 리눅스와 유사한 형태의 UI를 갖추고 있다. 현재 최신버전은 3.0.3이며 안드로이드 버전은 7.1 누가이다. 현재도 꾸준히 개발중이며 개발이 사실상 중단되어 있는 Remix OS에 비해 여러 모로 나은 모습을 보여준다.

기타 배포판

  • 슬랰웨어 리넠스 (슬랙웨어 리넠스, 슬랙웨어 리눅스): 현재 명맥이 이어지는 배포판 중 가장 오래된 배포판이다.
  • 오픈수세: 슬랰웨어 (슬랙웨어)에서 파생된 배포판이다. 원래 S.U.S.E였다가 SuSe로 바뀌었고, 다시 openSUSE로 이름이 바뀌었다. 이 쪽은 유럽이 본진인지라 유럽에서 흥하고 있다. 한국에서도 우분투와 CentOS가 널리 알려지기 이전에는 인지도가 있었다.
  • 아치 리넠스 (아치 리눅스): 초보자가 접하기에는 결코 쉽지 않은 배포판이지만 어느정도 감을 익힌 사용자를 중수 이상의 실력자로 만들어 주는 배포판. 나름의 매력이 있어 점유율 순위에서는 항상 10위권을 찍는다. 패키지 관리자는 pacman이며, 패키지 형식은 특별한 확장자 없이 압축파일 확장자 tar.gz 혹은 tar.xz이다.
  • 젠투 리넠스 (젠투 리눅스): 모든 패키지를 소스 컴파일로 설치하기 때문에 극한의 최적화가 가능하다. 대신 유명 배포판 중에는 극악의 난이도를 자랑한다. 패키지 관리자는 portage이며, 소스컴파일 방식이라 패키지 파일 대신 ebuild 스크립트가 배포된다.
  • 크롬 OS (구글 크롬 OS): 크롬 OS는 원래 우분투 기반으로 알려졌었는데, 현재에는 젠투 기반으로 개발되고 있다. 원래 최소한의 리눅스 위에 구글 크롬 하나만 올라가 있었으므로 패키지 파일은 .crx, 패키지 관리자는 크롬으로 볼 수 있었지만 운영체제의 크기를 키우고 이 부분에 대한 확장을 장려하는 쪽으로 방향을 잡으면서 패키지 관리자가 portage가 되었다.

같이 보기

참조