'리눅스'에 해당되는 글 4건

  1. 2020.07.24 Java | OpenJDK 업데이트 및 선택 변경
  2. 2017.07.24 Hardware | Flash ROM 복구기 10
  3. 2017.06.13 Hardware | AliExpress 에서 Memory 를 구입해보자
  4. 2017.04.16 Software | apt-get broken 해결 방법

Java | OpenJDK 업데이트 및 선택 변경

|

Linux 를 사용한 서버 구축시, OS 에서 제공하는 Java 버전이 달라 불편한 경우가 많습니다.

아무래도 Open Source 이다 보니.



여러 버전의 Java 를 설치해 놓고 선택해서 사용할 수 있는 방법을 알아봅니다.




1. Java VM 선택


아마도 Java 8 버전을 많이 사용하고 있을 것 입니다.

업데이트 된 Java 9 이상을 설치하려 합니다. 아래 사이트에서 골라 설치할 수 있습니다.


* Archived OpenJDK General-Availability Releases

https://jdk.java.net/archive/



저는 Java 9 의 마지막 안정 버전과, 비교적 최근의 Java 13 의 마지막 버전을 골랐습니다.

Java 14 는 너무 최근 버전이라 사용하지 않았습니다.




2. Java VM 다운로드


위의 사이트에서 각각 Java 9 / 13 의 link 를 복사해 wget 으로 다운로드 받습니다.


$ wget https://download.java.net/java/GA/jdk9/9.0.4/binaries/openjdk-9.0.4_linux-x64_bin.tar.gz
$ wget https://download.java.net/java/GA/jdk13.0.2/d4173c853231432d94f001e99d882ca7/8/GPL/openjdk-13.0.2_linux-x64_bin.tar.gz






2. Java VM 해동 및 이동


아래 명령어로 다운로드 받은 파일을 해동합니다.


$ tar -xvf openjdk-9.0.4_linux-x64_bin.tar.gz 
$ tar -xvf openjdk-13.0.2_linux-x64_bin.tar.gz 

$ cd /usr/lib/jvm
$ sudo mv ~/jdk-* ./






3. Java VM 목록에 등록 및 선택


아래 명령어로 Java VM 목록에 등록합니다.


$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-13.0.2/bin/java 1
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-13.0.2/bin/javac 1
$ sudo update-alternatives --config java




저의 경우는 Java 9 와 Java 13 까지 등록 했습니다.

한 서버에 Java 8 / 9 / 13 이 동시에 설치되게 되었습니다.


update-alternatives --config java 에서 번호를 선택하여 결정할 수 있습니다.



java -version 하면 update-alternatives --config java 에서 선택한 버전이 VM 으로 가동하고 있는 것을 확인 할 수 있습니다.

필요에 따라 JVM 을 선택하면 되겠습니다.




FIN


And

Hardware | Flash ROM 복구기

|

1. 시작

PC 의 BIOS 를 업데이트 했습니다.

기종은 "IPMSB-H61-PEGA".


찾아보니 유통업체에서 바이오스를 공개하고 있더군요.


헤헤헷~ 하면서 다운로드 받았습니다.

뭐 항상 하던거... 하면서 실행했죠.


뭔가 잠깐 주의사항이 있었던것 같은데, 신나게 엔터를 두둘기다 보니 어느새 주의 문구는 지나가 버리고 실행이 되어버렸죠.


뜨헉!!!

부팅이 안되네요~!!!


눈 튀어나올 상황을 진성시키며... 아까의 주의사항이 뭔지를 잠깐 떠올려 봤습니다.

"용량이... " 어쩌고 했던것 같아요.


내가 뭘 실행시킨거지? 하면서 다른 컴으로 다운로드를 받은 링크를 확인해 봤습니다.



그랬습니다.

동일한 보드이지만, 하나는 8M 짜리고, 하나는 4M 짜리의 BIOS.

즉, 보드명은 같지만 용량의 차이가 있었네요.


이걸 어떻게 처음부터 아냐고...




2. 어떻게 하지?

PC가 벽돌이 된건 작년 2016년 11월 25일.

그 동안, 용산으로 가서 수리를 의뢰할까, Flash Rom 굽는 제품을 살까, 동일 보드를 살까 (아니 왜?) 등을 고민했습니다.


그렇게 시간이 흘러간 후, Arduino 를 가지고 놀다가 흠칫 생각이 떠올랐습니다.

Arduino 로 못할게 없는데, 혹시 Flash Rom 굽는게 가능할까?


