요약

1. $dmesg | grep eth0으로 renamed 된 것 확인

2. $sudo vi /etc/default/grub

3. GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0" 로 수정

4. $sudo update-grub

5. $sudo reboot


ifconfig를 입력하였는데 lo밖에 출력이 안된다?


우선 dmesg를 입력해보자.

$dmesg | grep eth0


출력 결과 enxxx, p5p1 등 이상한 이름이 출력되며 마지막에 renamed eth0을 확인할 수 있다.

위의 이상한 이름이란 predictable network interface names 이라는데 난 기존 방식의 eth0을 사용하고 싶었다.


또한 ifconfig -a 를 입력하면 위의 이상한 이름과 함께 ip, mac 등을 확인할 수 있다.

출력이 안된다면 네트워크 드라이버가 올라가지 않을 수 있기 때문에 insmod를 해야한다.


방법은 간단하다.

다른 페이지에서 찾아보니 rules를 바꾸거나 하는 방법들이 있었는데 16.04를 설치한 나에게는 적용되지 않았다.


eth0의 이름을 사용하지 않을 경우에는 vi /etc/network/interfaces에서 기존 방식의 

auto eth0

iface eth0 inet dhcp

에서 eth0이름을 해당 이름으로 변경하면 된다.


eth0으로 바꾸고 싶으면?


$sudo vi /etc/default/grub


GRUB_CMDLINE_LINUX_DEFAULT="" 을

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0" 로 수정해주면 된다.


$sudo update-grub

$sudo reboot

라즈베리파이 프로젝트를 진행하다 서로 다른 이미지를 구운 usb를 비교할 일이 생겼다.

기본적으로 라즈베리파이를 구운 이미지의 usb를 윈도우로 연결시에는

fat32와 ext4로 구분이 되어 fat32밖에 보이지 않는다. (리눅스에서 usb연결시 전부 보임)


1. beyond compare 다운로드

http://www.scootersoftware.com/download.php

리눅스 32bit, 64bit에 따라 다운로드 하면 된다.

현재 pc는 우분투이기 때문에 debian 파일을 다운로드 하였다.



2. package 설치

- sudo dpkg -i <파일 이름.deb>

redhat  계열의 rpm은

- rpm -ivh <파일이름.rpm>


3. 프로그램 실행

- 설치된 파일은 /usr/lib/beyondcompare 에 설치된다.

- 쉘에서 ./BCompare 또는 폴더로 들어가서 BCompare를 더블클릭하면 실행된다.
    -> 더블클릭 시 실행안됨. 
       $cd /usr/lib/beyondcompare

  $./BCompare



실행되면 밑의 그림과 같이 프로그램이 실행되며

폴더, 텍스트 등의 비교가 가능하다 ^^




부팅 시 rc.local파일에 문자를 삽입하는 일이 생겼다.

echo를 이용하여 삽입하였지만 exit 0 즉 맨 마지막 줄에 명령어가 삽입이 되어 실행이 되지 않았다.


찾던 도중 awk와 sed를 이용하여 특정라인에 추가를 하였지만 이는 추가한 내용을 출력한 것이지 갱신이 되는 것은 아니었다.


ex) awk ' {if (NR == <22:특정 열>) { print "명령어 해당 부분" ; print $0 } else { print $0 } }' <InputFile>

ex) sed -e '<22:특정 열> i\ <명령어>' <InputFile>


그러나 awk나 sed는 찾기, 출력, 치환 등 많이 사용되기 때문에 스크립트를 펄의 능력과 거의 비슷한 수준으로 끌어올릴 수 있음.


위의 방법은 InputFile에 문자열들을 읽고 22라인, 즉 설정한 특정 열에 내가 넣고 싶은 명령어를 넣고 출력하는 것 밖에 하지 못했다. 물론 >> 를 통해 덧붙이는 방법이나, > 덮어쓰기를 할 순 있었으나 별도의 파일을 만들거나, 또는 밑에 내용들이 계속 덧붙이는 더러운 파일이 생성되었다.


결론.

특정라인에 곧바로 추가하기

perl -p -i -e '$.==<22:특정열> and print "<명령어>"' <InputFile>

참고: http://www.noobslab.com/2015/10/how-to-mirror-your-android-device-in.html


