블로그 이미지
훅크선장

카테고리

분류 전체보기 (360)
사진이야기 (23)
펭귄컴퓨팅 (120)
컴퓨터보안 (83)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2017.11
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

공지사항

태그목록

최근에 올라온 글

2017년 11월 21일에 릴리즈된, 칼리 리눅스의 롤링 버전 2017.3 의 한글화에 성공하였습니다.


현재 X윈도우 매니저를 세가지 종류(XFCE, GNOME, LXDE)를 시작으로해서, 다른 것들로 차례로 빌드하고 있습니다. 자주 사용되지 않는다고 생각되는 e17, i3wm와 같은 윈도우 매니저는 굳이 한글화하지 않을 예정입니다.


※ 세벌식 자판을 쓰시는 분들은 메뉴바에서 나비 아이콘을 클릭하고, 자판을 변경하시면 됩니다.

그놈 버전은 화면 왼쪽 하단의 얇은 검정색 조그만 막대에 마우스를 가져가면, 꺽쇠 아이콘이 나타납니다. 그 아이콘을 클릭하시면, 나비 아이콘이 나옵니다.


배포방식은 이전과 동일하게, FTP 하나 입니다. FTP 패스워드만 퀴즈로 풀면 됩니다.


32비트 파일명(UTF-8, GNOME)은 

kali-linux-rolling-2017.3-jungdowha-i386-ko-utf8-gnome.iso 입니다.

SHA-160     : 17d50186e8dccfe2930871a8bbf79d9cbf26e7f4

MD5         :  469bf65d63747f726769b1e27f5d84db


32비트 파일명(UTF-8, XFCE)은 

kali-linux-rolling-2017.3-jungdowha-i386-ko-utf8-xfce.iso 입니다.

SHA-160     : 5a5d4ad4ee656744e22c565b04e5a432986caf7f

MD5         :  a233c9eae8dc62d3184c80ad11eb1218


32비트 파일명(UTF-8, LXDE)은 

kali-linux-rolling-2017.3-jungdowha-i386-ko-utf8-lxde.iso 입니다.

SHA-160     : 28e0725f96a14b6712b86af2ac5ed44634912135

MD5         :  325cfc0e64e9c5ca7b69cd50db93d6a2


32비트 파일명(UTF-8, MATE)은 

kali-linux-rolling-2017.3-jungdowha-i386-ko-utf8-mate.iso 입니다.

SHA-160     : 19c1149f02815a6d383c5761353a9b649c922bd6

MD5         :  7980785422e6e9a1939acf27e4cf898e


32비트 파일명(UTF-8, KDE)은 

kali-linux-rolling-2017.3-jungdowha-i386-ko-utf8-kde.iso 입니다.

SHA-160     : c47d648ecb6a0ac4e430dab2d3d19324d593bd85

MD5         :  528ece1552bce3c105956cdb32d4a075



다른 버전들도 있으니, 한꺼번에 받지 마시고, 필요한 것만 받아가시기 바랍니다.


FTP 서버: hook7346.ignorelist.com

FTP 포트: 21번

FTP 계정: kali2ko

FTP 패스워드는 퀴즈입니다. => 영문자판상태에서 한글로 치시면 됩니다.

1) 패스워드는 한글 4글자와 특수문자 1개로 구성되어 있습니다.

2) 패스워드의 첫 두 글자는 우리나라 문자 이름입니다. 이미 1) 문장에서 나온 단어입니다.

3) 패스워드의 세번째와 네번째 두 글자는 3.1절에 외치던 문장에 있는 두 글자입니다.

“대한 독립 OO”에서 OO에 들어가는 단어입니다.

4) 마지막에 들어가는 특수문자는 3)의 단어뒤에 자주 붙는 특수문자입니다. 느낌이 오시나요? (이거 자주 헷갈리시는데, 쩜은 아닙니다. 느낌입니다.)


다시한번 말씀드리지만, 영문자판상태에서 한글로 치시면 됩니다.

한글 4글자와 특수문자 1개로 구성되어 있습니다.(영문자로는 총 12글자입니다.)


퀴즈가 안풀리시는 분은  아래 그림 화면에서 터미널창에 입력된 명령어를 주목하시면 됩니다.

--------------------------------------------------------------------------------------------------------------


# GNOME 데스크탑 화면


# XFCE 데스크탑 화면


# LXDE 데스크탑 화면



# MATE 데스크탑 화면


# KDE 데스크탑 화면

한글입력기가 fcitx 입니다만, 한영변환 키는 "한/영 변환 키” 또는 Shift+Space로 설정하였습니다.

(원래 fcitx 입력기의 디폴트 한영변환 키는 Ctrl+Space 입니다만, 다른 한글판들과 일관성을 위해서 설정을 바꾼 것입니다.)




Posted by 훅크선장
, |

2017년 11월 21일에 릴리즈된, 칼리 리눅스의 롤링 버전 2017.3 의 한글화에 성공하였습니다.


현재 X윈도우 매니저를 세가지 종류(XFCE, GNOME, LXDE)를 시작으로해서, 다른 것들로 차례로 빌드하고 있습니다. 자주 사용되지 않는다고 생각되는 e17, i3wm와 같은 윈도우 매니저는 굳이 한글화하지 않을 예정입니다.


※ 32bit 버전들도 64bit 버전들이 끝나면, 바로 빌드할 예정입니다. 여기 제 블로그의 다른 포스팅에서 찾을 수 있을 것입니다.


※ 세벌식 자판을 쓰시는 분들은 메뉴바에서 나비 아이콘을 클릭하고, 자판을 변경하시면 됩니다.