검색을 하니, 여러가지 Arduino sketch 가 있네요!

이때가 올해 2017년 3월입니다.


아래는 그 여러 사례들 입니다.


* Unbricking the MSI 890FXA-GD70 after BIOS flashing failure with an Arduino

https://sinetek.io/2011/05/27/unbricking-the-msi-890fxa-gd70-after-bios-flashing-failure-with-an-arduino/


ArduinoでSPIシリアルフラッシュメモリW25Q64を使ってみる(1)

http://nuneno.cocolog-nifty.com/blog/2014/03/arduinospiw25q6.html


* SPI Flash programmer

https://github.com/nfd/spi-flash-programmer


* SPIFlash

https://github.com/Marzogh/SPIFlash


하늘이 무너져도 쏟아날 구멍은 있네요.




3. Flash Chip


우선 보드에서 BIOS 칩을 분리합니다.



사진을 찍으니 제품은 Winbond 사의 "25Q32BV" 입니다.

Datasheet 정보는 다음과 같습니다.


- w25q32bv_datasheet.pdf


Pin Configuration 은 아래와 같이 되어 있네요.


이게 제가 마주해야 할 Flash Chip 입니다.




4. Layout

Arduino 와 flash chip 의 배선 정보 입니다.


  W25Q32BV | Arduino Nano
---------------------------
    Pin 1  |     D10
    Pin 2  |     D12
    Pin 3  |     3.3V
    Pin 4  |     GND
    Pin 5  |     D11
    Pin 6  |     D13
    Pin 7  |     3.3V
    Pin 8  |     3.3V
---------------------------


동일한 칩은 아니지만,

일본 어떤 분이 winbond 사의 8M 짜리 flash chip 을 가지고 read/write 실험을 하신 분이 제작한 배선도 입니다.


- http://nuneno.cocolog-nifty.com/blog/2014/03/arduinospiw25q6.html



사양서와 동일한 Pin 배열인 것을 보니, 이 구성이 틀림이 없는것 같습니다.






5. Serprog/Arduino flasher

꽤 많은 분들이 Arduino로 flashrom 하고 있었습니다.


* Flashing a bios chip with an Arduino

https://tomvanveen.eu/flashing-bios-chip-arduino/


가장 깔끔한 방법은,

Linux 상에서 "frser-duino" 라는 어플을 이용하는것 같습니다.


* frser-duino

https://www.flashrom.org/Serprog/Arduino_flasher


위에 열거 했던 SPI Flasher 를 사용하면, read/write/erase 등이 모두 되지만,

ROM 파일을 address 0 번지부터 flashing 해주지는 못했습니다.


"소스코드를 분석하여 Windows 용 frser-duino 를 만들어 볼꺼야!" 라고 했지만,

저에게는 너무 어려웠습니다.

좀더 공부가 필요합니다.




6. Linux 머신을 만들자

Windows 용이 없으니, "frser-duino" 를 돌리기 위하여 우선 Linux 용 머신이 있어야 합니다.

PC의 여분은 없으나, 괜찮은 성능의 laptop 이 있어, Windows 10 상에서 Oracle Virtualbox 를 설치하고 Ubuntu 16.04 를 올립니다.


"frser-duino" 에서 설명된 대로 모든 패키지를 깔고 실행을 시키면,


"Reading old flash chip contents ..."


여기서 막혀 도저히 그 앞으로 진행이 되지 않습니다.


뭐가 문제일까 구글링 하다가 어느 사이트에선가 이런 문구를 보게 됩니다.

"CH340 칩을 쓴 Arduino clone 중국 제품은 buffer 에 문제가 있다..." 그래서 flashrom 을 성공시킨 사례가 없다.


그럼 정품 Arduino 를 구입해야 겠네? 정품을 구입합니다.


* Hardware | Arduino Micro 구입기

http://chocoball.tistory.com/entry/Hardware-Arduino-Micro-purchase


자 제품도 도착했고 준비가 모두 끝났으니 추가 진행을 서두릅니다.


음... make 명령을 이용하여 frser-duino 를 컴파일 하는 과정에서 뭔가 진행이 잘 되지 않습니다.

특히 Virtualbox 에서는 USB 연결시 미리 꽂아놓고 Windows 상의 설정에서 등록 후 Linux 를 띄워야 제대로 동작했죠.


그러던 중, 응? 주위를 둘러보니 MediaWiki 를 돌리는 Raspberry Pi 3 가 있네요 !!!!!!!!!

