선택된 태그 : linux
write a post
( 1 of 1 )
Buffalo LinkStation 주무르기

집에서 LinkStation Live를 쓰고 있었는데, 괜찮은 것 같아서 부서에서 사용하는 공용 스토리지로 사용하려고 LinkStation Pro Duo 2T를 구매했다.
지금까지는 Linux 서버에 samba 설치해서 사용하고 있었는데, scsi 하드 달린 좀 오래된 장비라 용량도 부족하고 해서 이번 기회에 좀 가볍게 바꿔보고 싶어서 입맛에 맞게 좀 건드려봤다.

개인별로 권한 설정이 좀 편하게 가능하고 소스 서버 등으로 사용할 수 있도록 하기 위해서 아래와 같은 일들을 저질렀다.

1. Open Stock Firmware
http://buffalo.nas-central.org/wiki/Open_Stock_Firmware 참고해서
java -jar acp_commander.jar -t <IP ADDRESS> -o

하면 telnet 이 열린다. 들어가서 sshd 올려주자. /etc/init.d 에 sshd.sh 가 없으니 적당히 하나 만들어서 넣어주고, /etc/init.d/rcS 에 sshd.sh 추가해준다.
LinkStation Live 에서는 key 관련해서 더 해줄 것이 있었는데, 이 모델에서는 별 문제 없이 넘어간다.
일단 그 외에는 크게 할 일이 없으니 넘어가자.

2. install ipkg
여기까지 해 놓으면 일단 shell은 떨어지는데, busybox 기반에 설치된 패키지도 없어서 뭐 할만한게 없다. LS live에서 여기다 개발환경 설치하려고 애쓰다가 몇번 벽돌 만들고 포기했는데, LS Pro 에서는 의외로 쉽게 되더라.
http://buffalo.nas-central.org/wiki/Ipkg_on_the_Linkstation_(for_end-users)

mkdir /mnt/array1/tmp
cd /mnt/array1/tmp
wget http://ipkg.nslu2-linux.org/feeds/optware/cs05q3armel/cross/stable/teraprov2-bootstrap_1.2-7_arm.xsh
sh teraprov2-bootstrap_1.2-7_arm.xsh

하면 /mnt/array1/.optware 라는 디렉토리가 생기고 /opt 로 링크되는데, 이 아래에 ipkg를 이용해서 설치하는 바이너리들이 들어가게 되고, path에도 알아서 추가된다.
이렇게 하면 기존의 library들과 충돌을 일으키지 않고 패키지를 추가 설치할 수 있게 된다.

/opt/etc/ipkg.conf 에

추가해주고 ipkg update 하면 패키지 설치할 준비 완료!

3. 한글 처리
locale -a 해보면 C, POSIX 밖에 없다. locale 설치까지 할 필요는 없고, 일단 /etc/profile에
export LANG=en_US.UTF-8
export LC_ALL="C"

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi

추가하고
/etc/inputrc 에
set meta-flag on
set convert-meta off
set output-meta on

해주면 utf-8 사용하도록 설정한 터미널에서 한글을 보고 쓸 수 있다. (putty 로 테스트해봤음)
busybox 에 포함된 vi 나 ipkg 로 받은 vim 에서는 utf-8 로 저장된 한글이 깨져보이는데, multibyte 옵션이 빠져서 빌드되었기 때문이다.

자, 그럼 vim에서 한글 처리를 위해 vim을 직접 빌드한다.

4. vim 빌드
ipkg 로 필요한 gcc, automake, autoconf, libc-dev 등 빌드에 필요한 패키지들을 설치하고, vim 소스를 다운받아서 --enable-multibyte, --enable-hangulinput 옵션 추가해서 빌드하면 된다.(--enable-hangulinput 은 안 했는데 별 문제 없더라.)
vim 빌드해서 설치한 후에 /usr/local/share/vim/vim72/vimrc_example.vim 을 /usr/local/share/vim/vimrc 로 카피해놓고 set enc=utf8 추가해주면 완료.

5. samba 설정
입맛에 맞게 samba 설정하려고 아무리 /etc/samba/smb.conf 를 바꿔봐도 samba 재실행하면 웹어드민에서 설정한 값으로 돌아가버린다.
/etc/init.d/smb.sh 에서 samba 재실행될 때마다 /etc/melco 에 있는 내용을 기반으로 smb.conf를 다시 만들기 때문인데, 이것을 원하지 않으면 /etc/init.d/smb.sh 에서
/usr/local/sbin/nas_configgen -c samba
라인을 코멘트하면 된다. 단, 이렇게 하면 웹어드민 툴에서 shared folders 부분은 사용할 수 없다.

웹 어드민을 그냥 사용하려고 보면, 전혀 한글화가 안 되어서 디렉토리명이나 유저명, 그룹명 등에 한글을 쓸 수가 없다. 설정값 저장하는 부분에서 특수문자, 공백 등을 확인하기 때문인데, 사실 한글이나 공백, '.' 등이 들어가도 별 문제가 없다.
귀찮으니 확인하는 부분을 제거해버리자.
/www/cgi-bin/module/BufCommonDataCheck.pm 에서