그놈 버전은 화면 왼쪽 하단의 얇은 검정색 조그만 막대에 마우스를 가져가면, 꺽쇠 아이콘이 나타납니다. 그 아이콘을 클릭하시면, 나비 아이콘이 나옵니다.


배포방식은 이전과 동일하게, FTP 하나 입니다. FTP 패스워드만 퀴즈로 풀면 됩니다.


64비트 파일명(UTF-8, GNOME)은 

kali-linux-rolling-2017.3-jungdowha-amd64-ko-utf8-gnome.iso 입니다.

SHA-160     : 7a8cb0d4898083451cb8df59d178ee199675a52b

MD5         :  959bc6a0c5109d4c316efc8950cb1818


64비트 파일명(UTF-8, XFCE)은 

kali-linux-rolling-2017.3-jungdowha-amd64-ko-utf8-xfce.iso 입니다.

SHA-160     : 18d4a7142d38c7b5d9df1dbaa672608aff94b9e5

MD5         :  bcfb69341a714481fc07283d47c354a2


64비트 파일명(UTF-8, LXDE)은 

kali-linux-rolling-2017.3-jungdowha-amd64-ko-utf8-lxde.iso 입니다.

SHA-160     : 6df5fb87cded9ca5d96fbdb24546ff923435e461

MD5         :  5dd179c6d0191c029d3c86eba19beb0b


64비트 파일명(UTF-8, MATE)은 

kali-linux-rolling-2017.3-jungdowha-amd64-ko-utf8-mate.iso 입니다.

SHA-160     : 1ceea2f53ddce918a3a1f78efae20fd8f521116e

MD5         :  57df767bc47421aedc90fa082464959c


64비트 파일명(UTF-8, KDE)은 

kali-linux-rolling-2017.3-jungdowha-amd64-ko-utf8-kde.iso 입니다.

SHA-160     : fb5d80e19d08c9d38015e1fdd8e31ea15ffc9776

MD5         :  04d666690a5d34232116f9fab04b8f31


다른 버전들도 있으니, 한꺼번에 받지 마시고, 필요한 것만 받아가시기 바랍니다.


FTP 서버: hook7346.ignorelist.com

FTP 포트: 21번

FTP 계정: kali2ko

FTP 패스워드는 퀴즈입니다. => 영문자판상태에서 한글로 치시면 됩니다.

1) 패스워드는 한글 4글자와 특수문자 1개로 구성되어 있습니다.

2) 패스워드의 첫 두 글자는 우리나라 문자 이름입니다. 이미 1) 문장에서 나온 단어입니다.

3) 패스워드의 세번째와 네번째 두 글자는 3.1절에 외치던 문장에 있는 두 글자입니다.

“대한 독립 OO”에서 OO에 들어가는 단어입니다.

4) 마지막에 들어가는 특수문자는 3)의 단어뒤에 자주 붙는 특수문자입니다. 느낌이 오시나요? (이거 자주 헷갈리시는데, 쩜은 아닙니다. 느낌입니다.)


다시한번 말씀드리지만, 영문자판상태에서 한글로 치시면 됩니다.

한글 4글자와 특수문자 1개로 구성되어 있습니다.(영문자로는 총 12글자입니다.)


퀴즈가 안풀리시는 분은  아래 그림 화면에서 터미널창에 입력된 명령어를 주목하시면 됩니다.

--------------------------------------------------------------------------------------------------------------


# GNOME 데스크탑 화면


# XFCE 데스크탑 화면


# LXDE 데스크탑 화면



# MATE 데스크탑 화면


# KDE 데스크탑 화면

한글입력기가 fcitx 입니다만, 한영변환 키는 기존 “한/영 변환 키”와 Shift+Space로 설정하였습니다.

(원래 fcitx 입력기의 디폴트 한영변환 키 조합은 Ctrl+Space 입니다만, 다른 한글판들과 일관성을 위해서 설정을 바꾼 것입니다.)


Posted by 훅크선장
, |

https://wiki.openwrt.org/toh/tp-link/tl-wr841nd 

에서TFTP install/recovery via serial” 부분을 열심히 따라서 한 것입니다. 특별하게 다른 내용은 없지만, 한국에서 가장 많이 팔린? v11을 대상으로 한, 한글로 쓰여진 복구 매뉴얼로 생각하시면 됩니다.



OpenWRT 팀에서는 시리얼 포트를 이용한 복구보다는 tftp 기능을 이용한 복구를 권장하고 있는데, 일단 제 경우에는 펌웨어 업데이트중에 메모리 쓰기 에러가 발생해서, 단순 tftp 기능 복구는 실패하였습니다. 일단 먼저 tftp 기능 복구를 설명드리겠습니다. (제 경우는 실패하였지만...!!)



기존에 OpenWRT를 설치한 공유기에 경우에는,

1) Luci 웹 인터페이스에서 “system" 메뉴의 "Backup / Flash Firmware" 페이지에서 "Flash new Firmware image" 기능을 이용하거나,

2) SSH 로 공유기에 접근해서,

# cd /tmp

# wget https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr841-v11-squashfs-sysupgrade.bin

로 펌웨어를 인터넷에서 다운로드 받은 뒤,

# sysupgrade openwrt-ar71xx-generic-tl-wr841-v11-squashfs-sysupgrade.bin

명령으로 업그레이드가 가능합니다. 


제 경우는 위 2)번 방식 도중에 메모리 쓰기 에러가 난 후에, 계속 공유기가 재부팅을 반복하는 상황이었습니다.


이런 상황을 흔히 벽돌 (Brick) 상태라고 합니다.