이것도 Linux 잖아! 참... 머리가 나쁘면 손발이 고생입니다.


바로 Raspberry Pi 3 의 Ubuntu Mate 에서 "frser-duino" 실행 준비를 합니다.

결과는...


성공 !!!


입니다. ㅠㅠ

그것도 그냥 Arduino Nano 의 중국 Clone 으로요.


Virtualbox 를 통한 Linux 에서는 외부 기기와의 buffer 문제가 있었던것 같습니다. 

문제의 원인은 CH340 이 아니였어요. ㅠㅠ




7. Flashrom 진행

여기서부터는 Raspberry Pi 3 에서 진행한 command 중심으로 기록을 남겨 봅니다.


먼저 필요한 package 들을 인스톨 합니다.



그 다음, frser-duino 를 git 으로 땡겨 옵니다.



USB 에 Arduino Nano clone 을 꼽습니다.

여러 site 들에서는 따로 driver 를 잡아줘야 한다고 하지만, Raspberry Pi 3 + Ubuntu Mate 에서는 자동으로 잡아줍니다.



device 로는 /dev/ttyUSB0 로 잡히는 것을 알 수 있습니다.

참고로 Arduino Micro 는 /dev/ttyACM0 로 잡힙니다.



Makefile 에서 device target 을 USB0 로 변경해 줍니다.



make 를 통하여 컴파일 및 Arduino 에 구동 프로그램을 밀어 넣어 줍니다.



필요한 ROM 파일을 다운로드 받습니다.



이제 대망의 마지막 단계인 flashrom 명령어로 Flash ROM 에 write 합니다.



위에서처럼 마지막에 "VERIFIED" 라고 뜨면 정상적으로 끝이 납니다.


아래 사진은 writing 시에 Arduino 의 RX LED 가 지속적으로 점등되는 모습입니다.

얼마나 감격스럽던지.



writing 시에 위에서 한컷.

궂이 Arduino Micro 는 필요가 없었습니다. ㅠㅠ



아쉬우니 동영상으로도 찍었습니다.





8. Commands

위에서 실시한 command 의 모음 입니다.

ROM 파일을 다운로드 하는 것은 PC 보드 기종에 따라 다르므로, 그 부분만 뺐습니다.


apt-get install flashrom gcc-avr binutils-avr gdb-avr avr-libc avrdude git

git clone --recursive git://github.com/urjaman/frser-duino

make ftdi
make flash-ftdi

flashrom -p serpgrog:dev/dev/ttyUSB0:115200 -w 2210.ROM




9. 부활한 PC 메인보드

이제부터는 승리의 기쁨인 부활한 보드 사진들 입니다.


Flash ROM 을 뽑았던 소켓입니다.



위아래를 알 수가 없어, 해당 보드를 판매했던 회사 홈피에서 이쪽 부분이 나와있는 사진을 참고 했습니다.

1번 pin 이 밑으로 가 있네요.



위의 사진 그대로 똑같이 꼽아 줍니다.



전원을 넣어 봅니다. 두둥!!!

오~~~~~ 켜졌습니다. 이때의 짜릿함을 위해 7개월을 기다렸습니다.



DEL 키를 눌러서 BIOS 진입합니다.

모두 정상으로 동작되네요. ㅠㅠ



참고로, 벽돌되기 전에 찍어 놓은 BIOS 화면이 아래 사진 입니다.

최신버전으로 구웠더니 자동으로 upgrade 가 되었습니다.



여기까지 온 김에 Windows 10 을 인스톨 해봅니다.

언제 고장났냐는 듯 잘 깔렸습니다.



CPU-Z 결과 입니다.



시스템 기본 정보 입니다.

이 화면을 봄으로써 이 작업은 종료입니다.





FIN

Arduino 생활은 즐겁습니다!

And

Hardware | AliExpress 에서 Memory 를 구입해보자

|

1. 필요하다

RAM이 필요했습니다.

그것도 딱 1GB DDR 400 PC 3200 이 4개.

이 사양은 거진 10년이 넘는 사양입니다.


공짜로 얻어걸린 PC 에 linux 를 깔고 서버 테스트를 하면 적당할 것 같아서였습니다.


뭐든지 나오는 사이트에서 검색해 보니, 개당 1만원이 넘는군요. (도둑ㄴ....)

수요는 조금씩 있지만, 생산이 안되어서 비싸지는것 같습니다.


고민하지 않고 AliExpress 를 검색해 봅니다.


