반응형

*노트북: 삼성 시리즈9 2세대 (Samsung NT900X3C-A64)

*운영체제: 윈도우 8.1 (Microsoft Windows 8.1)



삼성 시리즈9 노트북에서 최근까지 쓰던 윈도우 7을 지우고 윈도우 8을 설치해야 할 일이 생겼다. 윈도우7 이전 버전과 윈도우8은 운영체제를 설치하기 위한 바이오스(BIOS) 설정에 차이가 있다. 최근에 생산되는 삼성전자 노트북은 바이오스에서 UEFI 관련된 것과 Secure Boot 설정을 각각 다르게 해 줘야 한다.


이 글에서는 삼성 시리즈 9 (2세대) 노트북에서 바이오스 설정을 변경해서 윈도우 8 또는 윈도우 8.1을 USB로 설치하는 과정을 설명한다. 최근 삼성 노트북은 시리즈에 상관없이 동일한 바이오스를 쓰기 때문에 다른 라인업에서도 동일한 절차로 윈도우 8/8.1 설치할 수 있을 것이다.

설치는 크게 두 단계로 나뉘는데, 먼저 (1) 윈도우 8.1 USB 부팅 디스크를 만드는 것과 (2) 바이오스 설정을 하는 것이다.




<윈도우 8 또는 윈도우 8.1 USB 부팅 디스크 만들기>


이미 다른 많은 곳에서 잘 설명하고 있다. 대부분 Windows 7 USB/DVD Download Tool을 이용하는 방법을 쓴다. 그러나 가끔 ISO 파일에 따라서 이 방법이 통하지 않는 경우도 있다.

따라서 더 확실하게 Ultra ISO를 이용하는 방법을 참고하는 것이 좋겠다.


참고 링크 - http://cdmanii.com/3914




<윈도우 8 또는 윈도우 8.1 부팅을 위한 바이오스 설정>


(0) 아래의 바이오스 설정을 따라하기 전에 우선 앞 단계에서 만든 USB 부팅 디스크를 노트북에 연결해 둔다. 바이오스에서 제대로 보이는지 확인할 뿐만 아니라 바이오스 설정 변경 후 재부팅되면 바로 윈도우 8/8.1 설치로 진입하기 위함이다.


(1) 노트북을 완전히 끄고 (시스템 종료), 전원을 켠다. 전원을 누른 직후 삼성 로고가 보일 때, F2 키를 연타로 누른다. (한두 번 눌렀다고 바이오스에 진입하지 않는다. 빠른 속도로 여러번 누르고 있어야 진입된다.)



(2) Advanced - Fast BIOS Mode 항목을 Disabled 로 선택한다.



(3) Boot - Secure Boot 항목을 Disabled 로 선택한다.



(4) 하위의 OS Mode Selection 에서는 "UEFI OS" 또는 "UEFI and CSM OS" 중에서 하나를 선택한다.



(5) Boot - Boot Device Priority 에 들어가서, Boot Priority Order를 아래 그림과 같이 "USB HDD"를 SATA HDD보다 먼저 접근하도록 순서를 바꾼다. [F6]과 [F5] 키를 누르면 순서를 바꿀 수 있다.



(6) 이제 설정 변경이 끝났다. Exit 탭으로 이동해서 Save and Exit 를 선택한다. 설정을 저장할 것인지 묻는 질문에 Yes를 선택한다. 


그러면 재부팅이 되면서 USB 부팅 디스크를 먼저 인식할 것이다. 아래와 같이 삼성 로고와 함께 밑에 빙글빙글 도는 로딩 화면이 나오면 정상적으로 USB 부팅 디스크를 인식한 것이다.



잠시 기다려 보면, 아래와 같이 윈도우 8/8.1 설치 화면이 나타날 것이다.



반응형
블로그 이미지

Bryan_

,
반응형

마이크로소프트 오피스 엑셀(사실 엑셀 Excel뿐만 아니라 워드 Word, 파워포인트 PowerPoint에도 해당됨)에서 임시로 자동 저장하는 파일의 위치를 확인하는 방법은 아래와 같다.



(엑셀 2007)

왼쪽 상단의 메뉴 버튼(동그란 오피스 버튼) 누르고, "엑셀 옵션" 클릭.

대화상자에서 왼편에 "저장" 메뉴를 누르면 오른쪽에 자동 복구 파일 위치를 확인할 수 있음


(엑셀 2010 이상)

좌측 상단의 파일 버튼을 누르고, 왼쪽 하단의 "옵션" 클릭.