첫번째로 시도해볼 방법은 tftp 기능을 이용한 복구입니다. 이 기능은 TP-Link 계열 공유기들이 거의 가지고 있는 것으로, 공유기가 failsafe 모드로 부팅하는 순간에 몇 초정도 tftp 클라이언트 기능을 동작시키고 복구용 펌웨어 다운로드를 찾으면서 대기하는 기능입니다.


1. 사용자 PC의 유선랜 네트워크 설정을 다음과 같이 합니다.

    IP Address : 192.168.0. 66

    Netmask : 255.255.255.0

    Gateway : 192.168.0.86

2. TFTPD 프로그램을 설치합니다. (이건 인터넷 검색하셔서, 설치하면 됩니다.)

     http://blog.pages.kr/486


3. TFTPD 데몬의 루트 디렉토리에 펌웨어 파일을 위치 시킵니다. 단, 펌웨어 파일명을 정확히 바꿔줘야 합니다.

    https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-tl-wr841-v11-squashfs-factory.bin  라는 파일을 가져와서, 파일명을 꼭 정확히 wr841nv11_tp_recovery.bin 으로 바꾸어 줍니다.


4. 공유기의 LAN  포트중 하나에 랜선을 이용하여, PC와 연결합니다.


5. 공유기의 뒷면의 RESET 버튼을 누른 상태로, 공유기의 전원을 켭니다. 

    공유기가 리부팅될때까지 RESET 버튼을 누르고 있습니다. (공유기의 모든 LED가 꺼지고, 전원 LED만 다시 켜지는 상황)


6. 사용자 PC의 유선랜 네트워크를 DHCP로 변경하고, 192.168.1.x 네트워크에 가입된 것을 확인하고, http://192.168.1.1 로 접속해봅니다.



그러나, 제 경우에는 위 tftp 방식으로 실패했습니다. 

나중에 Serial 연결을 한 상태에서 보니, 펌웨어의 압축해제에서 계속 에러가 발생하는 것을 확인하였습니다. 

U-Boot 1.1.4 (Dec  1 2015 - 12:04:56)


ap143-2.0 - Honey Bee 2.0


DRAM:  32 MB

Flash Manuf Id 0xc8, DeviceId0 0x40, DeviceId1 0x16

flash size 4MB, sector count = 64

Flash:  4 MB

Using default environment


In:    serial

Out:   serial

Err:   serial

Net:   ath_gmac_enet_initialize...

ath_gmac_enet_initialize: reset mask:c02200 

Scorpion ---->S27 PHY*

S27 reg init

: cfg1 0x800c0000 cfg2 0x7114

eth0: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 4 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4 :10

eth0 up

Honey Bee ---->  MAC 1 S27 PHY *

S27 reg init

ATHRS27: resetting s27

ATHRS27: s27 reset done

: cfg1 0x800c0000 cfg2 0x7214

eth1: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 0 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0 :10

athrs27_phy_setup ATHR_PHY_CONTROL 1 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1 :10

athrs27_phy_setup ATHR_PHY_CONTROL 2 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2 :10

athrs27_phy_setup ATHR_PHY_CONTROL 3 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3 :10

eth1 up

eth0, eth1

Setting 0x181162c0 to 0x5cb9a100

is_auto_upload_firmware=0

Autobooting in 1 seconds

## Booting image at 9f020000 ...

   Uncompressing Kernel Image ... ERROR: LzmaDecode.c, 543


Decoding error = 1

LZMA ERROR 1 - must RESET board to recoverˇ



그래서, 결국 Serial 포트를 이용한 벽돌상태에서 복구하기 (De-Brick)를 했습니다.


Serial 포트는 메인보드 상에 존재하기 때문에, 공유기의 분해 및 납땜이 필요합니다. 공유기 분해까지는 보통 사람들에게 어렵지 않지만, 문제는 메인보드상에 연결용 커넥터를 추가하는 납땜을 위해 납땜용 도구들이 필요하고, 게다가 컴퓨터와 Serial 포트를 연결하려면, 전용 USB to UART 연결보드(3.3v 용)가 필요합니다.  

주의하실 점이 UART 연결보드를 반드시 3.3v 용(아니면 겸용을 사서 3.3v 모드로)으로 써야합니다. 5v 용을 사서 쓰다가 큰 낭패(보드 칩 타 버림)를 볼 수 있습니다.


제 경우에는 아두이노 보드 연결용 UART 보드가 3.3v/5v 겸용이 있어서, 그것을 전원 선택 LED 표시가 되도록 개조해서 쓰고 있습니다.


그러면, 차례로 설명해 보겠습니다.


1) 공유기 분해


공유기 뒷면에서 안테나가 있는 쪽, 동그만 검정 고무 2개를 제거합니다. (헤어드라이어 열풍으로 살짝 가열하고 떼면 잘 떼어집니다.)

아래와 같이 나사가 두 개 나옵니다. 두 나사를 풀어줍니다.



그리고, 윗 부분과 아래 부분을 분리하면 됩니다. (모서리를 눌러서 틈이 벌어지면, 위 아래를 각각 힘으로 분리하면 됩니다.)



2) 메인보드상의 저항 제거 및 핀 경로 연결


아래 그림은 https://abload.de/img/841v12-board-serialumurl.jpg 에서 가져온 것입니다.


원래 R26 자리에 아주 작은 저항 한 개가 붙어 있고, R23에는 아무 것도 없습니다. 제조사가 사용하는 일종의 안전장치입니다. R26을 제거해서 단선시키고, R23을 연결해야만 Serial 접속이 가능합니다.

