2013년 7월 31일 수요일

pogoplug mobile 대용량 hard 에 Archlinux 설치 하기

pogoplug 에 대용량 hdd 이용해 Archlinux 설치 하였음.
기본적으로 3TB 정도 되는 대용량이면 파티션 테이블을 GPT 로 구성되느데..
문제는 pogoplug 의 부트로더인 uboot 에서 GPT 를 인식 하지 못 하는듯...
다행히 GPT 는 MBR 영역은 비워 두므로 gptsync 를 이용해 파티션 정보를 MBR 에 적어 줄 수 있음.
이렇게 되면 MBR 만 인식 하는 시스템에서는 MBR 파티션이 있는 하드로 인식 될거고, GPT 를 인식 하는 시스템에서는 GPT 파티션이 온전히 인식 됨.
이때 MBR 에서 인식 할 수 없는 2TB 이상 파티션은 MBR 에는 기록 되지 않음.
그러므로 MBR 로 인식 되는 파티션에다가 Archlinux 를 설치 해야 함.
(정확히는 pogoplug series4 용 Archlinux 의 kernel image 인 uImage 가 위치할 장소만 해당 됨. 하지만 pogoplug series4 용 Archlinux 는 root file system 과 kernel image 를 동일 파티션에다가 때려 박아놨기 때문에 결국 그게 그거임..)

파티션 작업은 우분투 live CD 로 부팅 해서 작업 하였음.
원래 통으로 ntfs 로 쓰던 하드인데 원래의 ntfs partition 은 크기를 줄이고 ext3 partition 추가후 자료 옮기고 이전 ntfs partition 은 지우고... 등등 작업으로 파티션 구조가 복잡해 진 상태임.
파티션 1 : 없음... (-_-)
파티션 2 : linux 는 여기 설치 할 거임. (ext3)
파티션 3 : data 영역으로 쓸 거임.      (ext3)
파티션 4 : swap 영역으로 쓸 거임.      (swap)

1. 파티션 준비
일단 GPT 의 상태를 보면,
# parted /dev/sda unit s print  (GPT 테이블)
Current GPT partition table:
 #      Start LBA      End LBA  Type
Number  Start      End          Size         File system     Name  Flags
 2      264192s    33818623s    33554432s    ext3
 4      33818624s  38012927s    4194304s     linux-swap(v1)
 3      38012928s  5860532223s  5822519296s  ext3            Ba
 ==> GPT 를 인식하는 kernel 입장에서 봤을 때 2번째 partition 이 linux boot files system 이 위치할 장소 임.

# gptsync /dev/sda
실행 해서 MBR 테이블 생성 후 MBR 의 상태를 보면,

# fdisk -l /dev/sdg   (MBR 테이블)
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      264191      132095+  ee  GPT
Partition 1 does not start on physical sector boundary.
/dev/sdb2   *      264192    33818623    16777216   83  Linux
/dev/sdb3        33818624    38012927     2097152   82  Linux swap / Solaris
==> MBR 만 인식 하는 uboot 입장에서 봤을 때 2번째 partition 이 uImage 가 위치 한 장소임.

2. pogoplug series4 용 Archlinux 설치 (pogoplug mobile 도 동일하게 사용 가능)
http://archlinuxarm.org/platforms/armv5/pogoplug-series-4
에 있는 installation 대로 설치 하되 ppv4-install.sh 에서 아래 부분 수정.
usb 0:1usb 0:2 으로 수정
ide 0:1ide 0:2 으로 수정
==> uboot 에서 uImage 위치 장소는 0번 device 의 1번 파티션 에서 2번 파티션으로 변경.
/dev/sda1 /dev/sda2 으로 수정
==> kernel 의 boot file system 은 1번 파티션에서 2번 파티션으로 변경.
!! 주의 : 하드 디스크의 구성 상황에 따라 잘 맞춰 줘야 함
          결국 pogoplug 의 firmware 를 변경 하는 risky 한 작업은 순전히
 ppv4-install.sh 를 실행 할 때 발 생 하는 거고 이렇게 uboot script 수정 부분은
 잘못 하면 벽돌이 될 수 있지...
 다만 alarm_revert 부분만 살아 있게 잘 수정 하면 설령 실패 하더라도
 usb (fat32 포맷에 revert 디렉토리) 꼽는 걸로 복원이 가능 함.



이후 Archlinux 설정들...


  • 사용자 계정 추가
useradd -d /home/[name] -s /bin/bash -m -k /etc/skel [name]
passwd [name]

  • 시간
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

  • sudo 권한
pacman -Sy sudo
visudo 실행
# %sudo ALL=(ALL) ALL
부분의 주석 처리 해제
groupadd sudo
vi /etc/group
sudo:x:1001:[name]

  • samba
