dd command를 이용한 리눅스 시스템 전체를(디스크 전체 혹은 파티션 전체를) 부팅 가능 USB로 복사하기

(Ubuntu를 중심으로)


리눅스를 사용하다보면 현재의 시스템 설정상태, 현재 설치되어있는 각종 패키지들의 그 상태 그대로 시스템 전체를 백업 받을 일이 종종 발생한다.


시스템 해킹에 대한 복구 차원에서도 현재의 시스템 그대로를 복제해 두는 일은 필요하다.

또한 리눅스를 탑재한 임베디드 시스템의 경우 해당 시스템이 가동되는데 필요한 패키지들이 다 설치된 상태 그대로 제품 양산시 SD card에 그대로 시스템을 복제해야 할 경우등에도 꼭 필요한 작업이 디스크 전체(현재의 리눅스 시스템 전체)를 복제하는 일이다.


특별히 임베비디 장비의 경우 리눅스가 최신 버전이 설치되기 보다는 옛날 버전을 설치하는 경우가 흔한데 이렇게 구 버전의 리눅스 시스템의 경우 필요한 패키지들을 설치하는 작업이 여간 번거러운 작업이 아니다.

게다가 시스템 architecture가 흔히 쓰는 경우가 아닐경우는 정람 패키지 설치 작업이 난감한 경우들이 있다.

이럴 경우 설치 패키지들을 다운 받아서 off-line 상태에서 dpkg를 이용해 설치하는 궁여지책을 쓰는 경우도 있지만 그러나 이것도 제품 양산을 염두에 둔다면 그렇게 쓸모가 좋은 모양새는 아니다.

그래서 현재의 리눅스 시스템 전체(디스크 전체)를 복제하는 것이 매유 요긴해 진다.

그런데 이런 기능을 제공해주는 툴들이 리눅스는 매우 다양하다.

remastersys, genisoimage, partimage, gnome-disks, clonezilla... 

그런데 이런 툴들도 구버전 리눅스 시스템에서는 아예 설치가 안되는 경우도 있고 어떤 건 구버전에서만 기능이 동작하는 경우도 있는 등 쉽지 않는 작업이다.

리눅스 자체가 한 회사에서 만든 Windows와 달리 수 많은 사람들에 의해서 만들어지다 보니 그럴수 밖에 없다.


아무튼 구버전, 신버전 등 가리지 않고 위의 목적을 달성할수 있는 아주 좋은 command가 다름아닌 dd이다.

명령어 같지 않게 생긴 강력한 명령어가 dd이다.

dd는 원래는 Data Duplicator를 뜻하는 명령어인데 이걸 잘못 사용하면 디스크 자체를 통체로 날려먹는 경우들이 있어 Disk Destroyer라는 별명이 붙을 있을 정도이다.


dd command는 리눅스 시스템 차원에서의 command이기 때문에 별도의 패키지를 설치할 필요가 없다.

dd가 할수 있는 기능은 다양하다. 그러나 본 포스트에서는 아래의 미션을 위한 것으로 한정하고자 한다.


-. 임베디드 시스템의 현재의 설치된 패키지, 현재의 설정된 시스템 상태 그대로를 USB 메모리에 복제를 한다.


-. 복제된 USB 메모리는 부팅이 가능해야 한다.


-. 복제된 USB 메모리를 동일한 임베디드 보드에 꽂으면 해당 임베디드 보드도 부팅시 현재의 리눅스 시스템과 모든 조건이 동일한 시스템으로 동작이 되어야 한다.


작업을 위해 필요한 조건 혹은 필요한 상태


-. 임베디드 시스템에 USB 외부 메모리가 mount되어 있다. 이곳에 시스템 복제본이 저장될 공간이다.

   (외부 USB 메모리 마운트는 Disk Utility라는 기본 설치된 프로그램을 실행해서 해도 된다. 혹은 터미널 창에서 마운트를 해도 된다)


dd command 기본 사용법


# dd if=복제할_대상이_되는_디스크_장치_이름 of=복제본을_저장할_마운트된_USB_장치의_이름 bs=복사속도


위의 옵션들에 들어갈 정보는 fdisk -l 명령어를 통해서 확인할수 있다. 이 명령어의 결과는 다음과 같은 정보들이 표시된다.


root@joe-VirtualBox:/home/joe/다운로드# fdisk -l