R26의 아주 작은 저항은 납땜기로 가열해서 제거할 수도 있는데, 과열에 의한 보드 손상이 있을 수 있으므로, 작은 니퍼를 이용해서 먼저 저항을 깬 다음, 납땜기로 나머지 남은 부분을 제거하는 것이 낫습니다.

R23의 연결은 저항을 쓸 수 있지만, 너무 작은 저항을 구하는 것도 납땜하는 것도 어렵기 때문에, 저는 전선의 코어 한 가닥을 길게 핀셋으로 잡고 납땜한 다음, 나머지 부분을 니퍼로 제거하는 방법을 썼습니다.

아래 그림을 자세히 보시면, R26은 단선되고, R23은 바로 연결된 것을 보실 수 있습니다. 반드시 테스터를 사용하여 단선과 연결을 확인하기 바랍니다. 육안으로는 잘 구분하기 어렵습니다. 실제로 작업에는 확대경이 필수입니다.

이 과정만 보더라도, 장비가 없는 사람에게 복구는 그림의 떡입니다.   




3) 공유기 메인보드에 연결용 커넥터 납땜


https://www.devicemart.co.kr/1313372

Female to Female 점퍼와이어와 

https://www.devicemart.co.kr/35988

12mm 기본 핀 헤더가 있는 것이 좋습니다. 보드에 선을 그냥 납땜할 수도 있습니다만, 핀헤더와 연결 커넥터를 사용하는 것을 권장합니다. (실수를 줄이고, 깔끔하거든요~!)


아래와 같이, 4개 핀 헤더를 보드에 납땜하면 됩니다. 





4) USB to UART 설치 및 Serial 과 연결


제 경우에는 다음 그림에 있는 큰 형태의 USB to UART(5v / 3.3v 겸용 제품)를 사용했습니다.



https://www.devicemart.co.kr/1290042

FTDI사 FT232RL 칩셋을 사용하는 범용을 사서 쓰는 것이 좋습니다. 5V와 3.3V 를 점퍼선으로 변환해서 사용할 수 있어서 좋습니다.

FTDI 사의 드라이버는 여기서 받아서 쓸 수 있습니다.

http://www.ftdichip.com/Drivers/VCP.htm


USB to UART 보드와 메인보드 핀 헤더를 연결하는 방법은 단지 세 개만 연결하면 됩니다. 절대로 Vcc 선을 연결하지 마시기 바랍니다. (공유기 메인보드 칩 아니면, UART 보드의 칩이 타버릴 수 있습니다.)

연결한 선은 다음과 같이 합니다. (점퍼선 연결이 편리합니다~!)

USB to UART 보드    <<----------------->>   공유기 메인보드 핀헤더 

                      Vcc           xx 연결 안함 xx           Vcc

                     GND       <----------------->     GND

                      TX         <----------------->      RX

                      RX         <----------------->      TX



5) PC에서 터미널 에뮬레이터로 Serial 연결 

    가장 일반적인 터미널 에뮬레이터는 Putty 입니다. 

    Putty 에서 USB to UART 보드의 COM 포트 번호를 지정하고, Speed는 115200로 설정하면 됩니다.


Putty 설치와 사용에 대해서는 인터넷 검색하시면, 다음과 같은 참고 페이지들이 많이 나올겁니다.

http://zelkun.tistory.com/entry/009-Arduino-%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8-PuTTY-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%8B%9C%EB%A6%AC%EC%96%BC-%ED%86%B5%EC%8B%A0



6) 공유기 부팅해서, 상태 확인하기

모든 것이 다 정상이라면, 공유기의 전원을 켰을 때,  PC의 터미널 에뮬레이터 화면에는 다음과 같은 메시지가 출력될 것입니다. (앞 부분 글자가 조금 잘리는 경우도 많습니다. 정상적인 텍스트 출력이 중요합니다.)


U-Boot 1.1.4 (Dec  1 2015 - 12:04:56)


ap143-2.0 - Honey Bee 2.0


DRAM:  32 MB

Flash Manuf Id 0xc8, DeviceId0 0x40, DeviceId1 0x16

flash size 4MB, sector count = 64

Flash:  4 MB

Using default environment


In:    serial

Out:   serial

Err:   serial

Net:   ath_gmac_enet_initialize...

ath_gmac_enet_initialize: reset mask:c02200 

Scorpion ---->S27 PHY*

S27 reg init

: cfg1 0x800c0000 cfg2 0x7114

eth0: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 4 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4 :10

eth0 up

Honey Bee ---->  MAC 1 S27 PHY *

S27 reg init

ATHRS27: resetting s27

ATHRS27: s27 reset done

: cfg1 0x800c0000 cfg2 0x7214

eth1: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 0 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0 :10

athrs27_phy_setup ATHR_PHY_CONTROL 1 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1 :10

athrs27_phy_setup ATHR_PHY_CONTROL 2 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2 :10

athrs27_phy_setup ATHR_PHY_CONTROL 3 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3 :10

eth1 up

eth0, eth1

Setting 0x181162c0 to 0x5cb9a100

is_auto_upload_firmware=0

Autobooting in 1 seconds

## Booting image at 9f020000 ...

   Uncompressing Kernel Image ... ERROR: LzmaDecode.c, 543


Decoding error = 1

LZMA ERROR 1 - must RESET board to recoverˇ


만약, 위와 같은 메시지가 나오지 않는다면, 앞에서 과정을 다시 확인하시기 바랍니다.



7) Serial 연결상태에서 펌웨어 다운받고, 업데이트하기


먼저 tftp 복구 환경을 앞에서와 같이 설정 합니다.