기존에는 윈도우 환경에서 Mobizen을 사용하였지만 우분투환경에서는 exe 실행파일을 사용할 수 없다.

그래서 Wine을 이용하여 실행하려 하였지만 실행이 되지 않았다.

그래서 찾아본결과 adb를 이용한 seven-square를 통해 미러링을 할 수 있는 것을 확인하였다.


테스트환경

1. vmware workstation 11

2. ubuntu 14.04

(Available for Ubuntu 15.04 Vivid/15.10 Wily/14.04 Trusty/12.04 Precise/Linux Mint 17.x/13/other related Ubuntu derivatives)


설치

1. 관련 패키지 설치

sudo apt-get install android-tools-adb qt4-qmake libqt4-dev libqtcore4 libqtgui4


2. 설치파일 다운로드

wget https://github.com/yangh/sevensquare/archive/master.zip


3. 설치파일 압축해제

unzip master.zip


4. 컴파일

$ cd sevensquare-master

$ make

$ sudo make install


5. 실행

$ seven-square & (&는 background 실행, foreground실행은 &안붙이면된다)


단말이 붙지 않았기 때문에 usb로 단말을 연결시킨다.

$adb shell 로 단말 연결되는지 확인


단말을 찾을 수 없다고 에러메시지가 나올경우에는

1. 개발자 옵션이 활성화 되어있는지

2. 장치드라이버가 올바로 설치되어 있는지

3. 위에 두 개가 되었을지라도 지문 등록이 되어야 하기 때문에 단말 홈상태에서 usb 연결 시 이 컴퓨터에는 항상 이용하시겠습니까? 를 체크하였는지 확인해야함



최종적으로 단말이 붙는 것을 확인할 수 있다.



미러링은 되는데 성능은 그닥 좋지는 않은 것 같다..



프로젝트를 진행하다 리눅스 커널모듈을 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파일로 크로스컴파일을 할 것이다.

실습환경: vmware 11 ubuntu-mate 14.04


우분투 repository에는 간혹 원하는 패키지들이 존재하지 않을 경우가 있다.

이를 위해 personal repository를 만들어보고자 한다.


참고: https://help.ubuntu.com/community/Repositories/Personal (뭐 사실 동일)

단계

1. Install dpkg-dev

2. Put the packages in a directory

3. Create a script that will scan the packages and create a file apt-get update can read

4. Add a line to your sources.list pointing at your repository


단계를 실시하기전에 apt-get 명령어 정리 참고


1. Install dpkg-dev

$sudo apt-get install dpkg-dev


2. The Directory

패키지를 유지하고 싶은 곳에 디렉토리를 생성. 본 예제에서는 /usr/local/mydebs 경로 사용

$sudo mkdir -p /usr/local/mydebs        //-p는 하위디렉토리까지 생성할 때 쓰인다.

아래의 사진은 /usr/local/mydebs 내에 샘플 deb패키지를 넣음

