리눅스가 부팅하기까지…..

 컴퓨터에 전원을 넣은 순간부터, 리눅스가 부팅을 완료하기까지는 참으로 여러가지 일들이 컴퓨터 내부에서 일어난다.

 lilo 혹은 grub의 구동에서 부터 커널의 로딩까지…

 다음의 링크에 이에 관한 상세한 설명이 담겨있다.

http://kldp.org/KoreanDoc/html/Boot_Process-KLDP/index.html

어이없는 실수….

 과제로 제출하기 위한 프로그래밍을 하던 도중 이상한 오류를 발견했다…

 숫자인 문자열을 double, 혹은 float 형으로 변환해주는 strtod() 라는 함수를 사용하면서 생긴 오류였는데 도통 원인을 발견하지 못하였었다..

 어떤 문자열을 숫자로 바꾸라고 입력하면….이상하게도 엉뚱한 값과 -nan 이라는 문자열만 출력되는 것이었다.

 nan 이라는 것이 무슨뜻일까…찾아보니 Not A Number 라는 뜻이었다..

 왜 그럴까…

 한참 동안이나 디버깅과 여러가지 데이터 값들을 입력해보고 여러모로 원인을 찾아보았다.

 하지만 코드상의 문제는 보이지 않았다.

 당연했다. 함수하나 불러쓰는 것인데 무슨 문제가 있을려구..

 한참을 찾고 찾다…한 2시간이 흐른뒤….어이없는 실수를 발견했다..

 해당 함수를 쓰기위한 헤더파일을 선언하지 않았던 것…

 하하하하하하……

 그저 웃음만 나온다.

 나름 소스를 깔끔하게 작성한다고 .c 파일과 .h 로 구분해 놓은것이 화근이었다.

 물론 그것이 잘못된 것이 아니었다.

 하지만 헤더파일 구분만 해놓고 헤더파일 선언을 하지 않은 나의 불찰…

 으이구….다음부터는 조심하자..

Virtual Bax 에서 브릿지 구성 이용하기..

 리눅스에서 돌아가는 훌륭한 가상머신 Virtual box!

 하지만 NAT 구성을 사용할 경우 웬일인지 호스트에서 게스트로의 Ping 과 ssh, telnet 접속이 되지 않았다..

 그래서 브릿지 구성을 통하여 문제를 해결했다.

 먼저 임의의 디렉토리에 다음의 스크립트를 작성한다.

startup.sh (Language : perl)
  1. #!/bin/sh
  2.  
  3. brctl addbr br0
  4.  
  5. ifconfig eth0 0.0.0.0
  6. #ifconfig wlan0 0.0.0.0
  7.  
  8. # for wireless lan
  9. #brctl addif br0 wlan0
  10.  
  11. # for wired lan
  12. brctl addif br0 eth0
  13.  
  14. # If you have a dhcp-server uncomment this line
  15. dhclient3 br0
  16. #dhcpcd br0 -A
  17.  
  18. # If you have a static IP uncomment the following lines and
  19. # change the IP accordingly to ypur subnet
  20. #ifconfig br0 192.168.1.110 up
  21. #route add default gw 192.168.1.1
  22.  
  23. # Change your username accordingly
  24. tunctl -t tap0 -u pchero
  25. tunctl -t tap1 -u pchero
  26.  
  27. # Now add the tap-device to the bridge
  28. ifconfig tap0 up
  29. ifconfig tap1 up
  30. brctl addif br0 tap0
  31. brctl addif br0 tap1
  32.  
  33. route add -net 192.168.10.0 netmask 255.255.255.0 br0
  34. route add -net 192.168.100.0 netmask 255.255.255.0 br0
  35.  

 위의 스크립트 파일 구성은 브릿지 네트워크를 사용하는 가상 머신이 두개일 때 사용하는 스크립트이다.

 만약 세개 이상이 필요하다면 원하는 숫자만큼 tap 인터페이스를 늘리고 br0에 붙여서 사용하면 된다.

 다음은 종료시 사용하는 스크립트이다.

stop.sh (Language : perl)
  1. #!/bin/bash
  2.  
  3. # Biring the interfaces down
  4. ifconfig tap0 down
  5. ifconfig tap1 down
  6. ifconfig br0 down
  7. #ifconfig br1 down
  8. brctl delif br0 tap0
  9. brctl delif br0 tap1
  10. #brctl delif br1 tap1
  11. brctl delbr br0
  12. #brctl delbr br1
  13.  
  14. # Now setup your network-interface again
  15. # for dhcp uncommnet the following line
  16.  
  17. # for wired lan
  18. dhclient3 eth0
  19.  
  20. # for wireless lan
  21. #dhclient3 wlan0
  22.  
  23. # For a static IP uncommnet the following lines and change them accordingly
  24. #ifconfig eth0 192.168.10.100
  25. #route add default gw 192.168.10.1 dev eth0
  26.  

 이렇게 만들어진 스크립트를 사용하기 위해서는 다음의 작업들이 더 필요하다.

 먼저 네트워크 세팅에서 호스트 네트워크로 변경한다.

 그런 다음, 호스트 인터페이스 설정에서 설정 프로그램에 startup.sh, 종료 프로그램에 stop.sh, 인터페이스 이름에 설정한 tap0, tap1 을 설정한다. 다음은 설정 예이다.

gksudo /home/pchero/virtual_box/starttun.sh
gksudo /home/pchero/virtual_box/stop.sh

 앞쪽에 붙어있는 gksudo 는 root의 권한으로 사용하기 위한 명령이다.

 ….하지만 나의 경우는 이상하게 gksudo 로 설정을 해도 되지 않았다. 일일이 하나씩 스크립트를 수동으로 실행을 시켜야 되었다..

 왜그럴까….;;;