대화상자에서 왼편에 "저장" 메뉴를 누르면 오른쪽에 자동 복구 파일 위치를 확인할 수 있음



아래 그림은 엑셀 2010을 예제로 하였다.





반응형
블로그 이미지

Bryan_

,
반응형

VLC version: VLC media player 1.1.9

테스트한 OS: Ubuntu 11.04 (32bit), Ubuntu 12.04 (64bit)


스트리밍으로 받은 비디오의 품질을 측정하기 위해서, 받은 비디오 스트림을 그대로 YUV 형식의 파일로 저장할 필요가 생겼다. 검색해 보니 VLC media player에서 transcode를 이용해서 YUV 형식(raw 형식)의 파일을 내보낼 수 있다. 실험할 때는 굳이 비디오를 눈으로 볼 필요가 없으므로 command line mode에서 작업을 하였다.


$ cvlc [스트리밍 콘텐츠 주소] --noaudio --sout '#transcode{vcodec:I420}:std{access=file,mux=raw,dst='[저장할 yuv파일 경로와 이름]'}'


참고로 vcodec에 적힌 I420은 YUV format의 한 종류이다. I420, I422, I444 등 여러가지 종류가 있는데, 일단 가장 흔히 언급되는 I420에 대해서만 테스트를 하였다. 각 포맷에 대한 설명은 https://wiki.videolan.org/YUV/ 에서 확인할 수 있다.


예를 들어, 192.168.2.3 에서 HTTP streaming (port 8080)으로 test라는 콘텐츠를 열어 놓았고, 이를 output.yuv 파일에 저장할 경우:

$ cvlc http://192.168.2.3:8080/test --noaudio --sout '#transcode{vcodec:I420}:std{access=file,mux=raw,dst='output.yuv'}'


마찬가지로, 로컬에 있는 원본 비디오 파일에 대한 원본 YUV 생성도 같은 방법으로 가능하다. 

예를 들어, 원본 비디오 파일이 /home/usera/original.mp4 위치에 있을 경우:

$ cvlc /home/usera/original.mp4 --noaudio --sout '#transcode{vcodec:I420}:std{access=file,mux=raw,dst='output_original.yuv'}'



문제는, 스트리밍 서버에서 무한반복을 해 놓으면, 받는 쪽에서 중단하지 않으면 위의 명령은 무한정 수행되고, 엄청난 용량의 YUV 파일이 생성될 수도 있다. 스트리밍 콘텐츠의 처음부터 끝까지 재생이 완료되면 중단하고 싶은데, 이것은 어떻게 해야 하는지 모르겠다. ㅜㅜ 

현재로써는 적당한 선에서 Ctrl + C를 눌러서 중단하는 방법이 최선인 듯 하다...



반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 계열 (11.04 32bit, 12.04 64bit 에서 테스트)

무선랜카드: IPTIME N150UA (Ralink RT2870/RT3070 칩셋)



<문제의  배경>

  • Ubuntu 시스템에서 실험을 목적으로 무선랜(Wi-Fi) 디바이스 드라이버(device driver) 코드를 수정하고 재설치하기 위해 compat-wireless-3.6.8-1 의 소스코드를 수정하였다.
  • 개발의 대상이 되는 디바이스 드라이버는 Atheros 계열의 ath9k와 ath9k-htc였고, 이에 따라 compat-wireless 소스코드에서 컴파일 대상을 ath9k로 한정지었다.
    ( $ ./scripts/driver-select ath9k )
  • 저렇게 설정하고 나서 compat-wireless를 컴파일하면($ sudo make install), 원래 Ubuntu에 들어 있던 네트워크 관련 커널모듈을 전부 교체해 버리게 된다. 즉, mac80211, cfg80211과 같이 리눅스에서 무선랜 제어에 사용하는 공통 커널 모듈까지 교체된다는 얘기.
  • 문제는 컴파일 대상 디바이스가 ath9k로 한정되는 바람에 Atheros ath9k 칩셋이 아닌 다른 USB 무선랜카드 (e.g. Ralink 계열, Broadcom 계열 등)는 인식을 못하는 경우가 생긴다.



<문제 상황>

ath9k 디바이스 드라이버를 개발하기 전에 쓰던 USB 무선랜카드는 IPTIME N150UA였다. compat-wireless 개발환경을 사용하고 나서 해당 무선랜카드를 PC에 꽂으니 커널 출력 메세지(dmesg 또는 /var/log/kern.log)에서 아래와 같이 수많은 기능들을 이해할 수 없다는 에러를 뿌린다.