(http://kkn1220.tistory.com/51 위의 샘플 deb 만드는 방법(커널모듈을 deb파일로 생성함))


3. The script update-mydebs

update-mydebs 스크립트 만들기


위의 매뉴얼을 살펴보면 update-mydebs 스크립트 파일을 ~/bin에 저장하라고 권고

(만약 존재하지 않을 경우 만들라고 까지..... 근데 뭐 사실 그닥 중요하진 않은듯)

-매뉴얼-

Cut and paste the above into gedit, and save it as update-mydebs in ~/bin. 

(the tilde '~' means your home directory. If ~/bin does not exist, create it: Ubuntu will put that directory in your PATH. 

It's a good place to put personal scripts). 


굳이 ~/bin에 넣을 필요를 못느껴서 desktop에 스크립트 파일 생성


다음으로 스크립트를 실행하기 위해서는 권한을 줘야됨

$chmod u+x ~/bin/update-mydebs

(위의 명령은 change mode로 실행권한인 x를 주는 것을 뜻합니다. chmod 764와 같음)

위 명령을 실행하면 아래와 같이 user권한에 rwx로 바꾸는 것을 확인할 수 있다.



위의 스크립트 동작원리

-> dpkg-scanpackages는 생성폴더인 mydebs안에 모든 패키지들을 보고 apt-get update가 읽을 수 있도록 압축하고 쓰여진다.(Packages.gz 파일로)

$./update-mydebs        //스크립트 실행

위의 명령을 실행하면 아래의 사진과 같이 Packages.gz 생성 확인할 수 있다.



$gunzip Packages.gz

$vi Packages    //패키지 확인하기 위해서




이를 웹에 등록하여 apt-get install하는 것도 할 예정





환경: vmware 11 ubuntu-mate


원래는 테스트용으로 진행하려고 20GB밖에 공간을 할당하였는데 어쩌다보니 계속 진행하게 되어 150GB로 확장한 화면입니다.

노란색 부분을 더블클릭해줍니다.



노란색 Expand부분이 비활성 되어있는것을 확인할 수 있습니다. 이는 스냅샷이 저장되어 있을 경우에 공간늘리는 것이 안된다고 합니다.



스냅샷을 백업하실분들은 내문서에 virtual machine에서 백업을 하시고 스냅샷을 지워줍니다.


스냅샷을 지운결과 Expand가 활성화 되는것을 확인할 수 있습니다.


확장하고 싶은 공간을 입력하고 Expand버튼을 눌러줍니다. 저는 이미 20에서 150으로 늘렸기때문에 10만 더 확장하였습니다.


Expand버튼을 누르면 아래의 화면과 같이 성공적으로 확장됨을 확인할 수 있습니다.




이제 우분투를 실행합니다.

gparted를 설치하여 공간을 확장하고자 합니다.


$sudo apt-get install gparted        //gparted 설치

$sudo gparted                     //gparted 실행



gparted를 실행하면 아래와 같이 unallocated 부분을 확인할 수 있습니다. 저는 어제 혹시모를 것을 대비하여 전체 공간을 할당하지 않았기 때문에 조금 전 추가한 10GB와 나머지공간 18GB로 인해 28GB가 할당되지 않은 것을 확인할 수 있습니다.



여기에서 저는 /dev/sda3 ext4로 추가하는 것이 아닌 sda1의 공간을 늘리고자 합니다.

(개인적으로 여기저기 드라이브가 생기는것을 좋아하지 않아서...)


만약 sda3으로 확장하고 싶으신분들은 unallocated 우측마우스클릭해서 new누르시고


edit탭에서 apply all operations 누르시면 됩니다.



그러면 위의 화면처럼 sda3에 할당되고 재부팅하면 자동 마운트 될 수 있고 안되시는분들은 마운트 시켜주면 됩니다.


저는 sda1에 할당을 하고자 합니다. sda1에 할당을 하려면 


    우측마우스 클릭하여 resize를 누르면 되는데

아래의 화면과 같이 resize 버튼이 비활성화 되어있습니다.

이는 sda2와 sda5 등과 같이 sda1과 unallocated 사이에 파티션이 있어서 그렇습니다.

linux-swap partition을 swapoff 하고 파티션을 삭제해야합니다. 또한 해당 extended 파티션도 삭제해야하는데

데이터가 있을 시 backup 하기시 바랍니다.



위의 화면은 삭제 후의 모습입니다.


공간을 늘리고 싶은만큼 확장한 후 resize버튼을 눌러줍니다.


size가 바뀐것을 확인할 수 있습니다.



이제 아까 지웠던 swap파티션과 extended 파티션을 추가해야합니다.


unallocated 우측마우스 클릭 후 new를 하고 create as에 extended partition을 하고 add를 눌러줍니다.



마찬가지로 우측마우스 클릭 후 논리파티션, 파일시스템은 linux swap으로 맞춰주시고 add를 눌러줍니다.



생성된 모습입니다.


위에서 말씀드린 edit탭에 apply all operations 누르시면 됩니다.

아래는 성공한 후의 모습입니다. 



변경 전 용량


변경 후 용량


위의 두 화면에서 볼 수 있듯이 디스크가 확장된 것을 확인할 수 있습니다.


감사합니다.

express는 node.js에서 가장 유명한 웹 프레임워크 모듈이다.


뭐 유명하다고 하니 사이트 접속       (한글로 번역한 사이트라고 함)

(사이트가 심플하면서 상당히 멋있음)

우측 상단에 github가 있는데 궁금하신분들은 들어가봐도 좋을 것 같음

(https://github.com/strongloop/express)



그렇다면 설치를 해보자.

npm을 이용해서 설치를 할건데 npm이 모르시다면

(http://kkn1220.tistory.com/45)참고


$npm install express        


express를 활용한 js만들기


파일이름: hello_express.js



$node hello_express.js


웹 페이지 확인




HTTP 요청 메소드 GET, POST, PUT, DELETE 등 간단하게 구현 가능




express에서 템플릿을 사용하면 기존 jsp 서버처럼 HTML을 동적으로 생성할 수 있다.


EJS(Embedded javascript)

- 자바스크립트로 동적인 웹페이지 생성을 도와준다.


Express JS 자동 생성 툴 활용

$sudo npm install -g express-generator        //전역 설치로 해야된다.

<테스트폴더>$express --ejs        //--ejs 옵션으로 뼈대 생성

<테스트폴더>$npm install          //package.js에 정의된 모듈 설치


설치된 화면의 모습이다.


$node /bin/www


웹페이지 접속(ip:3000)






$vi www 의 일부 모습



위의 페이지를 변경하고 싶으면

$vi /views/index.ejs


위의 페이지에서 원하는대로 수정하면 된다.

<% %> 태그 안에 자바스크립트 사용 가능

즉 <%= 변수 %> 사용 가능




위의 title의 경우 Express라는 말이 어디 나와있지??

$vi ../routes/index.js



res.render('index', {title: 'Express' }); 확인 가능










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

Linux Personal repository 만들기  (0) 2015.10.22
vmware ubuntu disk 확장(sda1)  (7) 2015.10.22
npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08

npm(Node Packaged Modules)이란 node.js로 만들어진 모듈을 설치해주는 패키지 매니저이다.

이전강좌에서 node-<버전>-tar.gz를 설치하고 컴파일했다면 npm도 자동으로 설치된다.

(http://kkn1220.tistory.com/44)


$npm -h


위의 버전 1.2.21은 예전 사진으로 인해 지금 버전과 상이함


패키지 설치

npm command에는 apt-get install 과 같이 npm install 형식으로 설치할 수 있다.

<전역 설치> /usr/local/node-modules

$npm install -g <pkg>

<지역 설치>

$npm install <pkg>


패키지 삭제

$npm remove <pkg>

$npm uninstall <pkg> // 저역 설치 제거 시 -g


패키지 업데이트

$npm update <pkg>









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

vmware ubuntu disk 확장(sda1)  (7) 2015.10.22
npm express, EJS 사용하기  (0) 2015.09.09
ubuntu node.js 설치  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
위키백과에 따르면

Node.js는 확장성 있는 네트워크 어플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.

Node.js는 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.

Node.js는 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.

라고 소개하고 있다.



Node.js 설치


1.직접 설치 

$sudo apt-get update

$sudo apt-get upgrade

$sudo apt-get install build-essential libssl-dev

$wget http://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz    (2015년 9월 9일 현재 최신 버전)

$tar -zxvf node-v0.12.7.tar.gz

$./configure

$make -j 3    //꽤 오래 걸리기 때문에 자신의 cpu코어 * 1.5 정도로 해주면 job을 공유하기 때문에 빠르다

$sudo make install


2. 배포판 설치(데비안 계열)

$wget http://node-arm.herojuapp.com/node_latest_armhf.deb

$sudo dpkg -i node_latest_armhf.deb


Hello world 테스트

아무곳에서 만들어도 상관없음

hello.js 파일 생성

$vi hello.js        //위키백과 소스코드

wq! 를 해서 저장을 한 후

$node hello.js


command화면에는

Server running at http://127.0.0.1:8000/        //라고 출력된다.


웹에서 위의 주소와 포트를 입력하면



코드 몇줄로 hello,world 를 띄우는 것을 확인할 수 있다.


node.js를 통해 서버를 구축 할 계획이다.



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

npm express, EJS 사용하기  (0) 2015.09.09
npm(Node Packaged Modules)  (0) 2015.09.09
ubuntu(우분투) rapidsvn 설치  (0) 2015.09.08
우분투 svn 설치  (0) 2015.09.03
vmware take ownership 문제  (0) 2015.08.20

+ Recent posts