답변:
Linux Documentation Project, guides page 에서 몇 가지 무료 안내서를 찾을 수 있습니다. 여기에서 내가 선택하는 짧은 목록이지만 필요한 것을 찾으려면 페이지를 스크롤해야합니다.
관심있는 주제에 대한 특정 하우투 를 찾아야합니다 . 다른 날짜 정렬 된 하우투 목록 .
리눅스 리뷰 초보자 페이지 에는 초보자들이 있습니다.
마지막으로이 책은 온라인에서 제공되는 작은 책인 Linux Kernel in a Nutshell 입니다. 2007 년판 PDF 형식입니다.
필요한 것들에 대한 자신의 검색을 시작하기 위해 이러한 참고 자료를 느낌으로 만 사용해야합니다.
리눅스를 이해하는 가장 좋은 방법은 리눅스를 깨뜨리고 나쁘게 한 다음 고치는 것입니다.
"더 깊은 수준"이라고 말할 때 명령 줄에 더 많은 것을 이야기하는 경우 (일부 사람들은 자신의 배포판과 함께 GUI를 떠나지 않을 것입니다.) 커널 드라이버 작성과 같은 낮은 수준의 내용. 나는 후자보다 전자를 더 많이 가정 할 것입니다.
Linux 및 Linux에서 실행되는 응용 프로그램 (웹 서버 실행, Windows 호스트에 파일 제공, DHCP 제공, 그래픽 데스크탑 실행 등)을 사용하여 수행하려는 작업에 대해 합리적인 목표를 설정하는 것이 좋습니다. "할 때"만 배울 수 있다는 것이 나의 믿음입니다. 목표를 염두에두면 추구하십시오. 즉, 매뉴얼 페이지 (많은 매뉴얼 페이지), "HOWTO"설명서, 메일 링리스트 아치, 임의의 블로그 게시물, 그리고 설치하거나 컴파일 할 다양한 프로그램과 함께 제공되는 설명서를 읽어야합니다. 상자.
몇 년 동안 강의실 기반 IT 인증 과정을 강의 한 결과, 제가 가장 많이 발전시킨 학생들은 자신의 디자인에 대한 미친 프로젝트를 수행하고 좌석을 통해 배우는 사람들이라고 어느 정도 권위있게 말할 수 있다고 생각합니다 그들의 바지의.
앞에서 말했듯이 맨 페이지 "HOWTO"문서 ( http://tldp.org/docs.html 및 많은 'net의 다른 곳)와 메일 링리스트 아카이브는 친구입니다. 적어도이 단계에서 커널 내부에 대해 이야기하는 책은 피하려고합니다. 시작하기 위해 그런 종류의 깊은 지식이 필요하지 않습니다.
다른 사람들과 대화하십시오. 서버 결함은 좋은 조언을 얻을 수있는 좋은 장소로 판명되었습니다. 여기에서 질문을하고, 그렇게 멍청하게 보일 것이라고 생각하지 마십시오. 리눅스에 익숙한 사람들과 "얼굴 시간"을 가질 수 있다면 그것을 찾으십시오. (나는 당신이 사실과 의견을 분리하고 시도하는 것이 좋습니다. 리눅스 커뮤니티에는 다른 커뮤니티에서와 같이 일을하는 방법에 대한 다른 의견들에 대한 많은 "거룩한 전쟁"이 있습니다. .)
Linux의 Unix 유산에 대한 "심층적 인"지식을 얻으려면 일부 오래된 Unix 관련 관리 또는 참조 매뉴얼을 참조하십시오. 나는 초기에 이것들을 피하려고 노력했다 (적어도 유닉스에서 파생 된 일부 운영 체제와 비교할 때 리눅스에서 "취득되지 않은 경로"의 역사적 특성을 이해할 수있을 때까지).
당신의 전반적인 기술 수준이 무엇인지 알지 못하면 나는 책에 내 외설이 많지 않은 외침을 던질 것입니다. "TCP / IP Illustrated"( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 )를 적극 권장 합니다. 전혀 리눅스에 국한된 것은 아니지만 TCP / IP를 다루는 많은 것들을 "콜드 (cold)"라는 것은 매우 쉬운 일입니다.
요컨대, "마스터"가 배운 마법의 책이나 책, 초 비밀 비디오는 없지만, 당신이 그것을 고집하고 두려워하지 않으면 배울 수있는 것에 대한 제한은 전혀 없다고 생각합니다. 손이 더러워 지도록
개별 구성 요소를 사용한 경험이 수 년에 지나지 않아서 깊이 이해할 수 있습니다. 말했듯이, Oreilly Press의 대다수의 책은 더미가 아니고 24 시간 이상이 없으면 실제로 잘 작성되고 완벽합니다. :)
Linux From Scratch 라는 프로젝트가 있는데 , 아무 것도없는 리눅스 배포판을 빌드하는 방법을 보여줍니다. 한 번 교육하는 것이 교육적 일 수 있습니다. 소스에서 모든 것을 컴파일해야하므로 시간이 많이 걸리고 결국에는 모두 버릴 것입니다.
내가 찾을 수 LWN.net 일을 높은 수준에서 커널에서 작동하는 방법을 함께 유지의 커널 페이지 매우 중요합니다.
매일 사용하는 것 외에는 (나는 큰 일이라고 생각합니다!), 리눅스 박스에서 네트워크를 위해 구현 될 수있는 서비스에 대해 생각하기 시작하는 것이 좋습니다. Linux 서비스를 기반으로 설계를 시작하고 준비가되면 연구 및 구현하십시오. 프로세스에 실수가있을 수 있으며,이 경험을 통해 OS를보다 깊이 이해하는 데 도움이됩니다.
일반적인 Unix 철학과 커맨드 라인에 대한 훌륭한 소개를 위해 Brian Kernighan과 Rob Pike의 고전 The Unix Programming Environment가 있습니다.
또한 IBM DeveloperWorks 웹 사이트의 Linux 섹션에는 900 개가 넘는 기사가 있습니다. 관심있는 주제에 대한 기사 목록을 찾아 볼 수 있습니다.
마지막으로, 핵심에 빠질 준비가되면 소스로 이동하십시오. kernel.org 에서 사용중인 커널 버전의 소스 코드를 잡고 (배포판에는 설치할 수있는 커널 소스 패키지도 있음) Documentation 디렉토리를 확인하십시오. 커널 내부 및 구성 설정에 대한 많은 참조 자료를 찾을 수 있습니다.
학교. Linux 시스템을 실제로 이해하려면 다양한 컴퓨터 과학 시스템 배경이 필요합니다. 컴파일러, 컴퓨터 아키텍처 및 운영 체제. 그리고 당신은 당신이 가지고 있거나 오해하는 것이 중요하고 중요한 것을 보여줄 수있는 가이드가 필요합니다.
최신 프로세서의 작동 방식과 C 컴파일러가이를 활용하는 방법을 이해하면 Minix 3 과 같은 책으로 뛰어들 수 있습니다 .
이 책은 Linux 커널의 저자 인 Torvalds가 (거의) 그의 작업을 기반으로 한 최신 버전의 책입니다. 운영 체제의 기본 구성 요소 및 알고리즘과이를 정확히 구현하는 방법에 대해 배우게됩니다. 텍스트는 참조 및 교육 목적으로 소스 코드를 Minix에 거의 완벽하게 인쇄하여 제공됩니다. 시스템 작동 방식 및 제어 흐름 위치를 완전히 이해하려면 인터럽트 핸들러를 확인하십시오.
그리고 학교 및 컴퓨터 과학을 비웃기 전에 운영 체제에서 수행해야하는 작업은 일반적으로 NP- 완전하다는 점에 유의해야합니다. 따라서 최적의 알고리즘이 없을 수 있으므로 사용 가능한 다양한 알고리즘을 이해하는 것이 성능 조정에 중요합니다.
커널 외에도 여러 가지 다른 영역이 있습니다. 리눅스는 오픈 소스이기 때문에 이것은 학문적 인 금광입니다. 데비안 및 우분투와 같은 시스템은 소스를 사용할 수있게 해주 며, 매우 간단합니다.
apt-get source package-name
많은 업스트림도 개정 관리에서 코드를 호스팅하므로 프로그램 소스의 최신 버전을 읽거나 몇 년 전에 어떻게 빌드되었는지 확인할 수 있습니다.
소스 .
물론 커널 을 의미한다면 .
커널과 API 위에서 시스템을 배우려고한다면 구식을 배우기 시작 Unix
합니다. 아마 FreeBSD / OpenBSD / NetBSD / DragonBSD를 사용해보십시오 . 작은 Minix 도 도움이 될 수 있습니다. 그런 다음 Slackware , Arch , Debian 및 Gentoo로 이동하십시오 . 그것들은 모두 다르며 ( 그리고 훌륭한 문서 와 함께 제공 됩니다 ), 그 차이에서, 당신의 호기심은 왜 그런지에 대해 검색하게 할 것이며, 많은 기술적, 상업적, 정치적 및 역사적 지식을 얻게 될 것입니다.
또 다른 방법은 /etc
, 오래된 유닉스 매뉴얼, 물론 Google에 들어가는 것 입니다.
처음부터 리눅스 는 learning
GNU / Linux 의 훌륭한 방법입니다 .
자신 만의 배포판을 만들기 시작하십시오. 나는 너 자신을 위해 그것을했고 당신은 무엇을 알고 있습니까? 4 개월 후 나는 10 년 이상 리눅스를 사용하는 사람보다 리눅스 내부에 대해 더 많이 알고있다.
모든 * nix 환경에서 학습하는 것은 전체 론적 인 접근 방식입니다. 여기에는 일련의 주현절과 경험이 포함됩니다 . 이것은 우연이 아닙니다. 원래 환경이 컴퓨터 프로그래머를 위해 설계되었으며 설계자의 의도적 인 부산물입니다. 또한 사용자 경험이 아닌 기술적 측면에 중점을두기 때문에 가장 큰 단점입니다. "서비스없이 100 년 동안 지속될 견고한 프레임을 갖춘 집이지만, 사이딩은 우연히 발생하고 페인트는 분명히 무시되었습니다."
이 철학의 거울상 인 Windows와 이것을 대조하십시오. 사용자에게 실질적인 경험을 제공하지만 사물의 내부 작업으로부터 보호하는 무언가를하십시오. 그것은 "아름다운 손질과 페인트를 가진 집이지만, 여러 가지 해결 방법으로 여러 번 지어진 기초"입니다.
실제로 학습을 시작하려면 하드웨어에 고유 한 옵션이있는 사용자 지정 커널 이미지를 만들고 원하는 옵션으로 설치하는 것이 좋습니다. 당신은 무언가, 어딘가가 깨져서 "정상"으로 되돌릴 수 있거나 없을 수도 있다는 것을 완전히 기대해야합니다. 이것은 학습 과정의 정상적인 부분이므로 문제가있는 것처럼 접근해야합니다 (즉, 기본 설치로 만들지 말고 별도의 드라이브 또는 가상 컴퓨터 또는 다른 것을 사용하십시오 ...)
나는에 대답했던 비슷한 질문을 내가 가교거야 입력 줄일 수 있도록, 여기 . 이 페이지 의 처음 몇 단락을 읽으면 현재 상황에 대해 더 나은 느낌 을 줄 수 있습니다 .
파일을 읽기 / cat'ing 시작 /proc
과 /etc
- 당신은 단순히 파일을 읽어 손상을주지 않습니다 인간이며, 많은의 (당신이 고양이 바이너리 정보를 생성하는 파일의 경우 어쩌면 터미널 / SSH를-연결을 속이고 저장) 읽을 수 있습니다. ' sysctl -a
'출력도 금광입니다. 흥미로운 것을 발견하면 Google 또는 이에 man
대한 자세한 정보를 얻으십시오.
커널과 OS가 이런 식으로 작동하는 방법에 대한 실제 보석을 찾을 수 있습니다.
몇 가지 빠른 조언 :
/ etc / inittab /etc/rcS.d /etc/rc2.d / etc / crontab / proc / 1 / 환경 / proc / filesystems / proc / meminfo / proc / cpuinfo sysctl -a | grep vm.swappiness / etc / default # 데비안 기반 / etc / sysconfig # redhat 기반
빠른 팁-/ proc의 일부 출력은 NUL로 분리되므로 읽기가 어렵습니다. 'tr'을 사용하여 NUL을 줄 바꿈으로 변환하십시오.
sudo cat / proc / 1 / environ | tr '\ 0', '\ n'
리눅스 나 운영 체제에 대해 배울 것이 많다. 학습의 한 종류는 내가 "깊이"학습이라고 부르는 것인데, 커널 작동 방식, 가정, 다양한 비트가 서로 통신하는 방법 및 하드웨어를 다루는 방법을 찾는 것입니다. 그것은 커널입니다. 그런 것들이 왜 운영 체제가 그런 식으로 고장 났는지 알아내는 데 매우 유용합니다. 사실, 나는 Karl Katzke 와 같은 방식으로 그것을 배웠습니다 . 나는 물건을 부수고 더 좋게 만들었습니다.
이런 종류의 지식을 위해 Linux는 매우 쉽습니다. 모든 곳에서 문서화되어 있습니다. 동일은 할 수없는 매우 그것을 위해 거기 문서의 많은 여전히 존재하지만, Windows 용 말했다.
그런 다음 bash / sed / awk / regex에 대한 지식과 다른 모든 것들이 유용한 'OS 내 학습'학습이 있습니다. 사실, 오늘날 운영 체제는 커널보다 훨씬 더 큽니다. 공급 업체가 제공 한 드라이버 Blob이 있습니다. 이 특정 배포판이 시작 스크립트를 패키지화하는 방법이 있습니다. 다양한 패치 / 업데이트 메커니즘이 있습니다. 모든 사람이 필요하지만 커널이 아닌 시스템 데몬이 있습니다.
이것은 단순한 kernel-fu보다 훨씬 광범위한 지식 범위입니다. 배포자에 따라 다르므로 Red Hat에서 작동하는 방식이 Slackware에서 동일하게 작동하지 않을 수 있습니다. 파일이 보관되는 위치는 다를 수 있습니다. 그들이 'vi'를 대체하기 위해 선택한 것을 할 수 있습니다.
"리눅스 학습"은 단순한 운영 체제가 아닌 전체 생태계를 학습하는 것에 관한 것입니다.
나는 "리눅스 프로그래밍"이라는 책을 가지고 있는데 "리눅스 학습"책보다 OS에 대해 더 많이 가르쳐주었습니다. ISBN 번호가 있었으면 좋았지 만 놀라웠습니다. 부분적으로 "어떻게"가 아닌 프로그래밍 "왜"에 들어가기 때문입니다.
전반적으로, 나의 학습의 대부분은 정직하게 그것을 깨고 고치는 것입니다. 천천히 일어 났고 12 년이 지난 지금도 새로운 것을 배우고 있습니다.
확실히 과정입니다. 열쇠는 매우 궁금합니다. 익숙하지 않은 것을 발견하면 익숙해 지십시오. 그것이 어떻게, 왜 똑딱 거리는 지에 대한 지식을 찾고, 기본 기술도 배우십시오.
책에 관해서는 O'Reilly 's를 좋아하기 때문에 "필수 시스템 관리 포켓 참조"및 "Linux 시스템 관리"가 가능한 출발점입니다.
TCP / IP 네트워크 관리의 사본은 이전 버전이며 한동안 사용하지는 않았지만 진행 상황을보다 심층적으로 이해하는 것이 매우 유용하다는 것을 알았습니다.
Linux를 일반 데스크탑으로 사용하여 이미 첫 번째 단계를 수행하고 있습니다.
모든 부분이 어떻게 연결되고 구성되는지 이해하려면 젠투를 실행하는 것이 좋습니다 . 일반적인 stage3 설치에서, 당신은 당신 자신의 커널을 컴파일하고, 모든 서비스를 설치하고 (즉, SSH는 제외) X를 직접 빌드하고 설정해야합니다. 바이너리 리눅스 설치에 들어가는 모든 비트에 대해 훨씬 더 잘 이해합니다. 또한 젠투가 내가 찾은 Distro에 대한 최고의 문서를 가지고 있거나 포티지가 환상적이고 강력하고 유연한 패키지 관리자라는 사실을 아프게하지 않습니다.
나는 이것을 "필수 읽기"로 강력히 추천한다 :
유닉스 프로그래밍 환경-Brian W. Kernighan / Rob Pike
ISBN 0-13-937681-X
http://www.amazon.com/Unix-Programming-Environment-Prentice-Hall-Software/dp/013937681X
다른 사람이 이것을 언급했으며 다양한 Linux 맛을 사용하는 데 가장 도움이 된 것으로 생각합니다. 리눅스에 대한 합리적인 핸들이 있다고 생각되면 open / net / freebsd를 사용하십시오.
왜 내가 함께 일한 대부분의 리눅스 사람들은 다른 리눅스 배포판과 전혀 다르지 않은 하나 또는 두 개의 리눅스 배포판을 사용할 수 있습니다. 물론, 대부분은 손등과 같은 배포판을 알고 있었지만 여전히 특정 상황에 놀라 울 정도로 놀랐습니다. 나는 BSD가 조립되는 방식이 일이 수행되는 방식의 "왜"를 발견하기가 조금 더 쉽다고 생각한다. ). 그것은 당신의 관점을 바꾸는 것에서 유래합니다. 누군가가 완전히 다른 방식으로 그것을 할 때까지 왜 특정 것들이 그들의 방식인지 묻는 것은 결코 당신에게 일어나지 않을 것입니다.
Stackoverflow 에 대한 이 게시물 에는 해당 주제에 대한 대부분의 정식 작업을 포함하여 많은 유닉스 / 리눅스 리소스 목록이 있습니다.
Linux가이면에서 진드기를 만드는 것을 배우는 또 다른 방법은 Linux From Scratch ( http://www.linuxfromscratch.org/ )를 통해 작업하는 것 입니다. 그것은 본질적으로 리눅스 시스템의 다양한 구성 요소를 수동으로 설치하고 구성하는 일련의 연습이며 너트와 볼트를 배우는 매우 좋은 소개입니다.