'우분투'에 해당되는 글 2건

  1. 2015.10.22 | dkms를 사용하여 리눅스 커널모듈을 패키지로 만들기
  2. 2015.09.03 | 우분투 svn 설치

프로젝트를 진행하다 리눅스 커널모듈을 deb파일로 만들 일이 생겼다.

한참을 찾아보다 dkms(dynamic kernel module support) makedeb기능을 알게되었다.


참고: https://wiki.kubuntu.org/Kernel/Dev/DKMSPackaging


1. dkms 설치

$sudo apt-get install dkms


2. Prepare source

커널 모듈 소스를 준비해야하는데 적어도 C file과 Makefile이 포함되어야 한다.


C소스


Makefile소스


위의 두 파일은 /usr/src/<module>-<module-version>에 넣자.

본 예제에서는 /usr/src/hello-0.1 로 생성하였다.


*주의: make: Nothing to be done for `all'. 일경우에는 vi Makefile에서 all: 밑에 명시된 부분을 tab으로 했는

지 띄어쓰기로 했는지 확인할것. tab으로 해야함(clean도 마찬가지)




3. dkms.conf 파일 생성

dkms.conf파일을 생성할 것인데 이 역시 동일 폴더 즉 /usr/src/hello-0.1폴더 내에 생성


패키지 이름과 패키지 버전은 정보를 필요로 하는데 폴더네임의 정보와 동일하게 한다.

폴더이름이 hello-0.1이기 때문에 패키지네임은 hello, 버전은 0.1이 된다.


- clean은 폴더를 clean up하는 명령어로 빌드 전 실행시킨다. make clean을 하면 쏵 지워짐

- make[0]은 커널 객체를 빌드하기 위한 첫번째 커맨드

- dest-module-location은 설치될 때 커널 object를 놓기 위한 장소를 설정

예를들어, /lib/modules/$kernelver/updates 일 때 /updates/dkms에 overrade됨

이것은 결국 /lib/modules/$kernelver/updates/dkms에 놓이는 것을 의미함

비록 이러한 정보들은 overrade될지라도 이것은 여전히 필요한 필드이다.

- autoinstall에서 yes는 부팅될 때 커널 object가 설치되고 빌드를 시도하는 것을 의미하고 이것은 만약 커널에 설치가 되어있을때 리빌트나 리인스톨을 하지 않는다


위의 내용까지 한 결과는 위의 화면과 같다.

dkms를 하기까지 준비과정은 끝났다.


4. dkms add

$sudo dkms add -m hello -v 0.1



dkms add를 하게 되면 /var/lib/dkms/hello/0.1의 폴더가 생성된다.



아직 빌드를 하지 않았기 때문에 build폴더에서 ls를 할 경우 출력되지 않는다.


5. dmks build

$sudo dkms build -m hello -v 0.1 



위의 명령어를 입력하면 위의 화면처럼 completed 된것을 확인할 수 있고 build 폴더에서 ls를 할 경우 파일들이 생성


또한 0.1하위로 uname-r 의 폴더가 생성되고 밑에는 hello.ko 커널 모듈이 생성되는 것을 확인할 수 있음




6. dkms install

$sudo dkms install -m hello -v 0.1


또한 모듈 트리를 확인할 수 있다.


모듈 확인!



모듈을 삭제하고 싶으면

$sudo dkms remove -m hello -v 0.1 --all


다른 버전의 커널을 하고 싶으면!?

$sudo dkms build -m hello -v 0.1 -k 2.6.31-14-generic




7. dkms mkdeb

뭐 위에껀 중요하지 않고 이제 mkdeb을 통해 deb패키지를 만들어보자

$sudo dkms mkdeb -m hello -v 0.1


오류가 발생하였다. 이는 debhelper를 설치하지 않았기 때문이다.

$sudo apt-get install debhelper


debhelper를 설치한 후 다시 

$sudo dkms mkdeb -m hello -v 0.1    를 입력해보자.


mkdeb completed 된 것을 확인할 수 있다.


이 deb파일은 /var/lib/dkms/hello/0.1/deb에 위치한다.


deb파일 상세 확인

$lesspipe hello-dkms_0.1_all.deb



다음번에는 같은 방식으로 raspberry파일로 크로스컴파일을 할 것이다.

댓글을 달아 주세요

우분투 svn 설치

프로그래밍/Linux | 2015. 9. 3. 16:19
Posted by 꽃경남

환경: 우분투 mate 14.04


1. 패키지설치

$sudo apt-get install subversion


2. 저장소 생성

$svnadmin create --fs-type fsfs /home/<id>/<저장소>


3. 저장소 설정

$vi /home/<id>/<저장소>/conf/svnserver.conf


anon-access

auth-access

password-db 주석 해제


*수정

svn: E200002: Error while parsing config file: /home/kkn/svn/conf/svnserve.conf:

svn: E200002: line 19: Option expected

-> 공백 허용 안함
-> 위의 공백 제거 해야함


4. 사용자 추가

$ vi /home/<id>/<저장소>/conf/passwd

<id> = <passwd> 설정


5. svn 시작

$ sudo svnserve -d -r /home/<id>/<저장소>

-> d옵션은 daemon, r 옵션은 repository 지정 


(자동 재시작)


이전버전에는 /etc/rc.local이 있었는데 이제는 rc0.d rc1.d 식으로 바뀌었다.

따라서 서버형식은 rc.3 x-window형식은 rc.5로 이동

$ cd /etc/rc5.d

$ sudo vi /etc/rc5.d/S99rc.local


svnserve -d -r <저장소path> 추가해주면 부팅 시 자동으로 재시작 된다.


6. apache 설치

$ sudo apt-get install apache2

$ sudo apt-get install libapache2-svn


7. svn 저장소 권한 수정

$ sudo chown -R www-data /home/<id>/<저장소>

$ sudo chmod -R g+w /home/<id>/<저장소>

$ sudo chown -R nobody.nogroup /home/<id>/<저장소>


8. apache와 svn 연동 환경설정 수정

$ sudo vi /etc/apache2/mods-enable/dav_svn.conf




<Location /svn> 주석 해제

<DAV svn> 주석 해제

SVNPath 부분 변경 필요



마지막 줄</Location> 주석 해제


<Location /svn>과 </Location>의 주석 해제를 하지 않으면 

DAV not allowed here 오류 출력됨


9. 아파치 재시작

$ sudo /etc/init.d/apache2 restart


10. 웹 접속

https://<ip>/svn        //svn 경로로 하면 안나옴



위의 화면이 나오면 서버는 돌아가는 것이다~


11. 우분투 svn gui client 다운(RabbitVCS 사용)


$sudo add-apt-repository ppa:rabbitvcs/ppa

$sudo apt-get update

$sudo apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus3

$nautilus -q


12. reboot

$sudo shutdown -r now


13. 설치 확인

$nautilus

추가 된 것을 확인할 수 있다.


14. 기능 확인

- import: 처음 저장소에 소스 저장

- checkout: 소스받기

- update: 최근 내용으로 수정

- commit: checkout한 소스 수정 후 저장





commit 시

db/txn-current-lock:permission denied 문제

-> $sudo chmod -R go+w /<저장소>



'프로그래밍 > Linux' 카테고리의 다른 글

npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
vmware take ownership 문제  (0) 2015.08.20
우분투에서 geany tool 사용하기  (0) 2015.08.19

댓글을 달아 주세요

블로그 이미지

꽃경남

카테고리

분류 전체보기 (127)
프로그래밍 (31)
기타 (48)
해킹 (48)