sub check_share {
my $self = shift;
if ($self->{data} =~ m/\!|\#|\&|\{|\}|\@|\<|\>|\\|\~|\$|\/|\:|\,|\'|\;|\*|\?|\"|\<|\>|\||\`|\[|\]|\=|\+|\.|\^|\(|\)|\%|\s/) {
$self->{status} = "share";
return 0;
}
if (!$self->check_1byte_jp) { $self->{status} = "share"; return 0; }
return 1;
}


sub check_share {
return 1;
}

로 바꿔버리면 공유디렉토리명에 한글, 공백 등도 쓸 수 있다. 단, 여기 쓰는 이름으로 디렉토리를 만드니 리눅스 디렉토리명으로 사용할 수 없는 문자열은 알아서 빼고 만들어야 한다. 적당히 조건을 만들어 놓을 수도 있지만 귀찮으니 난 패스.
비슷하게
check_1st_symbol2, check_comment, check_group, check_user 함수도 수정해주면 그룹, 유저 description 에 한글을 쓸 수 있게 된다.

대략 여기까지 해 놓은 상태고, 아직은 최상위 디렉토리만 웹에서 관리할 수 있어서 하위 디렉토리에 권한설정하고 관리하는 작업은 슬슬 스크립트를 고쳐봐야겠다.
좀 편하겠다고 일을 벌였는데 어째 점점 더 일이 커지는 듯. -_-;
_ mine
09년 12월 1일 11시 25분
같은 환경인데
서버A 에서 C 로의 ssh 접속은 문제가 없고,
서버B 에서 C 로의 ssh 는 로그인 아이디 묻는 라인 떨어질 때까지 오래걸리는 문제

ssh -vvv C

해보면

........
debug2: bits set: 542/1024
debug1: ssh_rsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /home/usera/.ssh/identity ((nil))
debug2: key: /home/usera/.ssh/id_rsa ((nil))
debug2: key: /home/usera/.ssh/id_dsa ((nil))

여기서 5-6초간 멈춰있다 진행된다.
이럴 때는 서버 (C) 의 /etc/hosts 에 B 가 들어있는지 확인해보도록



_ mine
09년 2월 11일 18시 58분
어쩌다보니 samba 서버를 구성하게 되었는데, 젠장 왜 이렇게 손 가는게 많은거냐.
기껏 매뉴얼 찾아가며 다 해놨더니 ㅠㅠ
네트웍에서 보이기는 하는데 폴더에 들어갈 수가 없다.

한참 고민하다 (덕분에 cygwin/x 도 쓸 수 있게 됐다!) 찾은 원인은 역시 selinux
하여간 만병의 원인이라니까 -_-;

allow_smb_anon_write
samba_enable_home_dirs
samba_share_nfs
use_samba_home_dirs

이것 네 가지를 allow 해주면 된다. 사실 아래 3개는 안 해도 될 지도 모른다.
하지만 처음 것을 빼니 안 되더라.
_ mine
09년 1월 30일 16시 12분
[리눅스에 외장하드 마운트]

CentOS 5 (2.6.18) 에 외장하드 (Calbee Space Combo : SATA2 640G) 연결해서 백업에 쓰기로 했다.
하드를 ext3 로 잡으면 간단하게 되는 것 같지만, 윈도우에서 보기 편하게 NTFS 로 잡으려니 그냥은 안 되고, ntfs-3g 라는 NTFS 드라이버를 이용해야 한다.

1. 외장하드 파티션 설정
USB 외장하드를 USB 포트에 꽂으면 /dev/sda 로 인식은 된다.
fdisk 로 파티션을 생성한다. 이 때, primary 파티션으로 생성하고, system id 는 86(NTFS volume set)으로 잡았는데, 별로 상관없는 듯 하다. 다 끝나고 보니 7(HPFS/NTFS) 로 바뀌어 있네.

Device Boot Start End Blocks Id System
/dev/sda1 1 77825 625129281 7 HPFS/NTFS

2. 외장하드 format
mkfs.ntfs 를 이용하면 된다는데, mkfs.ntfs 는 ntfsprogs 패키지의 일부라 이놈을 설치해야 한다. 홈페이지에서 다운로드가 안 되더라. 그래서 그냥 윈도우 시스템에 꽂아서 포맷해버렸다. : )

3. ntfs-3g install
http://www.ntfs-3g.org 에서 다운로드하여 설치한다. 잠시 후에 마운트 하려고 하면 fuse 가 있어야 한다고 하니 없으면 fuse 까지 설치한다.

4. 대망의 마운트
/mnt/use 등을 적당히 만들고
mount -t ntfs-3g /dev/sda1 /mnt/usb
해주면 끝.

/etc/fstab 에
/dev/sda1 /mnt/usb ntfs-3g defaults 0 0
요렇게 넣어주면 부팅할 때 알아서 마운트 쏙쏙~
_ mine
08년 10월 15일 18시 01분
fedora core 3 에서의 한글 설정을 참고삼아 정리해놓도록 하자

1. /etc/sysconfig/i18n

LANG="ko_KR.eucKR"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"

2. smb.conf

unix charset = EUC-KR

3. httpd.conf

AddDefaultCharset EUC-KR
_ mine
06년 6월 23일 09시 55분
여기도 뭘 좀 넣어야...