그 다음, 공유기를 켭니다. 공유기에서 Autobooting in 1 seconds 메시지가 보이자마자, tpl 이라고 영문 세글자를 입력 합니다.

그러면, 쉘 명령어 상태가 됩니다.  ap143-2.0> 라는 프롬프트가 뜰 것입니다.


ap143-2.0> printenv

명령어로 현재 상태를 확인하고,


ap143-2.0> setenv ipaddr 192.168.0.86

ap143-2.0> setenv serverip 192.168.0.66


을 설정한 다음, (tftp 서비스 설정할때의 값을 사용하는데, 여기 IP 주소들은 공유기 입장에서 사용하는 것입니다.)


ap143-2.0> tftpboot 0x80000000 wr841nv11_tp_recovery.bin


로 펌웨어를 다운로드 받습니다.


enet0 port4 up

Using eth0 device

TFTP from server 192.168.0.66; our IP address is 192.168.0.86

Filename 'wr841nv11_tp_recovery.bin'.

Load address: 0x80000000

Loading: *.#################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. ######################################################

done

Bytes transferred = 3932160 (3c0000 hex)


와 같이 정상적으로 펌웨어가 tftp로 전송 완료되었으면, (전송완료된 데이터의 hex 길이는 반드시 기억해줘야 합니다. 명령어에서 계속 사용하는 값이 됩니다. 절대로 틀리면 안되는 값입니다.)


ap143-2.0> printenv bootcmdbootcmd=bootm 0x9f020000

ap143-2.0> erase 0x9f020000 +0x3c0000


부팅 파라미터를 설정하고, 펌웨어가 들어갈 메모리 영역을 먼저 지워줍니다.


Erasing flash... 

First 0x2 last 0x3d sector size 0x10000

....   2....   3....   4....   5....   6....   7....   8....   9....  10....  11....  12....  13....  14....  15....  16....  17....  18....  19....  20....  21....  22....  23....  24....  25....  26....  27....  28....  29....  30....  31....  32....  33....  34....  35....  36....  37....  38....  39....  40....  41....  42....  43....  44....  45....  46....  47....  48....  49....  50....  51....  52....  53....  54....  55....  56....  57....  58....  59....  60....  61

Erased 60 sectors


메모리가 정상적으로 지워지면, 펌웨어를 메모리 영역에 덮어씁니다.


ap143-2.0> cp.b 0x80000000 0x9f020000 0x3c0000


Copy to Flash... write addr: 9f020000

done


모든 것이 완료되었으면, 공유기를 재부팅합니다.


ap143-2.0> reset


그러면, 정상적으로 부팅되는 로그를 보실 수 있습니다. 

http://192.168.1.1 로 접속해서, 공유기를 설정하면 됩니다.



-----------------------------------------------------------------------------------------------


※ 전체과정 화면 캡쳐 (참고용)

tftp 상황에서 retry 과정이 여러번 있었습니다. 한번에 성공하지 못하더라도 tftp 환경만 정상적이면, 공유기를 재부팅해서 계속 시도할 수 있습니다. 


 U-Boot 1.1.4 (Dec  1 2015 - 12:04:56)


ap143-2.0 - Honey Bee 2.0


DRAM:  32 MB

Flash Manuf Id 0xc8, DeviceId0 0x40, DeviceId1 0x16

flash size 4MB, sector count = 64

Flash:  4 MB

Using default environment


In:    serial

Out:   serial

Err:   serial

Net:   ath_gmac_enet_initialize...

ath_gmac_enet_initialize: reset mask:c02200 

Scorpion ---->S27 PHY*

S27 reg init

: cfg1 0x800c0000 cfg2 0x7114

eth0: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 4 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4 :10

eth0 up

Honey Bee ---->  MAC 1 S27 PHY *

S27 reg init

ATHRS27: resetting s27

ATHRS27: s27 reset done

: cfg1 0x800c0000 cfg2 0x7214

eth1: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 0 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0 :10

athrs27_phy_setup ATHR_PHY_CONTROL 1 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1 :10

athrs27_phy_setup ATHR_PHY_CONTROL 2 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2 :10

athrs27_phy_setup ATHR_PHY_CONTROL 3 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3 :10

eth1 up

eth0, eth1

Setting 0x181162c0 to 0x5cb9a100

is_auto_upload_firmware=0

Autobooting in 1 seconds

ap143-2.0> ap143-2.0> ap143-2.0> ap143-2.0> setenv ipaddr ROUTERIPap143-2.0> setenv serverip SERVERIPap143-2.0> printenvbootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init mtdparts=ath-nor0:32k(u-boot1),32k(u-boot2),3008k(rootfs),896k(uImage),64k(mib0),64k(ART)

bootcmd=bootm 0x9f020000

bootdelay=1

baudrate=115200

ethaddr=0xba:0xbe:0xfa:0xce:0x08:0x41

dir=

lu=tftp 0x80060000 ${dir}tuboot.bin&&erase 0x9f000000 +$filesize&&cp.b $fileaddr 0x9f000000 $filesize

lf=tftp 0x80060000 ${dir}ap143-2.0${bc}-jffs2&&erase 0x9f010000 +$filesize&&cp.b $fileaddr 0x9f010000 $filesize

lk=tftp 0x80060000 ${dir}vmlinux${bc}.lzma.uImage&&erase 0x9f300000 +$filesize&&cp.b $fileaddr 0x9f300000 $filesize

stdin=serial

stdout=serial

stderr=serial

ethact=eth0

ipaddr=ROUTERIP

serverip=SERVERIP


Environment size: 677/65532 bytes

ap143-2.0> ser. .tUsage:

setenv  - set environment variables