오호이... 거의 6천원 무료배송에 판매하고 있습니다. (해당 제품은 판매 중단 되었으나 더 싸게 파는 입점도 있슴)

https://ko.aliexpress.com/item/New-1GB-DDR-400-PC-3200-400MHz-184PIN-Non-ECC-desktop-low-density-work-with-all/32658608038.html?isOrigTitle=true


정신을 차려보니 어느새 결제가 되어 있고, 배송중이라네요.




2. 도착

잘 포장되어서 왔습니다.



포장은 이 노란 봉투... 거의 한결같습니다.

내부 포장은 뽁뽁이로 잘 감싸져 있습니다.



메모리도 각각 플라스틱 케이스에 담겨져 왔습니다.

험하기로 유명한 알리 배송이라도 이정도면 문제 없겠네요. 받자 마자 별 5개를 투척합니다.



Kingstone 이라고 표시되어 있지만, 그런건 믿지 않기로 합니다.

도착 했으니 OS 를 깔기 전에 가혹한 메모리 테스트를 치뤄야 합니다.




3. 테스트

메모리 테스트는 닥지고 Memtest86+ 입니다.


취침 전 돌려놓고 일어나도 81%를 보이고 있습니다.

결국 100% 돌려서 확인한 결과 test 는 all pass 하였습니다.



지속적으로 가혹한 상황에서 사용한다면 어떻게 될 지 모르겠습니다만,

사용상 전혀 문제가 없을 것 같습니다.


그도 그럴 것이, DDR 400 이면 2000년도에 나온 메모리 입니다.

거의 17년 전...


카피품을 잘 만드는 중국 공장에서 17년동안 생산 했다면, 베테랑 할아버지가 되어 있을 것 같습니다.




FIN

이제 뭘하지?

And

Software | apt-get broken 해결 방법

|

1. 시작하기

apt-get 을 SSH 원격으로 실행시키고 다른 일이 바빠 놔뒀더니만 session 이 끊어졌습니다.

다시 재접속 하고 "apt-get update" 를 실행시키니 아래와 같은 내용이 뜹니다.


두둥!



apt-get 실행 중에 멈춘 문제로 lock 파일이 걸려있습니다.


그냥 lock 파일을 삭제하고 실행 process 죽이고 다시 실행을 시켜버려? 하다가,

가만... 그렇게 되면 안좋은 일이 발생할것 같은데? 라고 하고 구글신에 물어봅니다.



2. 안돼~

그렇습니다. lock 파일 삭제와 process kill 은 최후의 방법이고,

그 과정에서 바보되는 OS 가 수두룩 했습니다.


그 예의 하나인 내용을 아래에 기록해 봅니다.


https://askubuntu.com/questions/15433/unable-to-lock-the-administration-directory-var-lib-dpkg-is-another-process


You can force the lock off by removing the file,

but it's not recommended without first closing the program that's holding the lock safely,

since you could cause corruption or interrupt an installation (bad).

The command provided by João should close the program that holds the lock

and then remove the lock but won't protect you from install interruption:


sudo fuser -cuk /var/lib/dpkg/lock; sudo rm -f /var/lib/dpkg/lock


And the same command can be used for the apt cache lock:


sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock


IMPORTANT:

only do this as a last resort since it can crash your system.

First try killing any running instance of apt or aptitude as described in Faheem's answer.


그럼 어떤게 좋은 방법이야? 라고 고민하던 중,

OS 에서 자연스럽게 rebooting을 기켜보면 어떨까 하고 실행해 봅니다.


강제적으로 "rm -f lock && kill procss" 하는것 보단,

OS 가 어느정도 알아서 해줄것 같은 느낌이 들었습니다.



3. 빙고

역시 reboot 을 하니, lock 이 풀렸습니다.


바로 "apt-get update" 를 실행시키니, 정상적으로 실행된 후, 복구 command 가 표시됩니다.



dpkg --configure -a


실행시키면 복구가 진행되면서 기존 설정을 keep 하고 원복시킬 것인지, update 할 것인지 물어봅니다.

혹시 모르니 일단 keep 을 선택합니다.




4. 결론

위의 과정이 끝나면 평상시와 같이 "apt-get update && apt-get upgrade" 해주면 정상적으로 완료됩니다.

결국 apt-get 에서 lock 이 걸리면 다음과 같이 진행하면 문제가 없습니다.


1. reboot
2. apt-get update
3. dpkg --configure -a
4. keep defaults
5. apt-get update
6. apt-get upgrade
7. done

휴... 살았네.



FIN

And
prev | 1 | next