1. ldd file_name linux.die.net/man/1/ldd ldd(1): print shared library dependencies - Linux man page ldd(1) - Linux man page Name ldd - print shared library dependencies Synopsis ldd [OPTION]... FILE... Description ldd prints the shared libraries required by each program or shared library specified on the command line. Security In the usual case, ldd invo linux.die.net 2. lsof -p processid man7.o..
세팅 저장용 글 작성 1. Mac OS Recovery Mode 진입 ( 파워 On과 동시에 CMD+R 누르고 기다린 후 붕~하는 소리 들리면 손 때고 기다리기) 후 2. Utilities --> Terminal 띄운 후 Turn off SIP #csrutil disable 3. Restart ( 정상모드로 Mac OS 띄우기) 4. Terminal 띄운 후 다음과 같이 처리 $ tccutil reset All com.vmware.fusion $ sudo sqlite3 "/Library/Application\ Support/com.apple.TCC/TCC.db" 'insert into access values ("kTCCServiceScreenCapture","com.vmware.fusion",0,1,1..

컴파일을 한번 해볼까? 커널 컴파일은 루트 개정으로 들어가야 한다. 루트 계정인지 어떻게 아냐고요? Shell을 띄웠을 때 커서 왼쪽에 #이라고 뜨면 나는 루트다. 그런데 어떻게 루트로 바꾸지? 흠.. sudo로 root 패스워드를 바꾸고.. su - 로 루트쉘을 열자 처음이라 루트는 무섭지?만 조심하면 된다^^ 커널 소스 압축을 풀고 들어간다음 ( 또는 git으로 다운로드 받은 폴더 안에 들어가서 ) 진행하면 된다 ls -l 했을 때 arch, block, certs .. 등등의 디렉토리가 보인다면 정상!! 커널 컴파일 순서는 간단하다. #make menuconfig; make; make modules; make modules_install; make install 이렇게 하면 될거 같지만 생각보다 c..

2. Linux Shell에서 git으로 받아보기 !! Kernel.org 사이트에서 HTTP, GIT, RSYNC를 지원한다고 되어있다. 1 번에서 직접 다운로드 받는 것이 HTTP 이용한 버전이고 두번째가 git으로 받는 것이다. git은 현재 개발중인 소스코드를 다운로드 받고 해당 폴더에서 update등도 가능하다. 우선은 다운로드만 진행해보자. GIT으로 들어가보면 다음과 같이 아주 복잡한 사이트가 보인다. 어쩌지? 내가 관심있어하는 분야의 최신 커널소스들을 확인해볼 수 있다. 공부하기 딱 좋다. 라고 쓰고 눈을 감는다. 아직은 아냐. Kernel Maintainer가 중요한 코드는 골라서 Mainline에 Merge해줄거야.. 사람들이 관심있는 분야가 이런쪽이구나.까지만 살펴본다. 커널을 다운로..

1. kernel.org에서 다운 받기 https://www.kernel.org/ 사이트에 들어가면 무엇을 골라야 할지 헤깔릴때가 있다. 우리는 지금 Mac에서 virtualbox/vmware로 리눅스를 쓰고 있다^^ 고로 x86_64 (intel , AMD 64bit )인데 배포판처럼 따로 구분되어 있지 않다.. 뭐지?? 라고 생각할 수 있으나 linux kernel 소스내에서 architecture 별로 구현되어있다고만 알고 시작하자. 우선 Mainline은 현재 안정화 시키고 있는 최신 커널이다. Stable은 안정화된 버전이고^^, EOL(End of Line)은 안정화된 버전이지만 더이상 Update는 되지 않는다. 다운로드를 원하면 Mainline이나 stable을 받아보자^^ 공부할거니까....
커널이 부팅되고 나면 내가 뭘 보지? 하는 생각을 할 수 있는데.. kernel module을 살펴볼 필요가 있다.. 리눅스에서 드라이버는 커널에 넣어서 동작시킬수도 있고 모듈타입으로 만들어서 커널에 올렸다 내렸다 할 수 있다. start_kernel 함수 마지막에 module 관련 부분이 있는거^^ 확인 그럼 그냥 내 module 하나 만들어서 올렸다 내렸다 해볼까? OK !! 자세한건 다음에..
start_kernel까지 왔다면 이미 당신은 성공이다..^^ 왜냐면 이미 화면에 뭔가가 보였였으니까^^ 이전까지에서 생기는 문제들은 찾아내기 어렵지만 이뒤로부터는 논리적인 사고력만 있으면 된다. 나는 오래된 사람이라 ctags 와 vi만으로 커널을 튀어다니는 작업을 한다. 자 그럼 뭔일을 하는지 알아볼까? 하는데.. 운영체제 시간에 배웠던 이론들이 그냥 배운게 아니었어... 와 대박.. 다나와.. 하나씩 살펴볼건데 x86_64 코드쪽을 볼거라고 했는데.. arm 볼 사람도 같이 보라고 했던 이유는.. setup_arch에서 갈라진다는 얘기를 하고 싶어서다.. setup_arch에서 cpu 아키텍쳐별로 나눠진다.. 시스템 부팅 과정과 시스템 콜, setup_arch를 빼면 linux kernel의 큰 줄..