ap143-2.0> setenv ipd. .addr 192.168.1.. .. .0.86ap143-2.0> setenv serverip 192.168.0.66ap143-2.0> printenvbootargs=console=ttyS0,115200 root=31:02 rootfstype=jffs2 init=/sbin/init mtdparts=ath-nor0:32k(u-boot1),32k(u-boot2),3008k(rootfs),896k(uImage),64k(mib0),64k(ART)

bootcmd=bootm 0x9f020000

bootdelay=1

baudrate=115200

ethaddr=0xba:0xbe:0xfa:0xce:0x08:0x41

dir=

lu=tftp 0x80060000 ${dir}tuboot.bin&&erase 0x9f000000 +$filesize&&cp.b $fileaddr 0x9f000000 $filesize

lf=tftp 0x80060000 ${dir}ap143-2.0${bc}-jffs2&&erase 0x9f010000 +$filesize&&cp.b $fileaddr 0x9f010000 $filesize

lk=tftp 0x80060000 ${dir}vmlinux${bc}.lzma.uImage&&erase 0x9f300000 +$filesize&&cp.b $fileaddr 0x9f300000 $filesize

stdin=serial

stdout=serial

stderr=serial

ethact=eth0

ipaddr=192.168.0.86

serverip=192.168.0.66


Environment size: 685/65532 bytes

ap143-2.0> tftpboot 0x80000000 o. .wr841nv11_tp_recovery.bineth1 link down

enet0 port4 up

dup 1 speed 100

Using eth0 device

TFTP from server 192.168.0.66; our IP address is 192.168.0.86

Filename 'wr841nv11_tp_recovery.bin'.

Load address: 0x80000000

Loading: *.T T T 

Retry count exceeded; starting again

eth1 link down

Using eth0 device

TFTP from server 192.168.0.66; our IP address is 192.168.0.86

Filename 'wr841nv11_tp_recovery.bin'.

Load address: 0x80000000

Loading: *.T T T 

Retry count exceeded; starting again

enet1 port3 up

dup 1 speed 1000

Using eth1 device

TFTP from server 192.168.0.66; our IP address is 192.168.0.86

Filename 'wr841nv11_tp_recovery.bin'.

Load address: 0x80000000

Loading: *.T T T 

Retry count exceeded; starting again

enet0 port4 down

eth0 link down

Using eth1 device

TFTP from server 192.168.0.66; our IP address is 192.168.0.86

Filename 'wr841nv11_tp_recovery.bin'.

Load address: 0x80000000

Loading: *.T T T 

Retry count exceeded; starting again

enet0 port4 up

Using eth0 device

TFTP from server 192.168.0.66; our IP address is 192.168.0.86

Filename 'wr841nv11_tp_recovery.bin'.

Load address: 0x80000000

Loading: *.#################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. #################################################################

. ######################################################

done

Bytes transferred = 3932160 (3c0000 hex)

ap143-2.0> printenv bootcmdbootcmd=bootm 0x9f020000

ap143-2.0> erase 0x9f020000 +0x3c0000Erasing flash... 

First 0x2 last 0x3d sector size 0x10000

....   2....   3....   4....   5....   6....   7....   8....   9....  10....  11....  12....  13....  14....  15....  16....  17....  18....  19....  20....  21....  22....  23....  24....  25....  26....  27....  28....  29....  30....  31....  32....  33....  34....  35....  36....  37....  38....  39....  40....  41....  42....  43....  44....  45....  46....  47....  48....  49....  50....  51....  52....  53....  54....  55....  56....  57....  58....  59....  60....  61

Erased 60 sectors

ap143-2.0> cp.b 0x80000000 0x9f020000 0x3c0000Copy to Flash... write addr: 9f020000

done

ap143-2.0> reset



<----- 재부팅되고서....------->



vironment


In:    serial

Out:   serial

Err:   serial

Net:   ath_gmac_enet_initialize...

ath_gmac_enet_initialize: reset mask:c02200 

Scorpion ---->S27 PHY*

S27 reg init

: cfg1 0x800c0000 cfg2 0x7114

eth0: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 4 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 4 :10

eth0 up

Honey Bee ---->  MAC 1 S27 PHY *

S27 reg init

ATHRS27: resetting s27

ATHRS27: s27 reset done

: cfg1 0x800c0000 cfg2 0x7214

eth1: ba:be:fa:ce:08:41

athrs27_phy_setup ATHR_PHY_CONTROL 0 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 0 :10

athrs27_phy_setup ATHR_PHY_CONTROL 1 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 1 :10

athrs27_phy_setup ATHR_PHY_CONTROL 2 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 2 :10

athrs27_phy_setup ATHR_PHY_CONTROL 3 :1000

athrs27_phy_setup ATHR_PHY_SPEC_STAUS 3 :10

eth1 up

eth0, eth1

Setting 0x181162c0 to 0x5cb9a100

is_auto_upload_firmware=0

Autobooting in 1 seconds

## Booting image at 9f020000 ...

   Uncompressing Kernel Image ... OK


Starting kernel ...


[    0.000000] Linux version 3.18.23 (buildbot@builder1) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r47269) ) #1 Sun Jan 31 18:39:35 CET 2016

[    0.000000] bootconsole [early0] enabled

[    0.000000] CPU0 revision is: 00019374 (MIPS 24Kc)

[    0.000000] SoC: Qualcomm Atheros QCA9533 ver 2 rev 0

[    0.000000] Determined physical RAM map:

[    0.000000]  memory: 02000000 @ 00000000 (usable)

[    0.000000] Initrd not found or empty - disabling initrd

[    0.000000] Zone ranges:

