CentOS에서 rsync 데몬을 설정하려면 우선 /etc/rsyncd.conf 파일에 아래와 같은 내용을 추가한다.

(모든 작업은 superuser 권한으로 수행해야 한다.)


[NAS] # 원하는 이름을 자유롭게 지정

path = /home/backup # 파일이 저장될 위치를 절대 경로로 지정

hosts allow = 10.0.0.30 # 접속을 허용할 호스트의 주소를 지정 (여러 호스트를 지정하는 경우는 ,로 구분한다.)

hosts deny = *

list = true

uid = root

gid = root

read only = false


수정이 완료되면, rsync 데몬을 구동한다.

(재시작의 경우 start 대신 restart를 사용한다.)


 > systemctl start rsyncd.service


시스템 재부팅 시에도 적용하려면 아래와 같은 명령을 실행한다.


 > systemctl enable rsyncd.service


<출처: http://www.server-world.info/en/note?os=CentOS_7&p=rsync>

Posted by 물빛바다
:

CentOS 7에서 호스트 이름을 바꾸려고

/etc/sysconfig/network 를 생성해서 내용을 입력했지만,

호스트 이름이 변경되지 않았다.


그래서 찾아보니 호스트 이름 변경하는 방법이 아래처럼 바뀌었다고 한다.

(아래 모든 명령은 superuser 권한으로 실행해야 한다.)


 > hostnamectl set-hostname 호스트이름


이렇게 호스트 이름을 변경하고 hostname 명령으로 변경된 이름을 확인할 수 있고,

(이 정보는 /etc/hostname 에 저장된다.)

재부팅 후에도 변경된 호스트 이름이 사용되는 것을 확인할 수 있다.


 > reboot -n


또는


 > init 6


로 재부팅할 수 있다.

Posted by 물빛바다
:

여러가지 이유로 원격에서 GDB를 이용한 디버깅이 필요할 때가 있다.


내 경우에는 TSIM이라는 시뮬레이터를 이용하고 있는데,

이 시뮬레이터에서 디버깅을 수행하려면 GDB의 원격 디버깅 기능을 이용해야 한다.


원격 디버깅을 위해서는 타겟에서 동작하는 GDB 서버와 호스트에서 동작하는 GDB가 필요하다.

개념은 간단한데, 타켓에 GDB 서버를 돌리고, 호스트에서 그 서버로 연결한 뒤, 호스트에서 GDB 명령을 이용해 디버깅하는 것이다.


우선 일반적인 GDB 서버 설정은 다음과 같다(고 한다).


타겟용으로 컴파일된 gdbserver를 타켓에서 아래와 같이 실행한다.


 target> gdbserver comm program [ args ... ]


예를 들어, TCP 12345 포트를 이용해 test라는 프로그램에 인자를 2개 주고 실행한다고 하면...


 target> gdbserver host:12345 test arg1 arg2


라고 실행하면 된다.


이렇게 동작시킨뒤 호스트에서는 아래와 같이 실행해 gdbserver에 연결 및 실행한다.


 host> gdb

(gdb) target remote [target IP address]:12345

(gdb) load test

(gdb) file test

(gdb) c


target remote 명령은 타겟의 gdbserver에 연결하라는 것이고,

load는 타켓에 test라는 바이너리를 로딩하는 것이며,

file은 test의 심볼들을 지금 gdb와 매핑해서 사용하겠다는 것이다.

실제 실행은 r(un)이 아니라 c(ontinue)를 이용한다.

(target cpu가 host cpu와 다른 경우는 gdb 대신 arm-linux-gnueabi-gdb, sparc-rtems-gdb 등과 같이 해당 CPU와 관련된 gdb를 실행해야 한다.)


이들을 이용하면 기본적인 디버깅은 가능하며, 이 외에도 시리얼을 이용해 타켓과 호스트를 연결한다던지,

동작중인 프로세스를 디버깅한다던지 하는 다양한 기능들이 제공된다.

(아래 출처를 참고하기 바란다.)


내 경우는 타켓이 시뮬레이터이기 때문에 gdbserver를 실행하기 어려운데,

TSIM에는 gdbserver 기능을 내장하고 있어서 별도의 gdbserver를 실행하지 않고 아래와 같이 실행해 원격 디버깅을 할 수 있다.


 host> tsim -gdb


gdb는 아래와 같이 실행하여 연결한다.


 host> sparc-rtems-gdb

