LetITgo

[공유] 각종 유틸리티 사용을 위한 ipkg 설치 과정

Recommended Posts

Synology 에서 RTL8168 랜카드 성능 문제로 인해서 드라이버를 컴파일 할 일이 있었는데,

 

이 ipkg가 있어야 관련 툴을 쉽게 설치할 수 있었기 때문에 그 과정을 공유합니다.

 

ipkg는 데비안의 dpkg를 본따서 만든 것이라고 합니다.

 

처음엔 드라이버에 촛점을 맞춰서 검색을 해서 고생 하고 설치를 완료했지만, 나중에 잘 정리되어 있는 사이트를 찾았습니다.

참고: http://rescene.wikidot.com/synology-ipkg

 

 

우선, SSH 서비스를 활성화 시켜 줘야 합니다.

 

제어판 > 터미널 및 SNMP > [체크!] SSH 서비스 활성화 > [적용] 버튼

dsm_enable_ssh.png

 

이제 putty(http://www.chiark.greenend.org.uk/~sgtatham/putty/) 와 같은 ssh 연결 툴을 이용해서 DiskStation서버에 root 아이디로 접속을 합니다.

root 아이디의 비밀번호는 admin과 동일합니다. 다만 admin 사용자가 수정하지 못하는 시스템 영역까지 건드릴 수 있습니다.

 

 

ipkg 설치를 위한 부트스트랩 스크립트 다운로드

 

DiskStation 별로 프로세서 종류가 다를 수 있기 때문에, 거기에 알맞은 부트스트랩을 다운로드 해야 합니다.

하지만 VMware나 대부분 PC를 활용한 XPEnology는 Intel 호환 프로세서 이기 때문에, 아래의 명령으로 파일을 받으면 됩니다.

 

wget http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh

 

만약 ARM이나 다른 프로세서 라면 아래의 Synology 글을 참고하셔서 찾아서 그걸 받으시면 됩니다.

참고: http://forum.synology.com/wiki/index.ph ... stall_ipkg

 

 

내려 받은 스크립트를 실행 가능하게 권한을 설정 합니다.

 

chmod +x syno-i686-bootstrap_1.2-7_i686.xsh

 

 

스크립트를 실행하면 ipkg가 설치됩니다.

 

sh syno-i686-bootstrap_1.2-7_i686.xsh

 

결국, CPU에 알맞은 바이너리를 다운로드 받아서 Synology 시스템 구조에 맞게 적당한 곳에 복사하고 셋팅해 주는 것이지요.

 

 

설치가 완료되면, 부트스트랩 스크립트는 삭제

 

rm syno-i686-bootstrap_1.2-7_i686.xsh

 

 

다음 명령으로 ipkg 패키지 목록을 최신버전으로 업데이트 합니다.

 

/opt/bin/ipkg update

 

업데이트 결과는 다음과 비슷할 것입니다.

Downloading http://ipkg.nslu2-linux.org/feeds/optwa ... ackages.gz

Inflating http://ipkg.nslu2-linux.org/feeds/optwa ... ackages.gz

Updated list of available packages in /opt/lib/ipkg/lists/cross

Successfully terminated.

 

설치가 가능한 전체 패키지 목록을 확인할 수도 있고, 설치되어 있는 패키지 목록을 확인할 수도 있습니다.

/opt/bin/ipkg list
/opt/bin/ipkg list_installed

 

이미 설치되어 있는 패키지들을 최신버전으로 업그레이드 할 수도 있습니다.

/opt/bin/ipkg upgrade

 

이제 ipkg 에서 드라이버를 컴파일 하는데 필요한 툴을 아래와 같이 설치하면 됩니다.

/opt/bin/ipkg install autoconf
/opt/bin/ipkg install make
/opt/bin/ipkg install gcc
/opt/bin/ipkg install sudo

 

만약 ipkg 설치가 잘 됐는데, 실행시 못찾는다는 메세지가 나온다면, 프로파일의 PATH 항목 마지막에 경로를 추가해 줘야 합니다. 아래를 참고하세요.

vi ~/.profile

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/opt/sbin:/opt/bin
export PATH

 

다음은 ipkg와는 관련이 없지만,

Realtek 8168용 랜카드 드라이버를 받아서 컴파일 해서 설치하는 과정입니다.

wget http://12244.wpc.azureedge.net/8012244/drivers/rtdrivers/cn/nic/0002-r8168-8.040.00.tar.bz2
tar vjxf 0002-r8168-8.040.00.tar.bz2
cd r8168-8.040.00
./autorun.sh 

 

드라이버 설치가 완료되면 재부팅 이후에 dmesg, lsmod, ifconfig eth0, ethtool eth0 등을 이용해 확인하면 됩니다.

 

참고하세요~

Edited by Guest

Share this post


Link to post
Share on other sites

우선 좋은 정보 감사합니다...

r8168 드라이버 때문에 질문드립니다...

절차대로 위의 패키지들 다 진행하고 r8168 드라이버를 설치 하려고 진행을 하니 아래 메시지와 함께 설치가 되지 않았습니다...

 

find: /lib/modules/3.10.35.kernel/drivers/net: No such file or directory

 

Check old driver and unload it.

rmmod r8169

rmmod r8168

Build the module and install

./autorun.sh: line 27: make: not found

 

그래서 혹시나 '만약 ipkg 설치가 잘 됐는데, 실행시 못찾는다는 메세지가 나온다면, 프로파일의 PATH를 수정해 줘야 합니다.' 이부분을 안해서 그런가 해서 수정해 줬습니다...

 

그래도 똑같아서 /root/r8168-8.040.00 디렉토리의 log.txt를 보니 아래 내용이 기록되어 있었습니다...

 

make -C src/ clean

make[1]: Entering directory `/root/r8168-8.040.00/src'

make -C /lib/modules/3.10.35/build SUBDIRS=/root/r8168-8.040.00/src clean

make: Entering an unknown directory

make: Leaving an unknown directory

make[1]: Leaving directory `/root/r8168-8.040.00/src'

 

어디를 손봐야 하나요...?

Share this post


Link to post
Share on other sites

만약 컴파일이 잘 되었다면, /lib/modules/3.10.35/kernel/drivers/net 안에 r8168.ko 파일이 생성되어야 합니다.

 

제가 컴파일한 r8168.ko 파일을 zip 형식으로 압축해서 파일을 공유합니다, 이 링크를 참고하세요. http://ge.tt/2v1Ev6O2/v/0

 

만약 위 파일을 박스에 직접 내려 받으려면 ssh나 콘솔에서 다음 명령어를 사용하셔도 됩니다.

 

wget http://ge.tt/api/1/files/2v1Ev6O2/0/blob?download -O r8168.zip
unzip r8168.zip

 

그리고 기본 커널 모듈을 불러오는 경로가 /lib/modules 이니까 압축을 풀은 r8168.ko 파일을 /lib/modules 에 복사해 넣으세요.

 

cp r8168.ko /lib/modules

 

드라이버를 로드하려면 insmod 명령어로 불러올 수 있습니다. 아무 에러 메세지가 나오지 않으면 불러오는데 성공한 것입니다.

 

insmod /lib/modules/r8168.ko

 

드라이버가 로드되어 있는지 확인하려면 다음 명령어를 사용해서 비슷한 결과가 나오면 됩니다.

 

lsmod | grep r8168 

r8168                 254147  0

Edited by Guest

Share this post


Link to post
Share on other sites

혹시나 몰라서 LetITgo님이 알려주신대로 드라이버가 잘 로드됐는지 확인 먼저 해봤습니다...

이미 r8168이 로드가 되어 있더라구요...

 

/lib/modules에 드라이버가 로드가 되어 있다면

/lib/modules 아래에 /3.10.35/kernel/drivers/net 를 만들어 주고 그 안에 r8168.ko 넣어 주는 이런 임의 작업을 해줄 필요는 없는거죠?

 

참고로 저는 LetITgo님 알려주신 패키지 설치 알기 전에 먼저 시행 했던게

r8169드라이버가 로드가 되서 부트로더(usb메모리)에서 작업해주는 rmmod=r8169,r8169_new insmod=r8168 이 문구를 추가 해서 r8168 드라이버를 강제로 잡아주는 방버을 사용해봤는데요...문제는 WOL이 안되는 증상이 나타나서 현재는 롤백한 상태로 사용 중입니다...

그러던 중 이 설치 방법을 알게 되어 혹시나 WOL이 되지 않을까 기대중입니다...

 

혹시 rmmod=r8169,r8169_new insmod=r8168 이 작업을 해주어야 되나요?

Share this post


Link to post
Share on other sites

이미 드라이브가 로드되어 있다면 임의 작업 안하셔도 됩니다.

 

R8168의 특성 때문인지는 모르겠는데, WOL기능이 작동하게 하기 위해서 별도로 작업 해야 하는걸로 알고 있습니다.

 

기본적으로 XPEnology가 WOL이 안되게끔 설정이 되어 있더라고요. 아래 사이트를 참고하시면 됩니다.

 

http://xpenology.me/how-to-activate-wol/

 

 

참고로 저는 조금 전까지 본체의 전원버튼을 원터치로 누를 경우 박스가 꺼지도록 하는 작업을 하고 있었는데, 성공했습니다~ ^^

 

이게 안되면, 어떤 상황에서는 전원을 끄기 위해서 GUI 에서 종료 하던가, CLI 에서 poweroff 명령을 날려야 했거든요... 컴텨켜기 귀찮... 이제 좀 편합니다~

Edited by Guest

Share this post


Link to post
Share on other sites

링크의 WOL 작업은 이미해서 잘 작동되고 있습니다...

 

제가 궁금한건 ethtool -i eth0 를 해보면 r8169 드라이버로 인식이 되어 있습니다...

r8168로 인식이 되어야 정상인데 LetITgo님이 알려주신대로 드라이버를 설치하면 제대로 인식할까 싶어서 해봤지만 똑같이 r8169로 인식이 되어 집니다...

혹시나 싶어서 bootimage의 syslinux.cfg 에서 rmmod=r8169,r8169_new insmod=r8168 추가해서 WOL 될까 싶어서 테스트 해봤는데 역시나 안되네요...

LetITgo 님은 r8168 로 잘되시는 거죠?

드라이버 버전이 어떻게 되나요? 저는 수정했을때 아래 버전으로 나옵니다.

DiskStation> ethtool -i eth0

driver: r8168

version: 8.038.00

firmware-version:

bus-info: 0000:01:00.0

supports-statistics: yes

supports-test: no

supports-eeprom-access: no

supports-register-dump: yes

supports-priv-flags: no

 

제 생각에는 이미 부트로더 개발자가 드라이버는 최신으로 전부 로드 시켜 놓았는데 인식이 제대로 안되는 문제 같은데 제 생각이 맞을려나요...?

Share this post


Link to post
Share on other sites

부팅때 모듈을 불러들이는 파일을 찾아서 mii r8169 부분에서 r8169를 제거하고 r8168를 대신 넣으면 원하시는 드라이버가 로드 됩니다.

 

저는 그렇게 했는데 잘 됩니다요, 드라이버 버전은 8.040.00 입니다.

 

그리고 저는 R8168머신은 WOL 사용하지 않고요, 순전히 속도가 안나와서 맞는 드라이버를 최신 버전으로 바꾼겁니다. R8169 드라이버는 옛날겁니다...

Share this post


Link to post
Share on other sites

부팅때 모듈을 불러들이는 파일을 찾아서 mii r8169 부분에서 r8169를 제거하고 r8168를 대신 넣으면 원하시는 드라이버가 로드 됩니다.

 

그건 어떻게 하는건가요?

 

드라이버 히스토리는 저도 삽질해보고 검색해봐서 알고는 있습니다...^^;...

Share this post


Link to post
Share on other sites

오래돼서 저도 지금 그 파일 위치를 까먹어서... 찾고있어요 ;;; 분명 vi 로 고쳤던 기억이 납니다.

 

의존성 때문에 mii를 메인으로 먼저 로드하고 그담에 r8169 를 불러들이고 있더군요...

 

XPEnology는 커널을 왜 이렇게 만들어서 8168쓰는 여러사람 고생시키는지~

 

여기 시간이 새벽이다보니 머리가 안돌아가네요, 자고 나중에 업데이트 할께요 @_@

Share this post


Link to post
Share on other sites

freediver님 댓글이 늦어서 미안합니다, 생업이 중요하다보니 ^^

 

Realtek 8169 드라이버 문제는 포럼에서도 많이 논의가 되었던 알려진 문제였습니다.

이는 PCI 방식의 Fast Ethernet 제품용 8169 드라이버를 이용해서, 호환되는 PCI-E 방식의 8111이나 8168 제품들도 커버를 하는데, 제대로 지원하지 못한 1차적인 원인이 있었다고 합니다.

 

드라이버 문제는 5565 이후에 해결되었다고 하는데, 어떤 사람은 5.2-5565 버전의 드라이버는 WOL이 되고, 그 이후 버전은 안돼서 5565 때의 드라이버를 가져다 썼다고 합니다.

5.2-5565.1 (01-06-2015)

Made compatible with DSM 5.2-5565.

Added newer network drivers for Intel, Realtek and Broadcom.

 

절전모드로 들어갈 때 리눅스의 Realtek 드라이버가 이더넷 어댑터를 S3 (Stand-by)나 아닌 S5 (Soft power off) 아예 전원을 차단시켜 버려서 WOL 매직 패킷을 받지 못하게 되거나,

 

그 외에 메인 보드에 따라 BIOS의 Power Management 에서 "Deep Sleep Control" 항목이 존재해서 이로 인해서 전원을 차단되어 버리니 하면 이를 Disable 시키라는 내용도 있고,

(참고: http://askubuntu.com/questions/134841/r ... ake-on-lan )

 

XPEnology의 WOL 기본 설정이 Realtek과 호환되지 않아 설정을 바꿔줘야 하는 경우도 있습니다.

(참고: http://xpenology.me/how-to-activate-wol/ )

 

 

결국 근본적인 해결책은 XPEnology와 호환성이 좋지 않은 Realtek 대신 다른 Intel 계열 랜카드를 사용하는게 속편하다는게 결론인데요,

 

사실 저는 NAS를 24/7 가동시키기에 WOL이 필요가 없었는데... XPEnology의 설정에서 WOL 값이 저장되지 않는게 궁금해서 시작했던 것입니다.

 

드라이버가 제대로 올라와 있다면, /etc.defaults/synoinfo.conf 와 /etc/synoinfo.conf를 수정하고, ethtool이나 /proc/acpi/wakeup 값을 수정하고

wakeup 에 해당하는 이벤트가 발생하면 처리할 스크립트를 추가하고 DSM의 설정에서 WOL이 잘 설정되어 있는지 확인했던 것으로 기억합니다.

위의 것들을 하지 않으면 DSM 설정에서 아무리 네트워크 어댑터의 WOL을 Enable 해도 다시 clear 되더군요.

그 외 추가로 건드린 파일은 /.xpenoboot/modules.d/02-net.conf 이었습니다.

 

관련 내용을 댓글로 다루기에는 내용이 길고, 본 글의 주제와 부합하지 않아 따로 스레드를 작성할 까 합니다.

 

시간이 오래 걸려서 미안합니다, 요즘 일이 많네요... 여유있게 기다려 주세요~

Edited by Guest

Share this post


Link to post
Share on other sites

어후 이렇게 신경써서 알려주시는 것만으로도 감사할따름이죠...

 

메인보드 회사들이 거의 리얼텍 위주로 채택을 해서 한번은 짚고 가야할거 같아요...

 

저부터도 인텔 랜카드를 쓰고 싶지만 PCI (PCIE 아님) 슬롯 밖에 없어서 리얼텍을 안고 가야합니다...

 

댓글로도 몰랐던 내용이 많아서 관련 글을 따로 올리신다니 더 기대되네요...

Share this post


Link to post
Share on other sites

r8168 드라이버 문제로 업데이트 하려고 위에 댓글처럼 다 해봤습니다만 결론은 실패했습니다.

 

원인은 우선 xpenlogy에서 아래 디렉토리가 존재하지 않아서 ko 파일 생성 실패

/lib/modules/3.10.35.kernel/drivers/net

 

두번째로 r8168.ko 를 포스팅 작성자 분께서 올려주신 파일로 /lib/modules/ 경로에 덮어쓰기로 해봤습니다만

xpenology system 리붓을 하게되면 r8168.ko 이 원래 버전으로 복원됩니다. root 계정으로 winscp를 통해서 해보기도하고

putty로 접속해서 덮어쓰기를 해도 리붓만 하면 초기 버전으로 복원이 되어 버려서 8.038에서 올려주신 8.040으로 쓸수가 없네요.

 

이런 문제를 해결할 방법이 없을까요?

Share this post


Link to post
Share on other sites

전 32bit라서 nanoboot사용합니다. r8168은 이미 로드가 되어 있는데, r8169, r8101 만 랜카드가 인식하고

r8168만 로드하면 아예 랜카드를 인식실패하네요.

혹시몰라서 빌드할려고 해도 빌드가 위에분과 마찬가지로 안되고요.

폴더를 못찾는걸 임의로 만들어서 빌드해도 안되네요.

 

이거 빌드 실패하는것 찾아보니

build-essential/linux headers 가 설치되어 있지 않아 발생하는 문제라고 하네요.

해결책을 보면

apt-get install linux-headers-$(uname -r) 로 자신에 맞는 header를 설치하면 된다고 하는데

debian chroot 로 apt-get 사용해서 봐도 해당버전에 맞는 header는 없고 경로 설정이 달라져서 컴파일도 애매하네요.

#apt-cache search linux-headers

linux-headers-3.16.0-4-586 - Header files for Linux 3.16.0-4-586

linux-headers-3.16.0-4-686-pae - Header files for Linux 3.16.0-4-686-pae

linux-headers-3.16.0-4-all - All header files for Linux 3.16 (meta-package)

linux-headers-3.16.0-4-all-i386 - All header files for Linux 3.16 (meta-package)

linux-headers-3.16.0-4-amd64 - Header files for Linux 3.16.0-4-amd64

linux-headers-3.16.0-4-common - Common header files for Linux 3.16.0-4

linux-headers-486 - Header files for Linux 486 configuration (dummy package)

linux-headers-586 - Header files for Linux 586 configuration (meta-package)

linux-headers-686-pae - Header files for Linux 686-pae configuration (meta-package)

linux-headers-amd64 - Header files for Linux amd64 configuration (meta-package)

 

# uname -r

3.2.40

Share this post


Link to post
Share on other sites

Realtek 랜카드 드라이버 문제는, Xpenology 새로운 버전이 나오면서 오래된 구형 드라이버 제거하고

 

호환성 좋은 업데이트 된 드라이버를 탑재해서 문제가 해결 된 것으로 알고 있습니다.

 

5.2-5967.1 의 Release Note의 맨 마지막 줄을 참고하시면 됩니다 (viewtopic.php?f=2&t=5026)

 

5.2-5967.1 (17/07/2016)

DSM
Add 5.2.5967 support
Fix Control Panel > Hardware & Power issue in 5967
Fix bios reset issue on some system (this may break the power on/off schedule function)

Storage
Add HP cciss driver for HP driver Smart Array like E200 Controller
Updated HP hpsa module to support new adapters like HP H240
Add pata_amd and pata_jmicron

Network
Updated intel ixgbe driver to add X550 adapters support
Update realtek r8101, r8168 and r8169 drivers

Share this post


Link to post
Share on other sites

nanoboot의 kernel에 포함되어 있는 realtek 모듈을 Xpenology 5.2-5297-1 에 들어있는 r8169.ko 모듈로 바꿔서 한번 해보세요.

architecture가 호환된다면 로드 될 겁니다.

 

전 32bit라서 nanoboot사용합니다. r8168은 이미 로드가 되어 있는데, r8169, r8101 만 랜카드가 인식하고

r8168만 로드하면 아예 랜카드를 인식실패하네요.

혹시몰라서 빌드할려고 해도 빌드가 위에분과 마찬가지로 안되고요.

폴더를 못찾는걸 임의로 만들어서 빌드해도 안되네요.

 

이거 빌드 실패하는것 찾아보니

build-essential/linux headers 가 설치되어 있지 않아 발생하는 문제라고 하네요.

해결책을 보면

apt-get install linux-headers-$(uname -r) 로 자신에 맞는 header를 설치하면 된다고 하는데

debian chroot 로 apt-get 사용해서 봐도 해당버전에 맞는 header는 없고 경로 설정이 달라져서 컴파일도 애매하네요.

#apt-cache search linux-headers

linux-headers-3.16.0-4-586 - Header files for Linux 3.16.0-4-586

linux-headers-3.16.0-4-686-pae - Header files for Linux 3.16.0-4-686-pae

linux-headers-3.16.0-4-all - All header files for Linux 3.16 (meta-package)

linux-headers-3.16.0-4-all-i386 - All header files for Linux 3.16 (meta-package)

linux-headers-3.16.0-4-amd64 - Header files for Linux 3.16.0-4-amd64

linux-headers-3.16.0-4-common - Common header files for Linux 3.16.0-4

linux-headers-486 - Header files for Linux 486 configuration (dummy package)

linux-headers-586 - Header files for Linux 586 configuration (meta-package)

linux-headers-686-pae - Header files for Linux 686-pae configuration (meta-package)

linux-headers-amd64 - Header files for Linux amd64 configuration (meta-package)

 

# uname -r

3.2.40

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.