[    0.000000]   Normal   [mem 0x00000000-0x01ffffff]

[    0.000000] Movable zone start for each node

[    0.000000] Early memory node ranges

[    0.000000]   node   0: [mem 0x00000000-0x01ffffff]

[    0.000000] Initmem setup node 0 [mem 0x00000000-0x01ffffff]

[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.

[    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes

[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128

[    0.000000] Kernel command line:  board=TL-WR841N-v9  console=ttyS0,115200 rootfstype=squashfs,jffs2 noinitrd

[    0.000000] PID hash table entries: 128 (order: -3, 512 bytes)

[    0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)

[    0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)

[    0.000000] Writing ErrCtl register=00000000

[    0.000000] Readback ErrCtl register=00000000

[    0.000000] Memory: 28324K/32768K available (2586K kernel code, 128K rwdata, 540K rodata, 256K init, 193K bss, 4444K reserved)

[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1

[    0.000000] NR_IRQS:51

[    0.000000] Clocks: CPU:650.000MHz, DDR:392.724MHz, AHB:216.666MHz, Ref:25.000MHz

[    0.000000] Calibrating delay loop... 432.53 BogoMIPS (lpj=2162688)

[    0.060000] pid_max: default: 32768 minimum: 301

[    0.060000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)

[    0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)

[    0.080000] NET: Registered protocol family 16

[    0.080000] MIPS: machine is TP-LINK TL-WR841N/ND v9

[    0.540000] Switched to clocksource MIPS

[    0.540000] NET: Registered protocol family 2

[    0.550000] TCP established hash table entries: 1024 (order: 0, 4096 bytes)

[    0.550000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)

[    0.560000] TCP: Hash tables configured (established 1024 bind 1024)

[    0.560000] TCP: reno registered

[    0.570000] UDP hash table entries: 256 (order: 0, 4096 bytes)

[    0.570000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)

[    0.580000] NET: Registered protocol family 1

[    0.580000] futex hash table entries: 256 (order: -1, 3072 bytes)

[    0.600000] squashfs: version 4.0 (2009/01/31) Phillip Lougher

[    0.600000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.

[    0.610000] msgmni has been set to 55

[    0.620000] io scheduler noop registered

[    0.620000] io scheduler deadline registered (default)

[    0.630000] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled

[    0.640000] console [ttyS0] disabled

�[    0.660000] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 1562500) is a 16550A

[    0.670000] console [ttyS0] enabled

[    0.670000] console [ttyS0] enabled

[    0.670000] bootconsole [early0] disabled

[    0.670000] bootconsole [early0] disabled

[    0.680000] m25p80 spi0.0: found gd25q32, expected m25p80

[    0.690000] m25p80 spi0.0: gd25q32 (4096 Kbytes)

[    0.700000] 5 tp-link partitions found on MTD device spi0.0

[    0.700000] Creating 5 MTD partitions on "spi0.0":

[    0.710000] 0x000000000000-0x000000020000 : "u-boot"

[    0.710000] 0x000000020000-0x00000013f620 : "kernel"

[    0.720000] 0x00000013f620-0x0000003f0000 : "rootfs"

[    0.720000] mtd: device 2 (rootfs) set to be root filesystem

[    0.730000] 1 squashfs-split partitions found on MTD device rootfs

[    0.740000] 0x000000360000-0x0000003f0000 : "rootfs_data"

[    0.740000] 0x0000003f0000-0x000000400000 : "art"

[    0.750000] 0x000000020000-0x0000003f0000 : "firmware"

[    0.790000] libphy: ag71xx_mdio: probed

[    1.380000] ag71xx-mdio.1: Found an AR934X built-in switch

[    1.420000] eth0: Atheros AG71xx at 0xba000000, irq 5, mode:GMII

[    2.020000] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.1:04 [uid=004dd042, driver=Generic PHY]

[    2.030000] eth1: Atheros AG71xx at 0xb9000000, irq 4, mode:MII

[    2.040000] TCP: cubic registered

[    2.040000] NET: Registered protocol family 17

[    2.040000] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.

[    2.060000] Bridge firewalling registered

[    2.060000] 8021q: 802.1Q VLAN Support v1.8

[    2.070000] VFS: Mounted root (squashfs filesystem) readonly on device 31:2.

[    2.080000] Freeing unused kernel memory: 256K (80390000 - 803d0000)

[    3.080000] init: Console is alive

[    3.090000] init: - watchdog -

[    5.120000] init: - preinit -

[    5.670000] random: procd urandom read with 8 bits of entropy available

Press the [f] key and hit [enter] to enter failsafe mode

Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level

[    8.870000] mount_root: jffs2 not ready yet, using temporary tmpfs overlay

[    8.920000] procd: - early -

[    8.920000] procd: - watchdog -

[    9.660000] procd: - ubus -

[   10.680000] procd: - init -

Please press Enter to activate this console.

[   11.490000] NET: Registered protocol family 10

[   11.500000] ip6_tables: (C) 2000-2006 Netfilter Core Team

[   11.520000] Loading modules backported from Linux version master-2015-03-09-0-g141f155

[   11.530000] Backport generated by backports.git backports-20150129-0-gdd4a670

[   11.540000] ip_tables: (C) 2000-2006 Netfilter Core Team

[   11.550000] nf_conntrack version 0.5.0 (446 buckets, 1784 max)

[   11.600000] xt_time: kernel timezone is -0000

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

[   11.660000] cfg80211: World regulatory domain updated:

[   11.660000] cfg80211:  DFS Master region: unset

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

[   11.680000] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 2000 mBm), (N/A)

[   11.680000] cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz, 92000 KHz AUTO), (N/A, 2000 mBm), (N/A)

[   11.690000] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (N/A, 2000 mBm), (N/A)

[   11.700000] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (N/A)

[   11.710000] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2000 mBm), (0 s)

[   11.720000] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2000 mBm), (0 s)