$ dmesg

[338283.992800] usb 1-1.1: new high-speed USB device number 11 using ehci_hcd

[338284.102160] usb 1-1.1: New USB device found, idVendor=148f, idProduct=3070

[338284.102165] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[338284.102168] usb 1-1.1: Product: 802.11 n WLAN

[338284.102171] usb 1-1.1: Manufacturer: Ralink

[338284.102173] usb 1-1.1: SerialNumber: 1.0

[338284.122269] Compat-wireless backport release: compat-wireless-v3.6.8-1

[338284.122273] Backport based on linux-stable.git v3.6.8

[338284.122274] compat.git: linux-stable.git

[338284.124318] cfg80211: Calling CRDA to update world regulatory domain

[338284.129011] rt2x00lib: disagrees about version of symbol ieee80211_register_hw

[338284.129016] rt2x00lib: Unknown symbol ieee80211_register_hw (err -22)

[338284.129022] rt2x00lib: disagrees about version of symbol ieee80211_get_hdrlen_from_skb

[338284.129024] rt2x00lib: Unknown symbol ieee80211_get_hdrlen_from_skb (err -22)

[338284.129031] rt2x00lib: disagrees about version of symbol ieee80211_wake_queue

[338284.129033] rt2x00lib: Unknown symbol ieee80211_wake_queue (err -22)

[338284.129039] rt2x00lib: disagrees about version of symbol ieee80211_get_buffered_bc

[338284.129041] rt2x00lib: Unknown symbol ieee80211_get_buffered_bc (err -22)

[338284.129048] rt2x00lib: disagrees about version of symbol wiphy_rfkill_set_hw_state

[338284.129050] rt2x00lib: Unknown symbol wiphy_rfkill_set_hw_state (err -22)

[338284.129060] rt2x00lib: disagrees about version of symbol ieee80211_queue_delayed_work

[338284.129061] rt2x00lib: Unknown symbol ieee80211_queue_delayed_work (err -22)

[338284.129065] rt2x00lib: disagrees about version of symbol wiphy_rfkill_stop_polling

[338284.129066] rt2x00lib: Unknown symbol wiphy_rfkill_stop_polling (err -22)

[338284.129069] rt2x00lib: disagrees about version of symbol ieee80211_ctstoself_get

[338284.129071] rt2x00lib: Unknown symbol ieee80211_ctstoself_get (err -22)

[338284.129081] rt2x00lib: disagrees about version of symbol ieee80211_rx

[338284.129083] rt2x00lib: Unknown symbol ieee80211_rx (err -22)

[338284.129088] rt2x00lib: disagrees about version of symbol ieee80211_iterate_active_interfaces

[338284.129090] rt2x00lib: Unknown symbol ieee80211_iterate_active_interfaces (err -22)

[338284.129093] rt2x00lib: disagrees about version of symbol ieee80211_free_txskb

[338284.129095] rt2x00lib: Unknown symbol ieee80211_free_txskb (err -22)

[338284.129102] rt2x00lib: disagrees about version of symbol ieee80211_tx_status

[338284.129104] rt2x00lib: Unknown symbol ieee80211_tx_status (err -22)

[338284.129107] rt2x00lib: disagrees about version of symbol ieee80211_stop_queue

[338284.129109] rt2x00lib: Unknown symbol ieee80211_stop_queue (err -22)

[338284.129112] rt2x00lib: disagrees about version of symbol ieee80211_stop_queues

[338284.129114] rt2x00lib: Unknown symbol ieee80211_stop_queues (err -22)

[338284.129119] rt2x00lib: disagrees about version of symbol wiphy_rfkill_start_polling

[338284.129121] rt2x00lib: Unknown symbol wiphy_rfkill_start_polling (err -22)

[338284.129124] rt2x00lib: disagrees about version of symbol ieee80211_iterate_active_interfaces_atomic

[338284.129126] rt2x00lib: Unknown symbol ieee80211_iterate_active_interfaces_atomic (err -22)

[338284.129134] rt2x00lib: disagrees about version of symbol ieee80211_channel_to_frequency

[338284.129136] rt2x00lib: Unknown symbol ieee80211_channel_to_frequency (err -22)

[338284.129139] rt2x00lib: disagrees about version of symbol ieee80211_unregister_hw

[338284.129140] rt2x00lib: Unknown symbol ieee80211_unregister_hw (err -22)

[338284.129146] rt2x00lib: disagrees about version of symbol ieee80211_beacon_get_tim

