ラベル linux の投稿を表示しています。 すべての投稿を表示
ラベル linux の投稿を表示しています。 すべての投稿を表示

2015/06/28

Raspberry pi をメディアおよびバックアップファイルサーバ的に使う

Raspberry pi

Rspberry pi にUSBハードディスクを接続して,Mac の time machine のディスクと したり,Linux マシンのバックアップディスクとしたり,UPNP メディアサーバとしたり する計画.

Insttall

本体のインストール.今回はRASPBIANで.

  1. micro SD にコピーするイメージを https://www.raspberrypi.org/downloads/ から ダウンロード.
  2. ダウンロードしたイメージファイルを解凍して,micro SD にコピー. https://www.raspberrypi.org/documentation/installation/installing-images/linux.md
  3. micro SD カードをスロットに挿して起動.イーサネットケーブルを接続.IP アドレスがDHCPによって設定されるはずなので,(当てずっぽうに)ssh で接続.
  4. Raspberry pi の設定.raspi-config
  5. デフォルトエディタの設定.sudo update-alternatives --config editor
  6. Firmware のアップデート.再起動 sudo rpi-update
  7. sudo apt-get update; sudo apt-get upgrade 必要なら再起動.
  8. ユーザの設定. uid と gid もなんかうまくやっておくと,あとでNFSを使うときに便利かも.

HDD の接続と設定

USB HDDを接続して,mount する設定.

まず,ディスクの UUID を調べる.

$ sudo lsblk
/dev/mmcblk0p1: SEC_TYPE="msdos" LABEL="boot" UUID="15CD-3B79" TYPE="vfat" 
/dev/mmcblk0p2: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4" 
/dev/sda1: LABEL="time_machine" UUID="b25dd4f7-9c17-4d3a-8dd2-3837a6f6acc6" TYPE="ext4" 
/dev/sda2: LABEL="backup" UUID="eae3badb-d4f3-4fd7-922a-0e1d437f8006" TYPE="ext4" 
/dev/sdb1: LABEL="MEDIA" UUID="AFB6-9DF4" TYPE="vfat" 

マウントポイントを作成して,/etc/fstab の編集.

UID=AFB6-9DF4  /mnt/media vfat codepage=932,iocharset=utf8,uid=1000,gid=1000 0 0
UUID=b25dd4f7-9c17-4d3a-8dd2-3837a6f6acc6 /backup/time_machine ext4 defaults 0 0
UUID=eae3badb-d4f3-4fd7-922a-0e1d437f8006 /backup/linux ext4 defaults 0 0

netatalk

Mac OS から接続したり,Time Machine ディスクとして使うための設定.

sudo apt-get install netatalk

/etc/netatalk/AppleVolumes.default を編集.

/mnt/time_machine "Time machine" options:tm allow:tanahiro
/mnt/media "media"

NFS

Linux からディスクをマウントするため.

サーバ

Rasbperry pi にNFSサーバをインストール.

sudo apt-get install nfs-common nfs-kernel-server

/etc/exports を編集.

/backup/linux linux(rw,sync,no_sbtree_check)

ブート時にサービスを起動させる.

sudo update-rc.d rpcbind enable
sudo update-rc.d nfs-common enable
sudo update-rc.d nfs-kernel-server enable

クライアント

サービスのインストール.

sudo apt-get install nfs-common

/etc/fstab の編集.

raspi:/backup /backup nfs defaults 0 0

参考

MiniDLNA (UPNP/DLNA)

サービスのインストール.

sudo apt-get install minidlna

コンフィグレーションファイル, /etc/minidlna.conf の編集.

media_dir=V,/mnt/media

コンフィグレーションファイルのリロード.

sudo service minidlna force-reload

参考

HDD の回転数

ついでに,HDD が使われていない時に回転を止めるようなスクリプト.

sdparm

ツールのインストール.

sudo apt-get install sdparm

スクリプト

INTERVAL 秒ことにディスクの状態をチェックして,もし変化がなければ spindown.

#!/bin/sh