(gdb) target remote :12345


<출처: https://sourceware.org/gdb/onlinedocs/gdb/Server.html>


꼬랑쥐 - TSIM에서만 활용했기 때문에 첫번째의 gdbserver를 이용한 방법은 시험해보지 않았다.

Posted by 물빛바다
:

gcc (또는 g++)을 사용하다 보면 컴파일러에 내장된 기본 매크로(default macros)의 값을 보고 싶을 때가 있다.


그럴 땐, 아래와 같은 명령을 사용하면 된다.



 > gcc -dM -E - < /dev/null



Posted by 물빛바다
:
일을 하다 보면
쉘에서 프로그램을 실행시키고,
그 프로그램이 반환하는 값(return)을 출력하고 싶을 때가 있다.

헌데 이게 쉽지가 않다....-_-;;;
쉘 스크립트도 만들어보고,
프로그램도 짜 보고,
별별 짓을 다 해봤는데,
만족할만한 결과를 얻을 수가 없었다.

그.런.데.....
아주 손쉬운 방법이 있었으니......-_-;;;;

리눅스 상에서는
프로그램을 실행시킨 후
종료된 뒤
바로 다음과 같이 실행하면
해당 프로그램의 반환 값을 출력할 수 있다.

  > echo $?

윈도우(도스)에서는 다음과 같다.

  > echo %errorlevel%
Posted by 물빛바다
:
※ 이 글은 VirtualBox 2.1.2을 기준으로 작성되었습니다.

VirtualBox에 Fedora10을 설치하고
guest 확장을 설치하기 위해서는 몇가지 package가 필요하다.

일단,
gcc 및 관련 package(glibc 등),
make,
(필요시) 최신 version의 kernel 및 kernel source 등.

각각은 다음과 같이 설치할 수 있다.

gcc 및 관련 package (glibc, glibc-common, binutils, glibc-devel, glibc-headers, kernel-headers, libgomp).

 > yum install gcc

make.

 > yum install make

(필요시) 최신 version의 kernel 및 kernel source.
이 경우 설치 후에는 최신 kernel이 동작해야하므로,
재시작을 해야한다.

 > yum update kernel
 > yum update kernel-devel
 > reboot

재시작이 완료되면,
guest 확장 설치를 위해
VirtualBox의 window에서
[장치(D)] - [게스트 확장 설치(I)...]을 선택하고,
Fedora상에서 아래와 같이 실행한다.
(AMD CPU를 쓰는 PC의 경우,
VBoxLinuxAddtions-x86.run 대신
VBoxLinuxAddtions-amd64.run을 실행해야할 것으로 보인다.)

 > /media/VBOXADDITION_2.1.2_41885/VBoxLinuxAdditions-x86.run

실행이 성공적으로 종료되면 아래와 같은 메시지가 출력된다.

Verifying archive integrity... All good.
Uncompressing VirtualBox 2.1.2 Guest Additions for Linux installation..........................................................................................................................................................................................................
VirtualBox 2.1.2 Guest Additions installation
Building the VirtualBox Guest Additions kernel module...
Building the shared folder support kernel module...
Installing the VirtualBox Guest Additions...

Successfully installed the VirtualBox Guest Additions.
You must restart your guest system in order to complete the installation.

이후에는 guest 확장 설치가 적용될 수 있도록
system을 재시작한다.

 > reboot

재시작 후에는 한가지 문제가 발생한다.
아마 Fedora9까지는 발생하지 않았던 문제인 듯 싶은데,
(확인해보지 않아서 정확하지는 않다. VirtualBox 2.1.2가 문제일 수도 있다.)
Fedora10에서는 유독 기형(?)적인 해상도 문제를 접하게 된다.

기본적으로 설정되는 해상도는 720x400.
이 해상도에서는 일반적인 작업이 쉽지가 않다.
(최소 800x600은 되야 작업하기가 수월하다.)

따라서 해상도를 변경해야하는데,
Fedora에서는 화면 설정과 관련된 부분이 /etc/X11/xorg.conf에 저장된다.
따라서 해당 파일의 내용을 변경하면 되는데,
일단 원본은 다음과 같다.

# Default xorg.conf for Xorg 1.5+ without PCI_TXT_IDS_PATH enabled.
#
# This file was created by VirtualBox Additions installer as it
# was unable to find any existing configuration file for X.