Disk /dev/sda: 30.2 GiB, 32377438208 bytes, 63237184 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0xe46ece9d


Device     Boot    Start      End  Sectors  Size Id Type

/dev/sda1  *        2048 54849535 54847488 26.2G 83 Linux

/dev/sda2       54851582 63236095  8384514    4G  5 Extended

/dev/sda5       54851584 63236095  8384512    4G 82 Linux swap / Solaris



Disk /dev/sdb: 3.8 GiB, 4009754624 bytes, 7831552 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0x04831162


Device     Boot  Start     End Sectors  Size Id Type

/dev/sdb1  *        63  262207  262145  128M  c W95 FAT32 (LBA)

/dev/sdb2       262208 6291455 6029248  2.9G 83 Linux


위 정보를 보면 2개의 디스크가 현재 리눅스 시스템에 마운트 되어 있음을 알수 있다.

여기서 주목해야할 정보는 

첫 번째 디스크의 장치명과 용량은 

Disk /dev/sda: 30.2 GiB ...

-. 장치명 : /dev/sda

-. 용량 : 30.2 Gb

-. partition 정보 : sda1, sda2, sda5


두 번째 디스크의 장치명과 용량은 

Disk /dev/sdb: 3.8 GiB

-. 장치명 : /dev/sdb

-. 용량 : 3.8 Gb

-. partition 정보 : sdb1, sdb2


아무튼 위의 정보들로부터 dd에서 사용하게 될 정보들이 다 나와있다.

dd의 if는 Input File의 약자이고 of는 Output File의 약자이다.

우리는 현재의 리눅스 시스템이 설치되어 있는 디스크인 /dev/sda에 있는 모든 것들을(부팅 영역까지) /dev/sdb에 복제를 하고자 한다.


# dd if=/dev/sda of=/dev/sdb bs=64K


이렇게 하면 USB 메모리에 완전한 형태로의 시스템이 그대로 복제되었다.



Ubuntu 12.04에서 부팅시 사용자 프로그램을 자동실행되도록 등록하기


/etc/profile.d/ 아래에 부팅시 자동 실행시키기 위한 shell script를 만들어 두면 부팅시 해당 프로그램이 자동으로 실행이된다.

(자세한 방법은 여기로)


그런데 Ubuntu 12.04에서의 경우는 위의 방법으로 자동실행이 되지 않는다. 이 경우에 대한 해법이다.


~/.config/autostart/ 


여기서 ~는 리눅스 시스템에 로그인한 사용자의 홈 디렉토리를 의미한다. 

만일 kim으로 로그인했으면 ~는 /home/kim/을 의미한다.

그런데 /home/kim/.config/ 아래에 autostart라는 디렉토리가 없을수도 있다. 

이때는 autostart 디렉토리를 만들어서 자동실행을 위한 xxx.desktop 파일을 만들면 된다.


~/.config$ mkdir autostart


위 autostart 디렉토리에 임의의 xxx.desktop이라는 파일을 만들어서 자동 실행하기를 원하는 프로그램을 등록하면 부팅시 정상적으로 auto start가 된다.

이때 xxx.desktop의 내용은 다음과 같이하면된다.


[Desktop Entry]

Type=Application

Name=MyPythonTest    ===> 이 이름은 사용자가 원하는 이름으로 표시하면 된다.

Exec=/root/Downloads/PyCharmProj/MySomething.py  ===> 실행하기 원하는 프로그램 등록

X-GNOME-Autostart-enabled=true


물론 MySomething.py에 대한 필요한 코드와 권한 관련은 여기를 참조(링크)



Linux Ubunt에서 특정 python 프로그램을 부팅 시점에 자동으로 실행하는 방법


1) /etc/profile.d 디렉토리 안에 자동실행 시키고자 하는 프로그램을 위한 쉘 스크립트를 작성한다.

예를 들어 /home/joe/xxx/FrameMove.py를 부팅시 자동 실행시키고자 하다면 /etc/profile.d안에 임의의 

쉘 스크립트를 작성만 해 두면 된다. 그러면 부팅시 /etc/profile.d안에 있는 쉘 스크립트들을 자동으로 실행한다.

   ex)  kkk.sh

        #!/bin/bash

        /home/joe/xxx/FrameMove.py


와 같이 쉘 스크립트를 작성한다.

     