if [ $# -lt 2 ]; then
  echo "usage: usbhdd_spindown.sh [UUID] [INTERVAL]"
  exit 0
fi

disk=`findfs UUID="$1"`
if [ -z $disk ]; then
  echo "could not find UUID $1"
  exit 0
fi
disk=`echo "$disk" | sed -e "s@/dev/@@"`

interval=$2

state=`grep " $disk " /proc/diskstats`
count=$interval
sleep_time=20
up=1

while [ true ]; do
  sleep $sleep_time
  count=$(($count - $sleep_time))
  newstate=`grep " $disk " /proc/diskstats`

  if [ "$state" = "$newstate" ]; then
    if [ $count -lt 0 ]; then
      count=$interval

      if [ $up -gt 0 ]; then
        sync
        state=`grep " $disk " /proc/diskstats`
        sdparm --readonly --command=stop /dev/$disk > /dev/null 2>&1
        up=$?
      fi
    fi
  else
    count=$interval
    state="$newstate"
    up=1
  fi
done

/etc/inittab に起動時に実行するように記述.

# spindown usb hdd
USR0:2:once:/usr/local/bin/usbhdd_spindown.sh AFB6-9DF4 120

参考1 参考2

2012/12/18

Ubuntu から Mint に乗り換えてみた

休暇なので..

月曜日から休暇なので,先延ばしにしていた Ubuntu 12.10 へのアップロードを試したら,Unityあたりで見事にこけまして. 原因究明やらもめんどくさかったし,いろいろネガティブな話もあったりして(これとか),ちょうどいい機会という事でlinux Mintを試してみることに.

インストール

インストール自体は,すごい簡単.DVDを作って,ドライブにいれた状態で起動すると,Live バージョンが起動.デスクトップに,"install Mint"というアイコンがあるので,これをクリックすればインストールが始まる.もともと,homeディレクトリは別なパーティションに区切ってあったので,このパーティションをフォーマットせずにそのままhomeに割り当てる.

続いて,ここを参考に日本語化.日本語入力は,ibusとMozcをインストール(一度ログオンしなおさないと有効にはならない).その他,dropboxなどなど,必要なものをインストール.

その他設定したのは,設定エディタから,/desktop/mate/interface/gtk_key_theme を Emacs に設定.これで,テキストボックスとかでEmacs 風のキーバインドが使えるように.

印象

第一印象はわりと使える,という感じ.Ubuntuで使っていたプログラムはそのまま使えるし.今はデスクトップはMateだけども,Cinnamon も試してみようかな.

2011/10/12

aspell で # を context-delimiters として機能させる.

aspell は言わずと知れたスペルチェッカで,すごいところは,ソースコードのコメント部分や文字リテラルの部分だけをスペルチェックしてくれたりするので,doxygen や rdoc なんかでソースのコメント部分からドキュメントを作るときには便利なわけです.で,コメント行となる記号は,言語によって様々なのだけど,c/c++ なんかで使われる // や /* */ だったり # で始まるものが多いので,デフォルトでそうなるようなモードがあってたとえば,デフォルトのcontext-delimiters は,

だったり,

という感じで設定されている,のだけども,ここで落とし穴が.

これらの設定は例えば /usr/lib/aspell/の*.amf に設定されていて,例えばcomment.amf は

のようになっているわけなのだけど,ここで問題なのはこの設定ファイル自体のコメント行は"#"なので,context-delimiter として"#"を指定したい場合は"\"でエスケープする必要があるのだけど,それでも"#"で始まる行のスペルチェックは実行されない..ので,実行時に明示的に --add-context-delimiters="# \0" として指定する必要がある.

例えば,rubyのソースコードのコメントをスペルチェックする場合は,/usr/lib/aspell などに ruby.amf として

というファイルを作成して,

と実行.
(ヒアドキュメントは,,ま,いっか)

これってバグだよね..?

2010/05/24

[ubuntu] 10.04 にアップデート

数日前に,研究室のPCを9.10 から10.04 にアップデート.

思いっきりつまづいたのが,ATIのグラフィックドライバ関連で,
素直には fglrx がインストールができず.

[Warning] Uninstall : inst_path_default or inst_path_override
does not exist in /etc/ati. This suggests that the ATI driver
is not installed, the ATI driver is only partially installed,
or the current ATI driver installed is an older version than the
one this script was designed for. Both files listed above are
required for determining where installed files are located.
To force uninstallation of the driver by guessing where the
uninstallation files are located, set the FORCE_ATI_UNINSTALL
environment variable and re-run /usr/share/ati/fglrx-uninstall.sh (this is
not recommended).

ということを言われたので,


としたあと,fglrxを再インストール,リブート.
これで,とりあえずディスプレイドライバはちゃんと入ったっぽい.

サウンドドライバ系が怪しくて,
音が全く出ないのだけど,
いじってる暇はないなー.
まぁ,困らないからいっか.

2009/01/06

[ubuntu] Greeter がクラッシュ

Ubuntu 8.10 の greeter のデザインを Gnome-Art NextGenで変えたら,
起動時に "Greeter がクラッシュしました" といわれてログインできなくなる....

何とか復旧したのでメモ.

電源ボタンで無理やりシャットダウン -> 再起動
grub がカウントダウンしているところで Esc .
recovery mode で起動して,root のシェルを起動.

/etc/gdm/gdm.conf の


となっているところを



に変更.

これでログインできるようになる.

あとは,もう一度 Greeter を変更して,
gdm.conf の変更した部分を元に戻す.

2008/07/24

[linux] RTAI インストール

RTAIのインストール,再挑戦の巻.

(以下は,RTAIのインストール録です.
参考にする場合,いろいろと自己責任でお願いします.)

もういろいろめんどくさかったので,OS自体入れなおすことに.
前回はCentOS 4.3 だったけど今回は CentOS 5.2 をインストール.

入れようとしたPCにDVDドライブがついてなくて,
CDを6枚も焼くのがめんどくさかったので,ネットワークインストール(netinstall)で.
余計なものが入らないので,いい感じ.

パーティションは自分で設定.論理ボリュームは使わずに
* /boot ext3 100MB
* /swap 1024MB (メモリの2倍)
* / 残り
という感じで.

CentOSのインストールが終わったら,yum で
*gcc
*gcc-c++
*ncurses-devel
をインストール.

続いて,kernel.org より,バニラカーネルをダウンロード.
バージョンは,2.6.23で.
/usr/src/kernel に展開.

RTAIのサイトから,rtai-3.6.1.tar.bz2 をダウンロード.
適当な場所に展開.

RTAIのソースコードにあるパッチファイルをカーネルのソースコードにあてる.



カーネルをコンパイル.


オプションは以下. (参考)



コンパイル


ルート権限でインストール



リブート.
起動のときは,当然新しい方のカーネルを選ぶ.


次は,RTAIのインストール.
の前に,途中でめんどくさいことになるので,


としてシンボリックリンクを作る.

あとは,make.オプションはとりあえずデフォルトのままで.



すると,/usr/realtime 以下にRTAI関連のファイルができる.
今回は,なぜかすんなり.

試してみる.



こんな感じで実行できてたら,多分成功.
ばちばち〜.

今回は意外にすんなり.
前回うまく行かなかった理由は不明..
ま,うまくいったから,いっか 笑

あとは,ロボット動かす用のプログラム書かなきゃ.
2.6 のモジュールはまだよくわかんないから,
もうちょっと時間かかるかなー.
(2.4ならサンプル持ってるんだけど..)

2008/03/18

[linux] ruby 最新版をrpm でインストール

で,checkinstall をインストールしてなにがやりたかったかというと.

ruby 1.8.6 のインストールです.

研究室のサーバ(CentOS4.6)だと,
yumで入れられる ruby が 1.8.1 で,諸事情により
もうちょっと上のバージョンのが欲しかったので.

最新バージョンの Ruby の導入

まず,ここから最新の(安定板)ソースコードをダウンロード.
適当なところで解凍.

ruby のビルド.
ソースのディレクトリに移動して


もともと入ってたrubyをアンインストール
(これをやらないと,うまくインストールできなかった)


RPM化





と聞かれる. とりあえず "y"

RPMを作成するので,以下の質問に対しては "r"




何かコメントを求められるけど,するー




パッケージの内容を設定.
ここで,Provides を設定するのに"10"を指定しなきゃいけないという罠



で,
/usr/src/redhat/RPMS/x86_64/ruby-1.8.6-1.x86_64.rpm
として rpm が作成される.




でインストール しゅ〜りょ〜.

[linux] checkinstall のインストール

まず,
yum に RPMforge リポジトリを追加する

ここからRPMforge release file and package configuration をダウンロード.


/etc/yum.repos.d/rpmforge.repo の
enabled を 0 に.

ここから RPM-GPG-KEY.dag.txt をダウンロード.



これで yum コマンドで --enablerepo=rpmforge のオプションをつければ
RPMforge リポジトリを参照する.


その上で,


これで,ソースファイルからrpm が作れる,らしい.