반응형

OS: Ubuntu 12.04 LTS (desktop)


PC에 멀티부팅을 위해서 윈도우와 우분투를 같이 설치하면, GRUB 부트 로더가 운영체제 선택을 할 수 있는 메뉴를 보여준다. 그런데 기본적으로는 맨 위의 첫번째 항목에 Ubuntu 운영체제가 있고, 그 항목이 선택되어 있다. 만약 제한시간(기본적으로 10초) 내에 키보드로 선택을 바꾸지 않으면 기본 선택된 운영체제로 자동으로 부팅을 진행한다. 그러나 평소에 윈도우를 더 많이 쓰는 경우에는 부팅할 때마다 매번 키보드로 선택을 바꿔 줘야 해서 불편한 경우도 있다.


이를 해결하기 위한 설정 변경 옵션을 GRUB에서 제공하고 있다. 이 글에서는 기본 부팅되는 운영체제 선택을 변경하는 2가지 방법을 설명한다. 첫번째설정파일 편집과 콘솔 명령을 이용하는 방법이고, 두번째는 Ubuntu가 GUI (Graphic User Interface) 환경일 경우 grub-customizer 프로그램 통해서 마우스 클릭 몇번으로 설정할 수 있는 쉬운 방법이다.



(1) 설정 파일 수정 및 콘솔 명령을 통한 방법

우선 GRUB 메뉴상에서 윈도우가 몇번째 항목인지 알고 있어야 한다. 부팅할 때 GRUB 화면을 보고 몇번째인지 기억해 둔다. 필자의 경우 6번째 항목이 윈도우7이었다.


만약 재부팅해서 확인하기 귀찮다면, /boot/grub/grub.cfg 파일에서 몇번째에 있는지 확인할 수 있다.

vi든 gedit든 아무 텍스트 편집기를 써서 /boot/grub/grub.cfg 를 연다.

그리고 "menuentry"로 검색해 보면 운영체제 이름과 함께 여러 개가 검색될 것이다. 

여기서 윈도우 운영체제 이름이 적힌 menuentry가 몇번째인지 확인하면 된다. 


주의할 점은, 중간에 submenu "Previous Linux versions" { 로 시작해서 menuentry가 몇개 나오고 그 다음에 다시 중괄호( } )가 닫히는데, 이 부분은 하나로 계산해야 한다. 즉, submenu 안에 있는 운영체제 개수는 여러개가 있어도 1개로 간주해야 한다. 

일반적으로 아래와 같은 구조로 되어 있다.

menuentry 'Ubuntu, ......' {

    각종 옵션들

}