2) python의 소스 코드의 첫 줄에 다음 내용을 추가한다.

   #!/usr/bin/env python


3) 실행하고자 하는 프로그램의 권한을 실행가능 형태로 권한 변경을 한다.

  ex) chmod 777 FrameMove.py


4) 저장장치에 저장되어 있는 파일들을 읽는 것과 같은 코드의 경우는 해당 파일의 절대 경로로 지정해 주어야 자동실행시 문제 없이 동작한다.

예를 들어 


img = Image.open('lenna.bmp')


와 같이 하면 터미널 창에서

python FrameMove.py와 같이 실행시는 문제 없이 실행되나(물론 lenna.bmp가 FrameMove.py와 같은 디렉토리에 있다고 할 경우)

그러나 자동실행의 방식에서는 lenna.bmp의 절대 경로를 명확히 지정해 줘야 자동실행이 가능하다. 아래와 같이 


img = Image.open('/home/joe/xxx/lenna.bmp')


5) 파일 저장을 위해 실행 경로의 권한을 쓰기 권한 부여.

만일 FrameMove.py에서 img.save("ccc.bmp")와 같이 파일을 저장하는 코드가 있다면 아마도 자동실행이 멈추면서 IOError: [Errno 13] Permission denied:라는 에러를 발생 시킬것이다.

이를 위한 해법으로 가장 단순한 방법은 FrameMove.py가 파일을 저장하는 경로의 모든 디렉토리들의 쓰기 권한을 부여하는 방법이다.

예를들어 /aaa/bbb/ccc/에 FrameMove.py가 img.save("ccc.bmp")의 동작을 한다면 aaa, bbb, ccc 디렉토리의 쓰기권한을 부여해주어야 한다.

chmod 777 aaa 

와 같이하면 자동 실행에서의 발생할수 있는 권한 문제를 해결할수 있다.



Linux에서 필요한 작업을 위해 필요한 패키지들을 설치하는 일이 윈도우와는 달리 상당히 번거롭고 혹은 까다롭고 심지어는 불가능할수도 있다.

가장 대표적으로는 apt-get install some_package_name

으로 설치가 되는 경우는 Linux 버전이 최신 버전이거나 사용하는 cpu가 통상적으로 많이 사용되는 경우들이다. 이런 경우는 repository에 해당 패키지가 있기 때문에 쉽게 설치가 된다.

동일한 Ubuntu에서도 CPU architecture가 다를 경우는 역시 설치에 문제가 많이 발생한다.


우선 사용중인 Linux가 어떤 종류인지 확인해 보자. 명령어는

# grep . /etc/*-release


다음과 같이 리눅스 종류와 버전 정보가 나타난다.

아래의 경우는 Ubuntu 16.04인 경우이다.


/etc/lsb-release:DISTRIB_ID=Ubuntu

/etc/lsb-release:DISTRIB_RELEASE=16.04

/etc/lsb-release:DISTRIB_CODENAME=xenial

/etc/lsb-release:DISTRIB_DESCRIPTION="Ubuntu 16.04.3 LTS"

/etc/os-release:NAME="Ubuntu"

/etc/os-release:VERSION="16.04.3 LTS (Xenial Xerus)"

/etc/os-release:ID=ubuntu

/etc/os-release:ID_LIKE=debian

/etc/os-release:PRETTY_NAME="Ubuntu 16.04.3 LTS"

/etc/os-release:VERSION_ID="16.04"

/etc/os-release:HOME_URL="http://www.ubuntu.com/"

/etc/os-release:SUPPORT_URL="http://help.ubuntu.com/"

/etc/os-release:BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

/etc/os-release:VERSION_CODENAME=xenial

/etc/os-release:UBUNTU_CODENAME=xenial


다음은 리눅스 커널이 몇 bit인지를 확인해 보자


# getconf LONG_BIT


이 경우 32bit인경우 32, 64bit인 경우는 64의 값을 출력해 준다.


다음은 사용중인 cpu architecture가 무엇인지를 알아보자


# dpkg --print-architecture


여기서 amd64, i386, armhf 등의 해당 정보가 표시된다.

이러한 정보들을 가지고 패키지가 정상적으로 설치되지 않을 경우 활용할수 있는 정보들이다.