Section "Device"
        Identifier      "VirtualBox Video Card"
        Driver          "vboxvideo"
EndSection

원본에 붉은 글씨의 내용을 추가한 뒤
재시작하면 적정 해상도의 화면을 접할 수 있다.

참고로 해상도 정보는 Modes 뒤에 적을 수 있으며,
처음 위치한 해상도가 기본 해상도로 설정된다.
권장하는 값은 "1280x1024", "1024x768", "800x600" 정도...

# Default xorg.conf for Xorg 1.5+ without PCI_TXT_IDS_PATH enabled.
#
# This file was created by VirtualBox Additions installer as it
# was unable to find any existing configuration file for X.

Section "Device"
        Identifier      "VirtualBox Video Card"
        Driver          "vboxvideo"
EndSection

Section "Screen"
        Identifier         "Screen0"
        SubSection      "Display"
                Modes    "1024x768" "800x600"
        EndSubSection
EndSection

Posted by 물빛바다
:

TFTP Server 설정

Linux 2009. 2. 11. 13:49 |
※ 이 글은 Fedora10을 기준으로 작성되었습니다.

Fedora10을 기준으로 작성되었지만,
다른 Fedora 배포판도 큰 차이는 없을 것이다.

우선 TFTP Server와 관련된 파일을 설치한다.
(이미 설치된 경우는 무시한다.)

 > yum install tftp*

정상적으로 진행되는 경우,
tftp, tftp-server, xinetd가 설치된다.

설치가 완료되면
TFTP 설정 파일을 변경한다.

 > vi /etc/xinetd.d/tftp

원 파일 내용은 아래와 같다.

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        disable                = yes
        socket_type          = dgram
        protocol               = udp
        wait                     = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args          = -s /var/lib/tftpboot
        per_source           = 11
        cps                     = 100 2
        flags                   = IPv4
}

TFTP를 실행하기 위해서는
disable을 no로 변경해야한다.

또한 TFTP를 통해 전송될 파일들이 저장되는 위치는
server_args를 통해 지정되므로,
이 곳을 적당히 바꿔준다.

내 경우는 보통 /tftpboot 에 저장하므로
설정 파일은 아래와 같이 변경한다.

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        disable                 = no
        socket_type           = dgram
        protocol                = udp
        wait                      = yes
        user                     = root
        server                   = /usr/sbin/in.tftpd
        server_args           = -s /tftpboot/
        per_source            = 11
        cps                      = 100 2
        flags                     = IPv4
}

변경이 완료되면,
TFTP 서비스를 시작하기 위해서
xinetd를 재시작한다.

 > service xinetd restart

성공적으로 재시작되면,
TFTP가 동작하게 된다.

netstat 등을 이용하면
동작 여부를 확인할 수 있다.

 > netstat -a | grep tftp

Posted by 물빛바다
:
Fedora10에서는 이상하게도
무슨 연유에서인지
X상에서는 root로 login이 안됐다.
(이유가 있을 법도 한데, document를 읽어보지 않아서 이유는 모르겠다....)

암턴 왠만한 작업은 터미널로 가능하니까
super user로 변경해서 처리했지만,
그렇지 않은 경우가 있어서 좀 곤란했다.

그래서 가장 단순한 방법을 사용했더랬다.
Run level을 3으로 바꾸고,
text상태로 root를 login하고,
startx를 통해 X를 실행시키는...

잠깐 잠깐 사용할 생각에 그랬는데,
몇번 사용하다보니
귀찮아져버렸다.

해서 또 구글신의 도움을 받았더니만,
역시나 해법이 있었다.

<출처: http://forums.fedoraforum.org/showthread.php?t=205768>
위 글에 따르면,
/etc/pam.d/gdm에서
!root가 포함된 줄을 삭제하면 된다더라....

내 Fedora는 아래와 같이 설정되어 있었고,
붉은 줄처럼 한줄을 지우고, 재부팅을 했다.