[   11.730000] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 2000 mBm), (N/A)

[   11.740000] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm), (N/A)

[   11.800000] PPP generic driver version 2.4.2

[   11.810000] NET: Registered protocol family 24

[   11.880000] ieee80211 phy0: Atheros AR9531 Rev:2 mem=0xb8100000, irq=2

[   11.890000] cfg80211: Calling CRDA for country: US

[   11.910000] cfg80211: Regulatory domain changed to country: US

[   11.910000] cfg80211:  DFS Master region: FCC

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

[   11.930000] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (N/A, 3000 mBm), (N/A)

[   11.930000] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2300 mBm), (N/A)

[   11.940000] cfg80211:   (5250000 KHz - 5330000 KHz @ 80000 KHz, 160000 KHz AUTO), (N/A, 2300 mBm), (0 s)

[   11.950000] cfg80211:   (5490000 KHz - 5730000 KHz @ 160000 KHz), (N/A, 2300 mBm), (0 s)

[   11.960000] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (N/A, 3000 mBm), (N/A)

[   11.970000] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 4000 mBm), (N/A)

[   19.320000] jffs2_scan_eraseblock(): End of filesystem marker found at 0x0

[   19.330000] jffs2_build_filesystem(): unlocking the mtd device... done.

[   19.340000] jffs2_build_filesystem(): erasing all blocks after the end marker... done.

[   20.730000] jffs2: notice: (985) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.

[   21.510000] device eth0 entered promiscuous mode

[   21.510000] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready

[   21.610000] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready

[   26.300000] eth1: link up (100Mbps/Full duplex)

[   26.330000] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready


Posted by 훅크선장
, |

Ubuntu Linux의 커스텀 버전인 Xubuntu와 Lubuntu의 DVD ISO 한글화 버전을 제작해보았습니다. 

일종의 테스트로 진행하였는데, 이전에 제가 한글화를 한 Backbox Linux와 거의 동일합니다.


Xubuntu와 Lubuntu는 모두 Ubuntu Linux를 기반으로 해서, 각각 xfce4와 LXDE 윈도우 데스크탑 매니저를 사용한 커스텀 리눅스 버전들로, 저사양 하드웨어에서도 돌아가도록 설정되어 있다고 합니다. 일단 다른 리눅스 DVD ISO 보다 용량도 1기가바이트 정도로 매우 작습니다. 처음 리눅스를 접하시는 분들께 권장드립니다.


두 한글화 버전은 모두 fcitx-hangul 입력기를 사용하였고, 부팅시에 언어선택 메뉴와 Try/Install 선택 화면을 제거하였습니다. 설치를 하고 싶으시면, 부팅후에 바탕화면에 설치 바로가기 아이콘을 클릭하시면, 해당 리눅스르 하드디스크에 설치할 수 있습니다.


배포방식은 이전과 동일하게, FTP 하나 입니다. FTP 패스워드만 퀴즈로 풀면 됩니다.


Xubuntu 한글화 64비트 파일명은 

xubuntu-17.10-desktop-amd64-ko.iso 입니다.

SHA-160     : 1fe14447ad088caaabdc9735a8d558c4787d5c1b

MD5         :  de036f550394604fa219dd7b21cf3688


Lubuntu 한글화 64비트 파일명은  

lubuntu-17.10-desktop-amd64-ko.iso 입니다.

SHA-160     : 324bd3f91a56eb45598ec9c8c4316bacd7dafe06

MD5         :  5b032cf6c33326de0c1ab75d4eab0701


다른 버전들도 있으니, 한꺼번에 받지 마시고, 필요한 것만 받아가시기 바랍니다.


FTP 서버: hook7346.ignorelist.com

FTP 포트: 21번

FTP 계정: kali2ko

FTP 패스워드는 퀴즈입니다. => 영문자판상태에서 한글로 치시면 됩니다.

1) 패스워드는 한글 4글자와 특수문자 1개로 구성되어 있습니다.

2) 패스워드의 첫 두 글자는 우리나라 문자 이름입니다. 이미 1) 문장에서 나온 단어입니다.

3) 패스워드의 세번째와 네번째 두 글자는 3.1절에 외치던 문장에 있는 두 글자입니다.

“대한 독립 OO”에서 OO에 들어가는 단어입니다.

4) 마지막에 들어가는 특수문자는 3)의 단어뒤에 자주 붙는 특수문자입니다. 느낌이 오시나요? (이거 자주 헷갈리시는데, 쩜은 아닙니다. 느낌입니다.)


다시한번 말씀드리지만, 영문자판상태에서 한글로 치시면 됩니다.

한글 4글자와 특수문자 1개로 구성되어 있습니다.(영문자로는 총 12글자입니다.)


퀴즈가 안풀리시는 분은  아래 그림 화면에서 터미널창에 입력된 명령어를 주목하시면 됩니다.

--------------------------------------------------------------------------------------------------------------


# Xubuntu 데스크탑 화면

한글과 영문 키보드 변환은 원래 fcitx 입력기의 디폴트 한영변환 키는 Ctrl+Space 를 사용하시면 됩니다.


# Lubuntu 데스크탑 화면

한글과 영문 키보드 변환은 원래 fcitx 입력기의 디폴트 한영변환 키는 Ctrl+Space 를 사용하시면 됩니다.




Posted by 훅크선장
, |