repository를 추가해서 설치하거나, 소스를 다운로드 받아서 새롭게 컴파일하는 등의 방법이 있으나 본 포스트에서는 Ubuntu(Debian 계열)의 경우 해당 버전, architecture등에 맞는 설치 패키지들이 잘 준비가 되어 있고 이것을 그냥 다운로드 받아서 dpkg라는 패키지 설치 명령어로 설치하는 방법에 대해서 정리하고자 한다.


참고로 repository를 추가하는 방법은


vi  /etc/apt/sources.list 파일을 열어서 해당 repository를 추가 및 저장한 후


# apt-get update를 한 후 apt-get install로 해당 패키지 설치를 시도해 보면 된다.


아래 사이트는 Ubuntu와 같은 Debian 계열의 각종 리눅스 종류와 버전들, 각종의 programming language들에 필요한 대한 매우 다양한 종류의 설치 패키지(.deb)가 잘 마련되어 있다. 


https://packages.debian.org/sid/


예를 들어 Python에서 사용할 Kivy 패키지를 찾고자 한다면 웹브라우저 상의 Ctrl-F로 Python을 찾는다. 찾아진 Python 항목을 클릭해서 들어가면 다음과 같은 웹 페이지가 열린다.


https://packages.debian.org/sid/python/


이 페이지에서 역시 Ctrl-F로 Kivy 항목을 찾는다. 그러면 다음과 같은 항목들이 있을 것이다.


python-kivy (1.9.1-1+b1 [alpha, amd64, arm64, armel, armhf, hppa, hurd-i386, i386, kfreebsd-amd64, kfreebsd-i386, m68k, mips, mips64el, mipsel, powerpc, powerpcspe, ppc64, ppc64el, s390x, sparc64, x32], 1.9.1-1 [sh4])

Kivy - Multimedia / Multitouch framework in Python (Python 2)


python-kivy-examples (1.9.1-1)

Kivy - Multimedia / Multitouch framework in Python (examples)


여기서 python-kivy를 설치하고자 할경우 위의 첫 번째 항목을 클릭해서 들어가면 해당 패키지에 대한 설명과 관련 의존성 패키지들(dependency packages)이 모두 나와 있고 아랫쪽에 내려가면 python-kivy에 대한 Architecture별로 다운로드 받을수 있도록 목록이 나와있다.

해당 architecture를 선택해서 들어가면 다운로드 받을수 있는 ftp들 목록이 나온다. 원하는 목록에 대해 마우스 우측 클릭해서 해당 경로의 url 주소를 가지고 Linux에서 wget을 이용해서 다운로드 받은후(xxx.deb) dpkg로 설치하면 된다.


wget http://ftp.kr.debian.org/debian/pool/main/k/kivy/python-kivy_1.9.1-1+b1_armhf.deb 


혹은 리눅스의 웹브라우저로 위의 사이트에 들어가서 직접 다운로드 해도 된다.

설치는 다음과 같이


dpkg -i python-kivy_1.9.1-1+b1_armhf.deb 


리눅스의 경우 패키지 설치는 매우 다양한 변수들에 영향을 받는다. 따라서 상황따라 대처해야 하는수 밖에 없다.




Ubuntu Linux에 packages들을 offline에서 설치하기


apt-get install로 패키지들을 설치할 경우 해당 패키지는 

일단 /var/cache/apt/archives/에 다운로드 되서 설치가 된다.

이때 다운로드 될 때 특정 패키지와 의존성(dependency)있는 패키지들까지 같이 다운로드 되어서 설치가된다.

따라서 우리가 인터넷이 되지 않는 장비나 shell script를 이용해서 일괄적으로 여러 장비들에 필요한 패키지들을 설치해야 할 경우 등에 이 방법을 사용하면 된다.


우선 VirtualBox와 같은 가상 머신에 실제 장비와 같은 환경의 Linux 버전과 가능하다면 같은 architecture, 같은 커널의 bit와 동일한 환경을 만든다.

이 상태에서 apt-get install을 이용하여 필요한 모든 패키지들을 설치를 한다.


그 후 /var/cache/apt/archives에 있는 패키지들을 tar -cvf xxx.tar /var/cache/apt/archives/와 같이 압출을 한다.

이렇게 압축된 파일을 offline상의 디바이스에 복사해서 옮긴다(당연히 압축은 푼다).


압축을 푼 디렉토리에 가서 다음의 명령으로 모든 패키지들을 일괄적으로 설치를 한다.