#%PAM-1.0
auth     [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth       required    pam_succeed_if.so user != root quiet
auth       required    pam_env.so
auth       substack    system-auth
auth       optional    pam_gnome_keyring.so
account    required    pam_nologin.so
account    include     system-auth
password   include     system-auth
session    required    pam_selinux.so close
session    required    pam_loginuid.so
session    optional    pam_console.so
session    required    pam_selinux.so open
session    optional    pam_keyinit.so force revoke
session    required    pam_namespace.so
session    optional    pam_gnome_keyring.so auto_start
session    include     system-auth

Login시에 Other를 선택하고,
root를 입력했더니,
성공적으로 login이 되더라~

역시나

Thank you so much, scottro~
Posted by 물빛바다
:
※ 본 내용은 MontaVista Linux Professional 4.0.1 (PPC용)을 기준으로 작성되었습니다.

Fedora10이 너무 최신 버전인 관계로
MontaVista Linux 4.0.1이 설치되지 않는 문제가 있다.
(기억이 맞다면 Fedora8부터 설치가 안됐다.
5.0의 경우는 어떤지 모르겠다.)

설치하는 방법은 정리해보면
대충 두가지가 있는데,

첫번째 방법은
기존에 MontaVista Linux가 설치된 Linux에서
/opt 이하 디렉토리의 내용을
설치하고자 하는 Linux에 복사하는 방법이 있다.
(tar와 gzip 등을 이용해 ftp로 보내는 방법이.....)
그러나 용량이 꽤 커서 어려움이 약간있다.
또, 기설치된 MontaVista가 없는 경우 난감할 수밖에 없다.

그래서 이 글에서 소개하고자하는 두번째 방법은
약간의 치팅을 통한 방법이다.
우선 설치가 안되는 이유는 두가지인데,
너무 최신버전이라 MontaVista 설치 스크립트가 배포판 인식을 못한다는 것이고,
또 다른 하나는 libstdc++.so.5가 존재하지 않는다는 것이다.

우선 배포판 인식문제를 해결하기 위해서는
/etc/redhat-release의 내용을 수정해야한다.
저 파일을 확인해보면 symbolic link를 통해
/etc/fedora-release라는 파일과 연결되어 있고
그 내용은 다음과 같다.

 Fedora release 10 (Cambridge)

요 내용을 MontaVista Linux 설치 스크립트가 인식할 수 있게 변경하면 된다.
우선 /etc/redhat-release 파일 이름을 /etc/redhat-release.orig로 변경한다.(추후 원상복구를 위한 조치)

 > cd /etc
 > mv redhat-release redhat-release.orig

이후 vi 등을 통해 redhat-release 파일을 새롭게 작성한다.

 > cd /etc
 > vi redhat-release

내용은 다음과 같다.
(꼭 똑같을 필요는 없고, 단지 MontaVista 설치 스크립트가 인식할 수 있는 배포판의 내용이면 된다.)

 Red Hat Enterprise Linux ES release 3 (Taroon Update 4)

이렇게 변경하고 설치 스크립트를 실행하면 또다른 에러를 내뱉는다.
(시스템에 따라서 이미 libstdc++.so.5가 설치된 경우는 에러가 발생하지 않는다.)
요 경우 yum을 통해 libstdc++.so.5를 설치해준다.

 > yum install libstdc++.so.5

여기까지 완료된 경우,
설치 스크립트를 실행해 MontaVista Linux를 설치한다.
(설치 스크립트가 임시 파일을 생성하기 때문에,
하드디스크 상의 파일시스템 상에서 실행해야한다.
예를 들어 /root 등과 같은....)

 > /media/host/install

에러 없이 실행되면 다음과 같은 메시지가 출력된다.

Welcome to MontaVista Software's Product Installer.
Starting up, please wait...


MontaVista Software's Product Installer uses a web interface for configuration.
See the product documentation for more information.

The web server is ready, please connect a web browser to:
       http://127.0.0.1:9999
or for systems with a text display or less than 1024x768 resolution:
       http://127.0.0.1:9999/mvlinstaller.cgi

(You may use this machine's IP address instead of 127.0.0.1)



이후에는 web browser를 실행해
주소창에 http://127.0.0.1:9999 또는 http://127.0.0.1:9999/mvlinstaller.cgi를 입력한다.
이후는 다음과 같이 graphical(?)한 설치과정이 진행되므로
이 글에서는 생략한다.


※ 이 부분부터는 추가로 작성되었습니다.

Browser 설치시에는 문제가 없는 줄 알았는데,
설치하다보니 오류가 하나 더 있었다.

실제 설치를 진행하다보면
libXp가 없다는 오류를 뿌리면서 설치가 중지된다.
(시스템에 따라서는 이미 깔려있을 수도 있다.)
역시 libXp는 아래와 같이 설치하면 된다.

 > yum install libXp
Posted by 물빛바다
: