원문 보기: https://dawoum.duckdns.org/wiki/리눅스_배우기
이 기사는 윈도우를 벗어나서 다른 운영 시스템을 찾다가 결국 리눅스 배포판을 선택한 분들을 위한 글입니다.
2022년 현재, 잘 알려진 것처럼, 리눅스 배포판은 적어도 수백개가 존재합니다. 이러다 보니 배포판을 선택하는 것이 초보자에게 문제가 되기도 하지만, 처음 선택한 배포판을 그대로 사용할 가능성이 매우 낮을 수 있습니다.
이런 상황 아래에서, 처음에 어떤 배포판을 선택하더라도 나중에 또 다른 배포판으로 전환했을 때, 많은 시간 투자없이 해당 시스템을 잘 사용하기를 희망할 수 있습니다.
한편, 윈도우에서 사용했던 경험, 주로 GUI 환경에서 시스템을 설정하던 습관은 리눅스를 배우는 데 가장 큰 장애물 중 하나입니다. 만약 처음에 배포판을 선택했을 때, 그런 습관으로 인해, GUI에서 시스템을 설정하게 하고 그런 도구를 찾아 헤매는 것은 좋은 습관은 아닐 수 있습니다.
왜냐하면, 리눅스는 많은 부분이 자원자들에 의해 코드가 작성되고, 해당 프로젝트를 진행하는 주요 작성자가 시간적 여유가 사라지면, 프로젝트 자체가 사라지는 경우가 생깁니다. 이러다 보니, 초보자를 위한 GUI 환경을 제공하는 것보다는 필요한 기능 자체를 구현하는 것이 일차적인 목표입니다.
게다가, 프로젝트를 진행하는 당사자들은 대부분 그 프로젝트에서 금전적 이익을 취하지 않아서, 판매를 전제로 프로그램을 작성하지 않기 때문에, 굳이 GUI 도구를 만들지 않을 수 있습니다.
반면에, 아주 오랫동안 지속되고 많은 사용자 층을 가진 일부 프로그램, 예를 들어, Wine은 GUI 도구 PlayOnLinux를 가지기도 합니다.
또한, 일부 배포판에서 그런 GUI 도구를 일부 개발하고 제공하기도 하지만, 다른 배포판이 그것을 채택할지 여부는 배포판 제작자의 의도에 있고, 우분투와 같은 상업적 패포판이라면, 자신의 특색을 강조하기 위해 아마도 다른 배포판에서 만든 GUI 도구를 사용하기를 꺼릴 수 있습니다.
어쨌든, 초보자들이 윈도우에서의 경험을 살리기 위해, 어쩌면 유일한 경험이기 때문에, 이런 GUI 도구를 제공하는 배포판을 선택하기도 하지만, 대체로 리눅스 배포판의 많은 선택이 있기 때문에, 어느 정도 지식을 쌓은 후에는 다른 배포판으로의 이동도 아주 자연스러운 현상입니다.
이 기사는 리눅스를 배우는 과정을 다루지만, 배포판 사이의 이동을 전제로 가능한 공통적인 방법을 다루고자 합니다.
프로그램 설치와 제거
배포판을 선택하고 나면, 프로그램을 설치 또는 제거할 수 있어야 합니다. 리눅스는 윈도우에서 처럼 해당 아이콘을 클릭함으로써 명령을 실행할 수도 있지만, 리눅스는 가상 터미널, 예를 들어, 그놈 터미널에서 명령을 실행하는 것을 더 좋아할 수 있습니다.
데비안, 우분투, 페도라, 아치 등의 배포판은 프로그램을 설치하고 제거하는 GUI 도구를 제공합니다. 이런 도구들은 꽤 오랫동안 개발이 되어서 어느 정도는 안정적인 동작을 보장합니다.
그러나, 널리 사용되는 배포판은 터미널의 명령줄에서 간단한 입력으로 시스템 업데이트/업그레이드, 프로그램 설치/제거, 검색 등의 기능을 수행할 수 있고, 마우스를 사용할 일이 없어서 대체로 효율적이라고 생각될 수 있습니다:
- 데비안/우분투-계열 – apt, dpkg, 등
- 페도라-계열 – dnf, rpm, 등
- 아치-계열 – pacman, yay, 등
실제로 데비안/우분투-계열에서 사용하던 명령어에 익숙해지면, 다른 배포판에서 같은 일을 수행할 때, 옵션이 어떻게 바뀌는지를 확인함으로써 거의 같은 정도의 숙련도를 발휘할 수 있습니다.
어느 누군가는 컴퓨터를 켜면, 가장 먼저 터미널을 열어서, 다음 명령을 입력할 것입니다:
- sudo apt update
- sudo dnf update
- sudo pacman -Syu
이들 명령에서 주로 사용하는 옵션은 거의 결정되어 있어서, 이를 배우는 데애는 크게 시간이 소모되지 않습니다. 단지, 나아가서 패키지를 직접 제작할 때에는 보다 많은 지식이 필요할 수 있습니다.
각 배포판마다 자주 사용하는 프로그램 설치/제거 옵션을 확인하고 싶으면, Category:Distributions에 가셔서 확인을 하십시오.
파일시스템 계층구조 표준
윈도우 시스템은 물리적 파티션과 논리적 파티션을 드라이브 문자 C, D, 등으로 연결합니다. 반면에 리눅스는 드라이브가 없고, 슬래쉬 (/
)로 표현되는 루트 디렉토리 아래에 미리-정의된 표준 파일시스템 계층구조를 가집니다. 윈도우 시스템과 다르게, 리눅스 시스템은 물리적과 논리적 파티션을 루트 디렉토리와 루트 디렉토리 아래의 특정 디렉토리 또는 사용자 지정 디렉토리에 마운트 (연결)합니다.
이 계층구조는 반드시 지켜야 할 사항은 아니지만, 배포판 사이의 가능한 공통점을 유지함으로써, 사용자들의 혼란을 최소화하기 위해 제시되었고, 특이한 몇 개의 배포판을 제외하고, 완전하지는 않지만, 지켜지는 경향이 있습니다.
사용자가 파일시스템 계층구조 표준을 외울 필요는 없는데, 왜냐하면 사용자가 설치한 프로그램의 목록 또는 설정의 조정 등을 하면서 자연스럽게 알게 되기 때문이고, 적어도 이런 계층 구조를 갖고 있다는 사실은 알아 둘 필요가 있습니다.
리눅스 기본 명령어
리눅스에서 사용되는 명령어 목록은 아래에서 볼 수 있습니다:
이 중에서 자주 사용하는 것은 특별한 순서없이 아래와 같습니다:
- ls
- cd
- cp
- tar –
- mv –
- rm –
- mkdir –
- df –
- pwd –
- grep
- ln
- chown
- chmod
- uname
- less
- ps
- su / sudo
- which
좋은 습관일까?
로그 보기
초보 사용자들에서 벗어날 가장 중요한 사항이 무엇일까? 라는 물음에, 여러 가지 중에서, 로그를 보는 습관을, 자주는 아니더라도, 들이는 것을 추천합니다.
잘 만들어진 프로그램은 자체의 동작 사항과 문제점을 만났을 때, 그것에 대한 기록, 로그를 남깁니다. 초보자들은 보통 문제에 부딪히면 로그를 볼 생각 자체를 전혀 하지 않기 때문에, 문제의 정확한 원인을 파악할 수 없습니다.
게다가, 초보자들의 질문을 받은 또 다른 사용자는 "먼저 로그를 확인하세요"라는 가장 중요한 말을 거의 하지 않습니다. 아마도 그런 사용자들은 로그의 중요성을 알지 못하기 때문에, 습관이 되지 않았을 것이고, 자연스럽게도 다른 사람들에게 전할 수 없을 것으로 보입니다.
대부분의 문제에 대한 해결책은 정확한 로그를 인터넷에 검색함으로써 얻을 수 있습니다. 아마도 찾지 못하는 경우는 최근 변경사항, 예를 들어 이번 주일에 발생한 내용이라서, 논의된 적이 없기 때문일 것입니다.
Chroot
중급 사용자에서 벗어날 가장 중요한 사항이 무엇일까? 라는 물음에, 여러 가지 중에서, chroot를 이해하고 사용하는 것입니다.
어떤 문제점에 부딪혔을 때, 시스템이 부팅되면, 부팅과 관련된 부분이 작동하고 있어서, 로그를 찾아보고 검색 등을 통해 해결책을 찾기가 쉬울 수 있지만, 부팅이 되지 않으면, 외부의 부팅 디스크를 사용해서 부팅한 후에, 시스템 내부로 들어가서 커널 재설치, 파일 시스템 검사, 부터로더 복구 등의 시스템 복원을 하는 과정이 필요합니다.
이때, 다른 방법이 있을지라도, chroot가 무난하게 이용할 수 있는 방법입니다.
이 과정은 오히려 초보자에게 매우 필요한데, 왜냐하면 초보자는 안전한 것과 위험한 것을 구별할 능력이 대체로 없고 주로 부팅이 되지 않을 상황을 만들 가능성이 높기 때문입니다.
게다가, 초보자는 자신이 처리할 수 없는 상황에 이르면 대체로 시스템을 다시 설치하려는 손쉬운 방법을 선택하기 쉽고, 이런 경향은 초보자를 영원히 현재 위치에 남겨둘 것입니다.
만약 시스템을 다시 설치하려고 시도한다면, 내부에 중요한 자료가 없기 때문이고, 이런 과정을 시도해 보기에 더할 나위없이 좋은 상황이므로, 이 과정을 통해 리눅스 시스템에서 생기는 거의 모든 문제점을 해결할 능력을 가질 수도 있습니다.
Gui 프로그램 배우기
예를 들어, 윈도우 시스템과의 파일 교환을 위해, 여러가지 방법이 있을지라도, 가장 친숙한 삼바 서버를 이용한다고 생각해 보십시오. 아마도 특정 배포판은 그 설정을 돕기 위해, GUI 도구를 제공하고, 초기에 인기를 얻을 수 있습니다. 그러나, 초보자에게 GUI 도구가 있는 것은 진입 장벽은 낮출 수 있지만, 반대 급부로 유용한 지식을 쌓는데에는 방해가 될 수 있습니다.
삼바 서버의 설정은 거의 모든 배포판에서 /etc/smb.conf 또는 /etc/samba/smb.conf에 저장됩니다. Samba (software)의 기사에서 제공되는 두 가지 설정은 십 몇년 전과 전혀 달라지지 않았습니다. 사실, 이런 설정이 있는 곳은 대체로 정해져 있고, 그것을 찾는 것도 명령-줄에서 확인하는 것이 훨씬 간편하고 빠릅니다.
초보자들은 이 내용을 복사해서 해당 위치로 옮기는 것이 힘들 수 있어서, 그 내용을 GUI 도구를 이용해서 입력하도록 만든 배포판을 사용합니다. 그러나, GUI 도구에서 어떤 위치에서 선택이 어떤 의미를 가지는지 알지 못하면, 초보자들 입장에서 그림에 나오는 것과 똑같이 했다고 주장하더라도, 그렇게 동작하지 않는 결과를 낳기도 합니다.
GUI 도구는 편안한 점이 없진 않지만, 그런 도구를 지속적으로 사용하고 그 습관에 머물러 있으면, 리눅스를 사용함으로써 얻을 수 있는 여러가지 재미있는 지식에 거의 접근할 수 없게 될 수도 있습니다.
더구나, GUI 환경이 작동하지 않으면, 오로지 명령어로 복구할 수 밖에 없다는 사실이 항상 존재합니다.
부지런한 관리자 vs. 게으른 관리자
부지런한 관리자가 되지 말자!!
이상한 소리로 들릴 수 있겠지만, 관리자는 같은 일을 무턱되게 부지런히 하는 습관을 버려야 합니다. 대신에 같은 일을 반복적으로 처리하고 있다면, 크론, systemd timer 등을 사용하여, 컴퓨터에 대신 지시하고, 그 결과를 이메일로 통보 받는 식으로 전환할 필요가 있습니다.
과거에 정보가 부족한 시절에는 이런 설정을 위해 긴 문서를 읽어야 하는 부담이 있었지만, 지금은 거의 모든 설정이 인터넷에 공개되어 있습니다.
따라서, 반복적 작업이 필요할 때에는 자동으로 처리할 방법을 찾아서 설정하고 관리자는 단지 시기별로 확인하는 습관을 가질 필요가 있습니다.
댓글
댓글 쓰기