pacman -Sy smbd nmbd
vi /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = pogo
netbios name = pogo
security = user
null passwords = yes
map to guest = bad user
log file = /var/log/samba/%m.log
max log size = 50
dns proxy = no
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072 SO_KEEPALIVE
disable netbios = yes
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
[homes]
browseable = yes
read only = no
valid users = %S

기존에 samba user 추가 하던 smbpasswd 가 deprecated 된것 같음.
대신 아래 명령어로 samba user 추가.
pbdedit -a -u [name]

systemctl start smbd nmbd
systemctl enable smbd nmbd
이제 pogoplug 의 주소로 접근해 보면 [name] 디렉토리 보이고 접근 될 거임.

  • ftp
pacman -Sy vsftpd
vi /etc/vsftpd
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
passwd_chroot_enable=YES
vi /etc/passwd
[name]:x:1000:1000::/home/./[name]:/bin/bash
// 저기 . 찍힌 위치가 해당 id 로 ftp 접속 했을 때 root directory 가 됨.
systemctl start vsftpd
systemctl enable vsftpd

  • hdd 절전
pacman -Sy hd-idle
vi /etc/conf.d/hd-idle
START_HD_IDLE=true
HD_IDLE_OPTS="-a sda -i 300 -l /var/log/hd-idle.log"
systemctl start hd-idle
systemctl enable hd-idle

  • torrent
pacman -Sy transmission-cli
systemctl start transmission
systemctl stop transmission
vi /var/lib/transmission/.config/transmission-daemon/settings.json
"download-dir": "/mnt/data/torrent",
"incomplete-dir": "/mnt/data/torrent",
"rpc-whitelist": "127.0.0.1, 192.168.*.*",
"rpc-whitelist-enabled": true,
"watch-dir": "/mnt/data/torrent",
"watch-dir-enabled": true
systemctl start transmission
systemctl enable transmission
==> 이제 /mnt/data/torrent 에 torrent 파일 넣으면 자동으로 받아 질 거임.

webui 접속
1) browser 에서 "http://pogoplug's ip:9091/transmission" 으로 접속
2) 409: conflict 에러 하면 나올 거임.
화면 최하단에 X-Transmission-Session-Id: SwnfFIUTEE12DLmAKwEo7qjaX92Je67bxg1akevokYdfI14H 같은게 나옴.
3) 이제 "http://pogoplug's ip:9091/SwnfFIUTEE12DLmAKwEo7qjaX92Je67bxg1akevokYdfI14H" 로 접속하면
web ui 가 나옴.

  • pogoplug 원 서비스 이용 하기
참고 : http://archlinuxarm.org/forum/viewtopic.php?t=3343
1) pacman -U http://dl.dropbox.com/u/15043728/pogoplug-3.3.0-1-arm.pkg.tar.xz
2) vi /etc/pogoplug.conf
vfsdir0=plugdata,/mnt/data
3) systemctl start pogoplug.service
4) http://my.pogoplug.com --> 활성화
5) cp /usr/local/cloudengines/bin/hbplug.conf /etc/pogoplug.conf
6) cat /etc/pogoplug.conf 해서 마지막 줄에 svcid 가 있는 것 확인 해야 함.

  • static ip 설정
vi /etc/network.d/wired-eth0
CONNECTION='ethernet'
DESCRIPTION='A basic static ethernet connection using iproute'
INTERFACE='eth0'
IP='static'
ADDR='192.168.219.11'
NETMASK='255.255.255.0'
GATEWAY='192.168.219.1'
DNS=('1.214.68.2 61.41.153.2')

  • fstab
vi /etc/fstab
사용 하드의 3번 파티션이 결국 주 data 저장 장소가 됨.
이것을 부팅 할 때 mount 시키기 위한 거임.
추가한 사용자 [name] 의 home directory 에도 동일 하게 mount 시키기 위해 아래와 같이 함.
swap 파티션 역시 부팅 때 자동으로 swap 장소로 사용 되게 하기위해 역시 fstab 에 추가 함.
# <file system> <dir>              <type>       <options>       <dump>  <pass>
/dev/sda4       none               swap         defaults        0       0
/dev/sda3       /mnt/data          ext3         defaults        0       2
/mnt/data       /home/[name]/data  none         bind

  • S.M.A.R.T
참고 : https://wiki.archlinux.org/index.php/S.M.A.R.T.
pacman -Sy smartmontools
sudo smartctl -a /dev/sda

  • 기타 짜지부리 한 것들...
vi .bashrc
alias ls='ls --color=auto'
alias ll='ls -al'
alias vi='vim'
PATH=$PATH:$HOME/bin

pacman -Sy vim
pacman -Sy htop
pacman -Sy mc
pacman -Sy gcc
pacman -Sy make