# dpkg --force-all -i *.deb


위 명령은 의존성을 무시하고 강제로 특정 패키지를 설치하는 형태인데 이렇게 해도 괜찮은 이유가 압축을 푼 모든 *.deb 패키지들이 모든 의존성 패키지들을 다 담고 있는 것이기 때문에 다 설치가 되면 모든 의존성까지 다 해결된 상태로 설치가 될것이기 때문이다.

여러 임베디드 장비에 설치해야 할 경우등에 응용하면 될 것이다.




리눅스에서 터미널을 여러개 띄워놓고 작업을 할 경우 마우스로 드래그해 가면서 창의 크기를 조절해서 화면분할해 가면서 사용해야 하는 불편함이 있다.

이를 보다 간편하게 해결할수 있는 기능이 탭 기능이다.


Ctrl-Shift-T를 하면 현재의 터미널 상에서 새로운 탭(크롬과 같은 웹 브라우저에서 새 탭에서 웹 페이지 여는 것과 같은...)이 생기면서 새로운 터미널 창을 열수 있다.

이렇게 여러개의 탭으로 터미널을 열면 작업하기가 무지 편해 진다.




탭 간의 이동은

 -. Alt + 1/2/3... 으로 각 탭으로 이동하는 방식과

 -. Ctrl + PageUp/PageDown으로 각 탭으로 이동하는 방식이 있다.

위의 방식이 보다 쉬운 방식이리라...


현재 탭 닫기는

Ctrl + Shift + w





몇 가지 리눅스 명령어


1) getconf LONG_BIT

 -. 현재의 리눅스 시스템이 32비트인지 64비트인지 확인

 -. 예) # getconf LONG_BIT


리눅스 상에서 가끔 실행파일을 실행시켜 보면 "cannot execute binary file: Exec 형식 오류"과 같은 에러가 발생할수가 있다. 이건 리눅스가 32비트인데 64비트 실행파일을 실행하고자 할때의 경우에 발생한다.


2) wget

 -. http, https, ftp 프로토콜을 이용하여서 웹에 있는 특정 파일을 다운로드

 -. 예) wget http://www.som.co.kr/qt-opensource-linux-x64-5.8.0.run


리눅스의 웹 브라우저등으로 웹 상의 파일을 다운로드 할수도 있으나 부득이 터미널 창에서 웹의 파일을 다운로드 받아야 할 경우 wget으로 편리하게 다운로드 받을수 있다.


3) apt-cache pkgnames | grep 패키지_이름

 -. 현재의 리눅스에 설치되어 있는 패키지 프로그램을 찾고자 할 때 사용

 -. 예) apt-cache pkgnames | grep wget

        (wget이 설치되어 있는지 확인할수 있다)


4) lpq 

 -. 프린트 큐에 있는 작업의 목록을 보여주는 명령어

 -. 예) lpq

         EPSON-L365-Series is ready

         no entries


5) cat /proc/cpuinfo

-. cpu에 대한 전체적인 정보가 나온다.


6) dpkg --print-architecture

-. Linux Kernel architecture 확인

-. 여기서 나오는 정보는 amd64, arm64, armhf, i386 등의 정보가 나온다.


7) ls -sh

-. 파일 목록을 보여줄때 파일 사이즈를 Kb, Mb의 형식으로 표시(파일이름과 사이즈 정보만 표시됨). 디폴트는 byte단위로 표시됨

-. 여기서 s는 size, h는 human readable형식을 뜻한다.

-. 만일 자세한 정보를 같이 표시할려면 ls -lsh







우분투는 최초 설치 후 기본적으로 root 계정으로 접속할수 없다. root 계정은 만들어져 있으나 암호 설정이 되어 있지 않다. 이럴 때 우분투 초기 설치후 root 계정의 비밀번호를 생성해 주면 된다.

방법은 다음과 같이...


$ sudo passwd root

[sudo] password for 현재로그인한사용자: <여기에서 현재 로그인한 사용자의 비번을 입력한다>

새 UNIX 암호 입력 : <여기에 root 비번입력>

새 UNIX 암호 재입력 : <여기에 root 비번 다시 입력>

passwd: 암호를 성공적으로 업데이트했습니다.


$ su

암호: <여기에 root 비번 입력>


root@.... # 


위와 같이 prompt가 #로 바뀌면 root 계정으로 정상적으로 로그인한 것이다.