menuentry 'Ubuntu, ...... (recovery mode)' {

    각종 옵션들

submenu "Previous Linux versions" {

menuentry 'Ubuntu, ......' {

    각종 옵션들

}

menuentry 'Ubuntu, ......' {

    각종 옵션들

} 

}

menuentry "Memory test (memtest86+)" {

    각종 옵션들

menuentry "Memory test (memtest86+, serial console 115200)" {

    각종 옵션들

menuentry "Windows 7 (loader) (on /dev/sda1)" {

    각종 옵션들

}


위와 같은 경우, 윈도우는 6번째 항목이다.


이제 설정 파일에서 기본 선택 위치를 바꿔 보자. 루트 권한을 가지고 /etc/default/grub 파일을 연다.

vi 를 쓰는 경우:

$ sudo vi /etc/default/grub

gedit 를 쓰는 경우:

$ sudo gedit /etc/default/grub


GRUB_DEFAULT="0" 이라고 적힌 줄이 있을 것이다. 이 부분을 메뉴상에서 윈도우가 있는 메뉴 숫자로 바꿔 주어야 한다. 앞의 확인 과정에서 윈도우가 6번째라면, 변경된 값은 5가 된다. 왜냐하면 첫번째 항목이 0부터 시작하기 때문이다.

GRUB_DEFAULT="5"   #윈도우가 메뉴상에서 6번째 항목일 경우


만약 GRUB가 자동 부팅까지 기다리는 시간을 조정하고 싶다면 GRUB_TIMEOUT="10" 에서 따옴표 안의 숫자를 원하는 숫자(초 단위)로 바꾸면 된다.


설정 파일을 고쳤다면 아래 명령을 통해서 설정을 변경한다.

$ sudo update-grub




(2) grub-customizer 프로그램을 이용한 방법


이 방법은 우분투가 GUI 환경을 지원한다는 가정 하에 이용 가능하다.

아래와 같이 콘솔에 명령어를 입력하여 grub-customizer를 설치한다.

$ sudo add-apt-repository ppa:danielrichter2007/grub-customizer

$ sudo apt-get update

$ sudo apt-get install grub-customizer


간중간 계속 진행할 것인지 물어볼 것이다. 모두 yes로 선택(y 입력후 엔터 또는 그냥 엔터)한다.

콘솔에서 아래 명령을 통해서 grub-customizer를 실행한다.

$ gksu grub-customizer


기본 화면은 아래와 같다.


General settings 탭을 누른다.


default entry에서 predefined 항목을 누르면 선택할 수 있는 운영체제 목록이 나온다.

윈도우 운영체제에 해당되는 Entry를 선택한다. 윈도우 운영체제 이름 또는 Entry 번호 중에서 아무거나 선택할 수 있다.


참고로, 아래에 있는 Boot default entry after [   ] Seconds 에 있는 숫자를 조정하면 GRUB가 기다리는 시간을 조정할 수 있다. 위의 그림의 경우, 7초 동안 기다렸다가 자동으로 Windows 7으로 부팅하겠다는 설정이다.


원하는 대로 설정이 되었다면 반드시 Save 버튼을 눌러서 설정을 저장하도록 한다.



이제 컴퓨터를 재부팅해 보면 기본 선택이 윈도우로 바뀌어 있을 것이다.



반응형
블로그 이미지

Bryan_

,
반응형

*테스트한 프린터: HP Color LaserJet CP2020 Series

*프린터 드라이버: 윈도우 7(Windows 7)용 드라이버, HP Color LaserJet CP2020 Series PCL6 (0.3.7071.0)



HP 레이저 프린터 중에서 자동 양면 인쇄를 지원하는 모델이 여러 개 있다. 그런데 모델명에 맞는 레이저 프린터 드라이버를 제대로 설치했음에도 불구하고 양면 인쇄 옵션이 보이지 않거나, 양면 인쇄가 자동으로 되지 않아서 사람이 손으로 A4용지를 뒤집어야 하는 경우가 있다. 대부분 컴퓨터를 포맷하고 나서 레이저 프린터 드라이버를 새로 설치했을 때 이런 문제를 겪는다.


이 문제를 해결하려면 HP 레이저프린터 속성 창에서 자동 양면 인쇄 기능을 따로 설치해 주어야 한다. 참고로 양면 인쇄 기능을 설치할 때 새로운 드라이버가 필요하거나 특별한 파일을 다운로드받을 필요는 없다. 단지 설정을 변경하는 수준의 작업으로 해결할 수 있다. 대부분의 HP 레이저 프린터는 비슷한 형태의 드라이버를 갖고 있으며, 이 글에서는 HP Color LaserJet CP2020 모델을 대상으로 설명하고자 한다.



<가정사항>

*자동 양면 인쇄 기능이 지원되는 HP 레이저프린터 기종이다.

  무엇보다도 가장 주의할 점은, 레이저 프린터가 자동으로 양면 인쇄하는 기능이 있는지 먼저 확인하는 것이다. 자동 양면 인쇄가 되는 레이저 프린터 모델을 확인하고 싶다면 HP 프린터 및 복합기 페이지 (http://www8.hp.com/kr/ko/products/printers/#!view=grid&page=1)를 확인하는 것이 도움이 된다.


*윈도우 운영체제를 쓰며, 프린터 드라이버가 이미 설치되어 있다.

  윈도우용이 아닌 HP 프린터 드라이버의 경우 설정창이나 옵션 변경 방법이 다를 수 있고 테스트해본 적이 없다. 따라서 이 글에서는 윈도우 운영체제에서 HP 공식 프린터 드라이버(또는 윈도우 업데이트를 통해 자동 설치된 드라이버)를 사용하는 경우를 가정한다.




<자동 양면 인쇄 설정방법>


(1) [시작] - [장치 및 프린터]에 가서(또는 제어판 - 장치 및 프린터), 원하는 프린터의 오른쪽 단추를 누르고 메뉴에서 프린터 속성 페이지로 진입한다. 참고로 메뉴 맨 끝에 있는 속성이 아니고 중간쯤에 있는 "프린터 속성"을 눌러야 한다.


(2) [장치 설정] 탭으로 이동한다.


(3) "설치할 수 있는 옵션" 중에서 "듀플렉서(양면 인쇄)" 항목이 보일 것이다. 기본값은 "설치되지 않음"으로 되어 있는데, 여기서 "설치됨"을 선택한다. 그리고 [적용], [확인] 버튼을 누른다.


(4) 정말로 양면 인쇄가 잘 되는지 테스트해 보자. MS Word(워드)에서 인쇄 창에 가면 인쇄할 프린터 모델명 밑에 "프린터 속성" 링크가 있다. 이것을 눌러서 설정창을 연다.


(5) 설정창에서 [완료] 탭을 선택한다.


(6) 중간의 문서 옵션 영역에 "양면 인쇄" 항목을 체크한다. [확인] 버튼을 누르고 인쇄를 해 보면 양면 인쇄가 자동으로 될 것이다.




반응형
블로그 이미지

Bryan_

,
반응형

테스트 장비: 삼성 시리즈 9, 13인치 모델(NT900X3C-A64, 2012년 말 구입)


처음 시리즈9 노트북을 샀을 때 윈도우8이 기본으로 깔려 있었다. 같은 스펙에 이름 맨 끝이 A54인 경우가 윈도우7이 기본으로 깔려 있는 모델이었던 것 같다.


연구/실험용으로 윈도우7과 리눅스를 노트북에 설치하려고 삽질을 했었는데, 가장 먼저 직면했던 문제는 윈도우7 설치가 진행되지 않는 것이었다. 처음에 윈도우7 DVD를 넣으면 설치 준비까지는 잘 되는데, 본격적으로 설치하기 위해서 파티션 설정 화면으로 넘어갈 때 하드디스크가 없는 것으로 인식하는 것이었다.


경험상으로는 윈도우7을 설치하려면 바이오스 설정에서 운영체제가 UEFI OS로 되어 있는지 확인해 보고 CSM OS로 변경해야 한다. 그렇지 않으면 위와 같이 윈도우7 설치가 안되거나, 설치가 성공적으로 되었더라도 부팅이 안되는 상황을 겪었다.


정리하면,

- 부팅 시작할 때 F2 키를 연타해서 바이오스(BIOS) 진입 (절전모드에서 켜는 것이 아니라, 완전히 "시스템 종료"를 하거나 "다시 시작"을 해야 한다.)

- [Boot] - [Secure Boot]이 설정되어 있다면 해제(Disabled)하고, [OS Mode Selection]"CSM OS" 선택 ("UEFI and CSM OS"도 가능한 것 같지만 확인되지 않음)


(윈도우7이 성공적으로 부팅되는 경우의 시리즈9 바이오스 세팅)


반응형
블로그 이미지

Bryan_

,
반응형

테스트한 OS: Ubuntu 12.04

쉘(shell): bash



* grep만 이용하는 방법


리눅스에서 파일 내에 있는 특정 문자열을 검색할 때 쓰는 grep에 옵션을 더하면 현재 위치에서 하위 디렉토리에 있는 파일들까지 검색을 수행할 수 있다. Ubuntu에서는 grep가 하위 폴더 검색까지 지원하기 때문에 아래와 같이 간단하게 해결할 수 있다.


$ grep -rn "찾고자 하는 문자열" *


-r 옵션은 하위 디렉토리에 있는 파일까지 검색하겠다는 것이고,

-n 옵션은 라인 번호를 보여주는 것이다.

그리고 검색하는 문자열에 공백이 있다면 앞뒤에 따옴표가 반드시 있어야 한다.


그냥 저렇게 실행하면 검색결과보다 "No such file or directory"와 같은 오류 메세지가 더 많이 뜨는 경우도 있다. 이 때는 명령에 "2> /dev/null"을 붙여서 검색 결과만 남겨 두고 에러 메세지는 보이지 않도록 처리할 수 있다. 아래 그림은 openwrt의 build_root 디렉토리 하위의 모든 파일들에 대해서 "setup_fname_info(struct"라는 문자열을 검색한 결과이다.





* find와 grep를 같이 이용하는 방법


그런데 리눅스 배포판에 따라서 grep의 하위 디렉토리 검색이 안되는 경우도 있다고 한다. 어디서 안되는지는 사실 모르겠다. 라우터에 들어가는 매우 가벼운 OpenWRT에서조차 -rn 옵션이 작동하는데 어디서 안되는 것일지?

어쨌든 조금 길고 복잡하지만 같은 목적을 갖는 다른 방법으로 find를 같이 이용하는 방법이 있다.


$ find . -name "*" | xargs grep -n "찾고자 하는 문자열"


참고로 grep와는 달리 find를 쓸 때의 좋은 점은 정규식을 통해서 검색할 파일의 범위를 지정할 수 있는 것이다. 예를 들면, 하위 디렉토리의 모든 .c 또는 .h 파일에 대해서만 검색을 수행하고자 할 때 아래와 같이 할 수 있다.


$ find . -name "*.[ch]" | xargs grep -n "찾고자 하는 문자열"



앞선 예제와 같은 조건에 대해서 find를 이용한 검색 화면은 아래와 같다. 참고로 맨 끝에 붙인 "--color=auto" 옵션은 텍스트와 라인 번호, 키워드 강조 색상을 주기 위해서 필요하다. "--color=auto" 옵션이 없으면 그냥 단색의 결과만 나타난다.




참고로 위의 grep -rn과 달리 검색결과가 3개만 나오는 이유 2가지는 다음과 같다.

 

 - 확인 결과 grep에서 나온 첫번째와 두번째 검색 결과는 같은 파일이다. 경로상에서 보면 build_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/linux-3.10.32는 실제로 존재하는 경로이고, build_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/linux는 같은 위치에 대한 바로가기 링크이다. 즉, grep는 링크도 무시하지 않고 똑같이 하위 디렉토리로 간주하고 검색한다는 얘기.


 - "xmit.c~" 파일은 xmit.c의 백업 파일인데 확장자가 "c~"기 때문에 c와 h 파일만 찾는 정규식에 의해 검색에서 제외되었다.



반응형
블로그 이미지

Bryan_

,
반응형

<테스트한 환경>

OS: Ubuntu 11.04 Desktop (32bit, kernel 2.6.38-8-generic)

네트워크 인터페이스: TP-LINK TL-WN722N (802.11b/g/n)



연구실험 목적으로 와이파이 무선 애드혹 네트워크를 구성해서 쓰면서 유난히 연결이 안되는 경우가 자주 있었는데, 경험을 바탕으로 몇 가지 원인을 나열해 보고자 한다.



(1) Ubuntu desktop의 Network Manager 서비스와 /etc/network/interfaces 파일 간의 설정 불일치


고정IP와 채널 설정 등 가장 확실하게 설정할 수 있는 방법은 우분투(Ubuntu)를 기준으로 /etc/network/interfaces 파일을 수정하는 것이다. 그런데 Ubuntu desktop에서 쓰는 서비스인 network-manager는 /etc/network/interfaces 파일을 참고하지 않고 별도로 설정을 보관한다. 즉, network manager에서 그래픽 유저 인터페이스(GUI)를 이용해서 설정을 변경하더라도 /etc/network/interfaces 파일에 반영되지는 않는다.

반대로 /etc/network/interfaces 파일을 수정하면 network-manager의 상태 메세지가 그 변경 내역을 반영하는 것 같지만, 별로 신뢰가 가지 않는다. 가끔 network-manager가 오작동을 하면서 시스템 전체가 다운되는(커널 패닉; kernel panic) 현상도 겪었다.


개인적으로는 network-manger 서비스를 삭제해 버리고, 오직 /etc/network/interfaces 파일을 통해서만 모든 네트워크 설정을 하는 것을 추천한다. 그래픽 인터페이스가 아니라서 직관적이지는 않겠지만, 이것이 오작동 없이 설정하는 가장 확실한 방법이다. 우분투에서 network-manger 서비스 삭제는 아래와 같이 할 수 있다.

$ sudo apt-get remove network-manager


만약 network-manager를 삭제하는 대신 일시적으로 서비스를 중단하고 싶다면 service disable 명령어를 이용한다.

$ sudo service network-manager disable




(2) 다른 유선/무선 네트워크 설정과 같은 IP주소 대역을 쓰는 경우


별 생각 없이 애드혹 네트워크를 구성하면서 고정IP 주소를 192.168.0.X 또는 192.168.1.X를 쓰는 경우가 많이 있다. 하지만 대부분의 경우 공유기를 통해 연결하는 유선랜 연결에서 할당받는 유동 IP 주소가 대부분 192.168.0.X 또는 192.168.1.X라는 사실을 염두에 둬야 한다.

필자의 경우 무선 와이파이는 애드혹 네트워크로 설정하고 유선랜은 원격 ssh 접속 및 디버그 용도로 쓰려고 했는데, 공교롭게도 유선과 무선이 같은 대역의 IP 주소를 쓰는 바람에 기대하던 대로 연결되지 않는 현상을 겪었다.

애드혹 네트워크를 고정IP로 쓰는 경우, (게다가 애드혹 모드에서 고정 IP를 쓰지 않으면 제대로 연결되지도 않음) 다른 네트워크과 서브넷(subnet) 주소가 겹치지 않도록 주의하자. (예를 들어, 192.168.3.X 대역을 쓰는 식으로 주소를 확실하게 구분할 것)




(3) Cell 정보가 잘못되어서 생기는 문제


애드혹 네트워크의 경우 고정된 게이트웨이(공유기의 역할)가 따로 있지 않지만, 설정상으로는 가상의 게이트웨이처럼 Cell 정보를 갖고 있다. 콘솔에서 iwconfig를 입력하면 맥 주소 형태로 된 cell 정보를 확인할 수 있다. 같은 애드혹 네트워크에 있는 모든 노드가 같은 cell 정보를 공유한다.


(iwconfig 명령을 통해서 확인할 수 있는 애드혹 네트워크의 각종 정보. 밑출 친 부분이 Cell 정보이다.
Cell 값은 특정 노드의 맥주소는 아니고, 재구성할 때마다 임의의 값을 할당받는 것으로 보인다.)


아직 정확한 원인은 모르지만, 설정상 전혀 이상이 없는데도 갑자기 애드혹 네트워크 상의 노드들끼리 전혀 통신을 못하는 경우가 있다. 그래서 각 노드를 하나씩 네트워크 재설정도 해 보고,  (sudo /etc/init.d/networking restart) 각 노드를 재부팅도 해 봤으며, USB 무선랜 카드를 뽑았다가 다시 연결하기도 했지만 여전히 되지 않았다.


확인해본 결과 노드를 하나씩 재설정/재부팅해서는 안 된다. 아마 Cell 정보에 문제가 있었던 것 같은데, 장비를 하나씩 재시작하면 네트워크가 켜져 있는 다른 노드가 계속 기존의 설정을 유지하고 있기 때문에, 그 노드로부터 잘못된 정보를 받아 와서 다시 공유하게 된다. 그러므로 확실하게 하려면, 모든 노드가 다같이 전원을 껐다가 켜야 한다. (애드혹 네트워크를 완전히 없앴다가 다시 만들자는 얘기) 이렇게 하면 iwconfig를 통해서 Cell 정보가 변경된 것을 확인할 수 있으며, 다시 노드들끼리 정상적으로 통신이 된다.




(4) 신호 세기와 물리적인 공간 특성으로 인한 문제


필자의 경우 넓은 지역에 먼 거리를 두고 노드를 배치할 필요가 없어서 이 문제가 치명적이지 않았다. 하지만 건물 안에서 멀티홉(multi-hop) 네트워크를 구성하기 위해 복도와 방을 이용해서 배치해본 결과, 벽과 코너의 구조로 인해서 신호를 받지 못하거나 신호가 미약한 상황을 만들어낼 수는 있었다. (사족: 하지만 결국은 실내 공간에서 물리적인 배치만 가지고 멀티홉 네트워크 만들기는 실패했다. 왜냐하면 어떻게든 미약한 신호가 닿을 경우 한번에 연결하려고 하지 중간 노드를 통해서 가려는 시도를 안하기 때문이다. ㅠㅠ 결국 라우팅 프로토콜에 약간의 예외처리를 해서 소프트웨어적으로 멀티홉을 구성해야 했다.)


필요에 따라 신호 세기를 조정해서 전송 범위(transmission range)를 바꿀 수 있다. 신호 세기가 세면 당연히 전송 범위가 늘어난다. 신호 세기는 아래와 같이 조정할 수 있다.

$ sudo iwconfig [네트워크_인터페이스_번호] txpower [신호세기]


신호 세기의 단위는 dBm이며, 0~20 사이의 값만 허용된다.


(iwconfig를 이용해서 신호 세기를 4dBm으로 설정한 경우)


또한 무선랜에서는 data rate가 낮을 수록 또한 전송 거리가 늘어나기도 한다. 그러나 아쉽게도 애드혹 모드에서는 data rate 설정을 변경할 수 없으니 참고하자.







반응형
블로그 이미지

Bryan_

,