[338284.129148] rt2x00lib: Unknown symbol ieee80211_beacon_get_tim (err -22)

[338284.129150] rt2x00lib: disagrees about version of symbol ieee80211_rts_get

[338284.129152] rt2x00lib: Unknown symbol ieee80211_rts_get (err -22)

[338284.129159] rt2x00lib: disagrees about version of symbol ieee80211_queue_work

[338284.129161] rt2x00lib: Unknown symbol ieee80211_queue_work (err -22)

[338284.130166] cfg80211: World regulatory domain updated:

[338284.130170] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)

[338284.130173] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

[338284.130175] cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)

[338284.130177] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)

[338284.130179] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

[338284.130180] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

$


USB 연결에는 이상이 없는지 확인해 보니 USB 장치 수준에서는 제대로 인식을 하고 있다.

$ lsusb

Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 012: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter

$




<해결 방법>

원인이 명확하게 Compat-wireless 개발환경이기 때문에 해결 방법은 간단하다.

Ralink 계열도 이해할 수 있도록 ath9k 뿐만 아니라 다른 모든 칩셋의 소스코드를 다 컴파일하면 된다. 그러면 다른 칩셋 계열의 기능을 이해할 수 있는 mac80211, cfg80211 커널 모듈이 새로 생성되고, 이들이 자동으로 시스템의 /lib/modules/ 에 복사된다.


  (먼저 compat-wireless 개발환경의 최상위 디렉토리로 이동한다.)

$ ./scripts/driver-select restore    <-- 소스코드 전체를 컴파일하도록 기본 설정으로 되돌림

$ sudo make install

  (모든 칩셋을 다 컴파일하기 때문에 성능이 안좋은 PC에서는 꽤 긴 시간이 걸린다.)


$ sudo make wlunload      <-- 기존에 로드된 무선네트워크 관련 모듈을 unload 시킨다.


위와 같이 하고 나서 USB 디바이스 드라이버에 해당하는 모듈을 sudo modprobe를 이용해서 load한다. (예: $ sudo modprobe rt2800usb) 콘솔 화면에서 무슨 모듈이 unload되었는지 확인하고 그것들을 다시 load하면 되는데, 무엇을 load해야 할 지 잘 모르는 경우가 있을 수도 있다. 

그럴 때는 USB 무선랜카드를 뽑았다가 다시 PC에 꽂으면 된다또는 깔끔하게 재부팅하는 것도 좋은 방법이다.





반응형
블로그 이미지

Bryan_

,
반응형

OS: Ubuntu 계열 (11.04부터 12.04까지 테스트)



자바(Java)로 서버 소켓을 열고 자기 자신의 IP주소를 다른 연결된 기기에 알려 주는 간단한 프로그램을 짰는데, 이상하게 IP주소가 실제 장비의 IP주소와 다르게 나왔다.

예를 들면, ifconfig 명령을 통해서 나오는 네트워크 인터페이스 주소 192.168.1.6인데, 자바 프로그램에서는 전혀 엉뚱한 192.168.1.17로 인식되는 문제였다. SSH, ping을 비롯한 실제 네트워크 연결은 모두 192.168.1.6으로 정상적으로 수행되는데, 이상하게 Java 코드에서 IP주소를 얻어오는 명령에서는 다른 IP주소를 보게 되는 것이다.



네트워크 설정에 따라서 여러가지 원인이 있을 수 있겠지만, 가장 간단한 원인으로는 /etc/hosts 파일에 IP주소가 잘못 적혀 있는 경우가 있다. 필자의 경우에도 예전에 쓰던 리눅스 머신을 다른 네트워크에 연결시키면서 유동IP를 통해서 새로운 IP주소를 부여받았지만, /etc/hosts 파일에는 예전에 이동하기 전의 IP주소가 기록되어 있는 것을 발견했다.


아래와 같이 /etc/hosts 파일에서 리눅스 머신 이름에 매핑되어 있는 IP주소를 올바른 IP주소로 변경하거나, 아예 해당 라인을 삭제함으로써 해결할 수 있다. 그러나 해당 라인을 아예 삭제할 경우, 상황에 따라 네트워크에 연결하는 특정 프로그램이 작동하지 않을 수도 있으므로 삭제하기 전에 확인이 필요하다.


127.0.0.1  localhost

192.168.1.6  usera-Linux    # IP주소를 올바르게 맞추거나, 해당 라인 삭제




반응형
블로그 이미지

Bryan_

,