apache 포트 변경 및 웹 루트 변경하기


(1) CentOS


CentOS의 경우 apache 포트 번호 변경은 

/etc/httpd/conf/httpd.conf 파일을 열어서


Listen 80


과 같이 되어 있는 번호를 원하는 포트 번호로 변경하면 된다.

변경 후 apache를 재구동해 준다.


# service httpd restart


웹 루트 디렉토리 변경

/etc/httpd/conf/httpd.conf 파일을 열어서


DocumentRoot "/var/www/html"


과 같이 되어 있는 부분을 원하는 경로로 변경해 주면 된다. 다음과 같이..


DocumentRoot "/var/www/myhome"


변경 후 apache를 재구동해 준다.


# service httpd restart



(2) Ubuntu


우분투의 경우 apache 포트 번호 변경은


/etc/apache2/ports.conf 파일에서 


Listen 80


으로 되어 있는 부분을 원하는 포트 번호로 변경하면 된다.

변경 후 apache를 재구동해 준다.


# service apache2 restart


웹 루트 디렉토리 변경은

/etc/apache2/sites-available/000-default.conf 파일을 열면


DocumentRoot /var/www/html


과 같이 되어 있을 것이다. 디폴트 웹 루트 디렉토리이다. 이 디렉토리에 index.html과 같은 웹 페이지를 작성해 두면 http://xxx.xxx.xxx.x/index.html로 접근하는 경로이다.

그런데 /var/www/html을 /var/www/myhome으로 변경하고자 한다면

DocumentRoot /var/www/myhome으로 변경한 후 apache를 재 구동해 주면 된다.


# serivce apache2 restart



※ CentOS 기준.

리눅스가 네트워크 설정이 갑자기 다 지워져 버린 경우가 있다.
ifconfig에서 inet, inet6, netmast, broadcast 등에 대한 정보 자체가 전혀 나오지 않는 경우,
그리고 route 명령어에서 라우팅 테이블에 아무런 값도 안 나오는 경우,
reboot을 해봐도 동일한 현상일 경우가 있다.
이런 경우 여러가지 이유가 있겠으나 이럴 때는 네트워크 장비(랜카드)가 disable 되어 있을 때 나타나는 상황이다.

우선 확인해 봐야 할 내용은
/etc/sysconfig/network-scripts 디렉토리 아래에 랜카드의 설정 파일이 있다. 설정 파일 이름은 ifconfig를 했을 때 나온 이름을 참조하면 된다.
만일 enp0th라는 랜카드라면 설정파일은 ifcfg-enp0th로 되어 있을 것이다. 
이것을 열어보면 예를들어

TYPE=Ethernet 
   ⇒ 유선으로 연결되어 있다는 뜻
BOOTPROTO=dhcp  
   ⇒ 여기에 올수 있는 값은 static/dhcp/none
   ⇒ static : 고정 IP 할당
   ⇒ dhcp : 유동 IP를 자동으로 할당 받겠다.
DEFROUTE=yes
   ⇒ 디폴트 라우트 사용여부
PEERDNS=yes 
   ⇒ 자체 DNS 사용여부
   ⇒ dhcp 서버의 라우터 정보를 /etc/resolv.conf에 저장 여부
PEERROUTES=yes
   ⇒ dhcp 서버의 라우터 정보를 /etc/sysconfig/network에 저장 여부
IPV4_FAILURE_FATAL=yes
   ⇒ 설정이 실패했을 때 IPv6 사용여부(yes:사용, no:불사용)
IPV6INIT=yes
   ⇒ IPv6사용 여부
NAME=enp0sth
   ⇒ NIC 이름
ONBOOT=yes
   ⇒ 부팅시 네트워크 장비(랜카드) 자동 활성화 여부

여기서 ONBOOT=no로 되어있을 경우 위와 같은 문제가 발생한다.
vi로 이 설정파일을 열어서 ONBOOT=no로 되어 있는 것을 ONBOOT=yes로 변경해 주고 파일을 저장한다.

이후 재 부팅할수도 있으나 네트워크 장비를 재시작해 주는 간단한 방법으로 네트워크가 정상 가동되게 할수 있다.
다음 명령을 실행하면 모든 네트워크 설정이 정상으로 동작한다.

root]# /etc/init.d/network start(혹은 restart)




+ Recent posts