본문 바로가기

Linux

(17)
Rock960A/B/C 용 rtl8152 커널 드라이버 소스 Rock960A/B/C 를 쓰는 사용자라면 아마 VAMRs 에서 배포하는 리눅스를 사용하고 있으시거나, 제가 따로 배포하는 AARCH64 빌드를 높은 확률로 사용 중 이실 것 입니다만, 이 커널이 4.4 에 기반을 하고 있는지라 Realtek 의 RTL8152 계열 USB LAN 이 ( 보통 USB 3.0 GbE 지원 제품 ) 위 화면처럼 (unnamed net_device) (uninitialized) 오류를 뱉으면서 커널에서 인식을 못하고 있는 상황을 경험 할 것입니다. 이는 커널에 포함된 r8152 내장드라이버가 너무 옛날 것이라 생기는 문제로 최신 드라이버는 ACPI 와 개선된 net API 등을 사용해서 또 바로 사용해서 컴파일 할 수 없으므로, 이를 기존 kernel 4.4 에 맞도록 수정한 ..
우분투/리눅스 민트 에서 apt-get update 중 key 오류 날 때. 저의 경우는 launchpad.net 쪽에서 나는 오류가 갑자기 발생 하기 시작 했는데, 아마 처음 이 PPA 주소를 추가 할 때 Public key 관련 작업을 하지 않았던 것 같습니다 (또는 그세 뭔가 바뀌었던가 ...) 그래서 이 문제를 해결 하기 위해 다음 URL 을 참고 하였습니다 만, 영문이 어려운 분들을 위해 조금 설명을 달아 보겠습니다. http://opensourceforgeeks.blogspot.kr/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html 위 URL에 따르면 여러 방법이 존재 하기는 합니다만, 저의 경우 위 사진에 있는 오류 문구 중 NO_PUBKEY 다음에 오는 16진수 키 값을 복사 해서 다음 URL에서 검색 했습니다. 우분투 ..
Linux 에 SSD TRIM 적용 하기. Linux 는 항상 HDD 를 단 기기에 쓰다가 SSD 로 변경 하고 나니, TRIM 을 시스템에 적용해야 하는 이유가 생겼습니다. Windows 는 7 부터 지원 되는 TRIM 이 제가 사용하는 Linux Mint 17.3 에서는 수동으로 해야 하는 일이 있어 이를 적용 하고자 했습니다. 인터넷에서 여러 방법을 찾아 본 결과 다음 몇가지는 기본으로 해야 했는데, 먼저 /etc/fstab 을 수정 해서 지금 사용중인 장치에 discard가 기본으로 적용 되어야 합니다. 먼저 SSD 가 TRM 르 지원 하는지 확인 하기 먼저 현재 SSD가 TRIM 르 지원 하고, 리눅스가 이걸 인지 했는지 알아 보는 방법이 다음과 같습니다. sudo hdparm -I /dev/sda | grep TRIM 이렇게 했을 떄 ..
파이어폭스 타이틀 바를 줄이자, Hide Caption Titlebar Plus 화면이 작은 랩탑(노트북)에 Ubuntu 계열 리눅스를 쓰다 보면 파이어폭스의 창에 낭비가 있다는 느낌이 듭니다. Windows 버젼과 차이가 발생 하는 부분이 이 뿐이기도 한데, 아래 이미지 처럼 뭔가 테마를 적용 해도 이질감이 들게 되는 이유 이기도 합니다. 이 이질적인 부분과 공간 낭비를 줄이기 위해서 Add-ons Manager 설정에서 Hide Caption Titlebar Plus (거의 모든 플랫폼 공용) 을 받아 적용 하면 아래 처럼 따로 놀고 뭔가 낭비가 있던 요소들이 하나의 모습으로 변하게 됩니다. 사실 Windows 에서는 이미 이렇게 되어 있으니 필요가 없겠지만, 리눅스 계열에서는 매우 큰 변화라 할수 있을지도 모르겠군요. 여기서 보면 왼쪽 위 파폭 메뉴 자체가 너무 커서 사실 페이..
리눅스에서 빠르게 TCP socket 서버 찾기. 리눅스에서 자신의 IP 영역대에서 (A.B.C.n, n = 1~자기자신~255) 다른 서버가 있는지 찾기 위해서는 여러 방법이 있긴 하겠지만, 대부분 이 방법으로 찾는게 아닐까 합니다. 아래 코드는 해당 ip 에 TCP socket 이 열려 있는지 찾는 간단한 방법 으로 실제 AnyStreaming Client 에서도 아래와 같은 방법으로 (물론 Windows용으로 바꾼 코드) AnyStreaming 을 찾습니다. 실제론 FD_ISSET() 이후에 socket 을 다시 blocked 로 바꾼 다음 send() 를 통해 특정 명령이 전달 되는지 까지 검사하면 더 좋을 듯 합니다. 이 방법은 TCP socket 의 connect() 함수가 blocking 으로 동작 하는것을 감안해서 만든 날림 코드지만 꽤 ..
리눅스내 현재 접속 ip 알기. 리눅스나, 임베디드 리눅스 내에서 현재 연결된 장치에 따라 ip 를 알고 싶을 때가 있다, 이럴때 아래 코드를 사용할 수 있다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include bool getmyip( const char* devname, struct in_addr* addr ) { struct ifreq ifr; int fdSockTest = -1; fdSockTest = socket( AF_INET, SOCK_DGRAM, IPPROTO_IP ); if ( fdSockTest >= 0 ) { strcpy( ifr.ifr_name..
서비스 데몬을 만드려다 노가다 하다 ... 시스템을 이제 다 만들어 가는지라, 기존에 일일히 실행 해서 쓰던 서버들을 이제 데몬으로 올리려 임베디드 리눅스 파일 시스템 /etc/rc.local 뒤에 뙇 넣어 놨더니 ... 하 ... rcS.d 세션이 끝나니 다들 죽으신다 ... 대체 언제적 문제인가 해서 back to the past. 현재 개발 하는 시스템은 squashfs 를 이용한 NAND writing 을 하기 때문에 미리 sqfs 를 만들 위치에서 부터 ARM ELF 로 만들어진 바이너리를 각각 /usr/sbin 안에 넣어 준다. 예를 들어 서비스 서버로 만들었던 것 중 하나가 asctrld 이라면 /usr/sbin/ 안에 asctrld 를 넣어 주는 것. 그런 다음, 아래 스크립트를 복붙 으로 /etc/init.d 안에 asctrld ..
Wine(리눅스) 에서 트루타입 폰트 힌팅 적용. 리눅스를 쓰는 입장에서 WINE 의 고마움은 가끔 '굳이 이걸 돌리기 위해서 Windows 를 써야 하나?' 란 생각이 드는 것들을 구동 할 때 입니다. 하지만 WINE 은 역시 Emulation 의 일종이다 보니 실제 Native Windows PE 바이너리를 완벽히 구동 하지 못하는 것 부터, GDI 를 X11 에서 그려야 하므로 제약적인 부분이 있을 수 있게 됩니다. 그 중 하나가 바로 TTF (True Type Font) 를 대부분 Hinting (힌팅, 또는 Anti-Aliasing 같은거로 알려진 것) 처리 하지 못하는 문제가 있다는 것 입니다. 사실 이는 WINE 에서 가지고 있는 Registry 를 수정 하면 됩니다. HKEY_CURRENT_USER/Control Panel/Desktop/..