Category Archives: Debian

VNC自動起動 Raspberry Pi2 Raspbian8 systemd

諸事情からRaspberry PiでVNCを使いたくなったのですが、VNCの自動起動に躓いたのでメモしておきます。

Raspberry Pi2に入れたRaspbian8なのですがDebian8がベースなのでinit.d方式でなくてsystemd方式で起動プロセスが走ります。

古いRaspberry Piの記事だとRaspbian7のinit.d形式で自動起動のスクリプトが書かれていたりします。。。
しかし本来、systemdでも/etc/init.d内の起動スクリプトも実行されるはずなのですが、うまく実行されませんでした。

取りあえず、”郷に入れば郷に従え”の教えに従い、systemd方式で設定ファイルを作成したら正常に起動しました。

$ sudo su –

# apt-get install tightvncserver

# vncserver :1
※ 初回起動時はパスワードを聞かれると思いますので設定してください

# vi /etc/systemd/system/vncserver@.service

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=pi
PAMName=login
PIDFile=/home/pi/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

# systemctl daemon-reload
# systemctl enable vncserver@1.service

これで自動起動するはずです。。。

参考サイト
Raspberry Pi • View topic – VNC server in Jessie (using a systemd service)

Go言語で皆大好き htpdate を書いてみた

PCやサーバの時間合わせにntpdateを通常用いますが、80番と443番しか外部接続を許されないネットワークだとNTPが使えない事があります。そんな時にNTPの代替としてWEBサーバの時間を元にマシンの時間を合わせるコマンドが”htpdate”です。

仕組はHTTPのレスポンスヘッダに含まれる”Date”を元にソコソコ正確な時間を取得してOSの時間を設定します。
とても単純明快で清々しいくらいです。

例えばこのサーバだと、このようなレスポンスヘッダが帰ってきます。
この中の「Date: Wed, 08 Apr 2015 11:35:10 GMT」がサーバの時間となります。

HTTP/1.1 200 OK
Date: Wed, 08 Apr 2015 11:35:10 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Fri, 29 Jun 2012 10:40:46 GMT
ETag: "16e07e-5-4c39a14ab6780"
Accept-Ranges: bytes
Content-Length: 5
Connection: close
Content-Type: text/html

# vi htpdate.go

package main

import (
  "os"
  "fmt"
  "time"
  "syscall"
  "net/http"
)

// HTTPサーバへアクセスしてヘッダーからアクセス日時を取得する関数
func get_http_date(url string) (string, error) {
  response, err := http.Get(url)
  if err != nil { return "", err }

  access_time := response.Header.Get("Date")
  return access_time, nil
}

// 引数として受け取ったUNIXタイムをOSの時間に設定する関数
func settime(sec int64, usec int64) error {
  tv := syscall.Timeval{ Sec: sec, Usec: usec }

  return os.NewSyscallError("settimeofday", syscall.Settimeofday(&tv))
}

func main() {
  if len(os.Args) > 1 {
    // とりあえずHTTPサーバを1個だけ引数に受け取る
    host_name  := os.Args[1]
    target_url := "http://" + host_name

    // HTTPサーバからアクセス日時を取得
    access_time, err := get_http_date(target_url)
    if err != nil {
      fmt.Fprintln(os.Stderr, "Failed to access the HTTP server.")
      os.Exit(1)
    }

    // 取得した時間をパーズする
    server_time, err := time.Parse(time.RFC1123, access_time)
    if err != nil {
      fmt.Fprintln(os.Stderr, "Time of format is not a RFC1123.")
      os.Exit(1)
    }

    // 取得した時間をOSの時間として設定する
    if err := settime(server_time.Unix(), 0); err != nil {
      fmt.Fprintln(os.Stderr, "Failed to set the date and time.")
      os.Exit(1)
    }

    fmt.Println(time.Now())
    os.Exit(0)
  } else {
    fmt.Fprintln(os.Stderr, "Please set the HTTP server to argument.")
    os.Exit(1)
  }
}

実行してみると時間が設定される事が分かるはずです。
# go run htpdate.go orsx.net

2015-04-08 21:05:18.000046645 +0900 JST

Proxyなどは対応していませんがGo言語を勉強するうえで良い教材になりそうな気がしたので簡単に実装してみました。

[HTTP Time Protocol / htpdate] Webプロキシを経由して時刻を同期するの巻 – TrippyBoyの愉快な日々
Introduction | HTTP Time Protocol

Kali Linux システムモニタ(conky) インストール

Kali LinuxのデスクトップにCPU使用率やメモリ使用率などのシステム情報をクールに表示できるシステムモニタツール(conky)のインストールについてメモしておきます。

インストール
# apt-get install conky lm-sensors hddtemp

自動起動させる

# bash -c "echo '[Desktop Entry]'$'\n''Type=Application'$'\n''Exec=conky -p 5'$'\n''Hidden=false'$'\n''NoDisplay=false'$'\n''X-GNOME-Autostart-enabled=true'$'\n''Name=Conky' > ~/.config/autostart/conky.desktop"

設定
# vi ~/.conkyrc

use_xft yes
override_utf8_locale yes
xftfont MeiryoKe_Gothic:size=10
default_color d0d0d0
default_shade_color 003E3F
update_interval 2
own_window yes
own_window_type override
own_window_transparent yes
double_buffer yes
maximum_width 300
alignment top_right

TEXT
${font Bitstream Vera Sans:style=Bold:pixelsize=14}SYSTEM${font} ${hr 1}
Kernel: $alignr$kernel
Architecture: $alignr$machine
File system type: $alignr$fs_type

CPU ${alignr}${freq} MHz
${cpugraph 20,250 a0a0a0 ffffff -t}
RAM ${alignr}$mem / $memmax ($memperc%)
${membar 4}
Swap ${alignr}$swap / $swapmax ($swapperc%)
${swapbar}
Ether ${alignr}${addr eth0} 
Traffic $alignr up ${upspeed eth0} down ${downspeed eth0}
${upspeedgraph eth0 20,120 a0a0a0 ffffff -t} ${downspeedgraph eth0 20,120 a0a0a0 ffffff -t}
Wi-Fi ${alignr}${addr wlan0}
Traffic $alignr up ${upspeed wlan0} down ${downspeed wlan0}
${upspeedgraph wlan0 20,120 a0a0a0 ffffff -t} ${downspeedgraph wlan0 20,120 a0a0a0 ffffff -t}
DiskIO $alignr wrt ${diskio_write} read ${diskio_read}
${diskiograph_write 20,120 a0a0a0 ffffff -t} ${diskiograph_read 20,120 a0a0a0 ffffff -t}

Highest CPU $alignr CPU% MEM%
${top name 1}$alignr${top cpu 1} ${top mem 1}
${top name 2}$alignr${top cpu 2} ${top mem 2}
${top name 3}$alignr${top cpu 3} ${top mem 3}

Highest MEM $alignr CPU% MEM%
${top_mem name 1}$alignr${top_mem cpu 1} ${top_mem mem 1}
${top_mem name 2}$alignr${top_mem cpu 2} ${top_mem mem 2}
${top_mem name 3}$alignr${top_mem cpu 3} ${top_mem mem 3}

CPU temperature ${alignr}${hwmon 1 temp 1}℃
CPU fan speed ${alignr}${hwmon fan 1}rpm

※ 設定例なので各自自分に合った設定に換えてください。

実はこれ、デスクトップカスタム例としてよく写っていたりするのですが名称が分からなくて苦労しましたScreenshot_from_2013-10-07 17:00:53

Kali Linux Gnome Fallback (クラシック) モードからモダンモードに切り替える方法

調べ物をするため海外のフォーラムを見ていたらKali LinuxのFallbackモードからモダンモードに切り替える方法が載っていたのでメモしておく。
※ モダンモードにするとツールのジャンル分けなどがめちゃくちゃな状態になるのであまりお進めしない。。。

現在のモードの確認
# gsettings get org.gnome.desktop.session session-name

モダンモードへの切り替え
# dbus-launch gsettings set org.gnome.desktop.session session-name ‘gnome’

モダンモードはGnome拡張機能などを使いたい場合とかにはいいかもしれません

Screenshot_from_2013-10-07 10:35:39

参考サイト
Enable full gnome instead of gnome fallback

VI(VIM)の簡単な使い方

5年以上もLinux系サーバと戯れときながら今更過ぎますが、これからのLinuxユーザの事を考えVIコマンドの簡単な使い方をメモしておきます。はっきり言ってVIの機能を語り尽くせば本が一冊書けるレベルの量です。O’ReillyでもVIの書籍が出ています。VIを熟知したい人は是非書籍を買ってください。

VI(VIM)コマンドとは

マウスやカーソルキーがキーボードに存在しない時代、UNIX全盛期に作られ非常に長い時間UNIXとともに進化してきたシンプルかつ強力なテキストエディタです。そしてVIを参考に機能を拡張したものがVIMです。基本的にVIMはVIコマンドとして使えるのでVIとして解説します。

VIコマンドを使う主な利点

・他のエディタと異なり基本的にUNIX系OSに標準で入っている
・UNIXの書籍や解説サイトでは非常に高い割合でVIを用いて設定など解説している
・リモート操作時に接続が不意に切れてもEmacsの様にプロセスが暴走しない

本当に基本的な使い方一覧

“$や%や#”はシェル上であるという表示です。各自環境に合わせて読んでください。

起動方法
$ vi ファイル名
上記を実行すると”ノーマルモード”で起動します。
※ 全角文字をファイル名に用いるのは文字化けの元です。半角英数を使いましょう。
※ 白文字をファイル名に用いるのは混乱の元です。アンダースコアを使いましょう。

記述方法
ノーマルモードから”i”キーを押す事により”挿入モード”となり文字入力が可能になります。
ノーマルモードに戻りたい場合は”ESC”キーを押します。

保存方法
ノーマルモードより”:w”を入力し”Enter”キーを押します。

終了方法
保存後に終了する場合は”:wq”を入力し”Enter”キーを押します。
保存せず終了する場合は”:q!”を入力し”Enter”キーを押します。

※ ファイルを編集する前には必ず元のファイルをバックアップする癖を付けましょう。
※ ファイルを編集する時は必ず編集したらこまめに保存する癖を付けましょう。

覚えておくと便利な操作一覧(ノーマルモード上での操作)

直前のコマンド操作を取り消す

”u”キーを押すと直前の操作を取り消す事ができます。
※ 現代の一般的なエディタとは異なり挿入モードもコマンド単位として戻ります。

ファイルの表示場所を変える

ファイルの先頭に移動
削除したい文字にカーソルを合わせ”g”キーを2回押すと先頭に移動する事ができます。

ファイルの最後に移動
削除したい文字にカーソルを合わせ”shift”キーと”g”キーを同時に2回押すと最後に移動する事ができます。

行番号の表示

”:set number”を入力し”Enter”キーを押します。
表示を消す場合はノーマルモードより”:set nonumber”を入力し”Enter”キーを押します。

指定する行番にカーソル移動

”:カーソルを移動させたい行数”を入力し”Enter”キーを押します。

文字列検索

”:/検索ワード(正規表現使用可能)/”を入力し”Enter”キーを押します。
検索結果は”n”キーを押すことにより次を検索できます。

文字列置換

個々に置換
”:/検索ワード(正規表現使用可能)/置換後の文字/”を入力し”Enter”キーを押します。

カーソルのある行全てを置換
”:/検索ワード(正規表現使用可能)/置換後の文字/g”を入力し”Enter”キーを押します。

ファイル内全て再帰的に置換
”:%s/検索ワード(正規表現使用可能)/置換後の文字/g”を入力し”Enter”キーを押します。

ノーマルモードからの削除

ノーマルモードからの文字削除
削除したい文字にカーソルを合わせ”x”キーを押すと文字を削除する事ができます。

ノーマルモードからの行削除
削除したい文字にカーソルを合わせ”d”キーを2回押すと文字を削除する事ができます。

文字コードを指定して開き直す

”:e ++enc=文字エンコーディング”を入力し”Enter”キーを押します。

Kali Linux 日本語版カスタムISOの自作方法

先ほど公開した日本語化版Kali LinuxのISOについてKali LinuxのISOのカスタム方法について日本語のサイトでまとめられているところがなかったので公式のISO作成方法(英語)を元にKali Linuxの日本語版のISO作成方法について簡単にメモしておきます

作成に関してはKali LinuxのVMWare版を使用すると効率的に作業できるかと思います

必要なパッケージをインストールします
# apt-get install git live-build cdebootstrap kali-archive-keyring
GITからISO作成の各種パラメータなどが書かれたものをクローンします
# git clone git://git.kali.org/live-build-config.git
クローンしたディレクトリに移ります
# cd live-build-config
シンボリックを作っていないとエラーが出るので作っておきます
# ln -sf wheezy /usr/share/live/build/data/debian-cd/kali

以上が初期設定です。下記より自分の好みに合わせた設定を行うために各種ファイルを作成します

カスタムする際にインストールする必要のあるパッケージリストを作成します
# vi config/package-lists/package-add.list.chroot

# japanese IME
ibus
ibus-anthy
uim
uim-anthy

# Japanese Font
fonts-ipafont
ttf-vlgothic

# Japanese Man
manpages-ja
manpages-ja-dev

# Japanese Doc
doc-linux-ja-text
doc-linux-ja-html

# Japanese Browser
iceweasel-l10n-ja

# Browser Flash Plugin
flashplugin-nonfree

# VPN
network-manager-openvpn-gnome
network-manager-pptp-gnome

# Editor
gedit

Skypeなど追加したいパッケージがapt-getで提供されておらずdebパッケージで存在する場合は下記のディレクトリに投げ込んでおくとビルド時に自動でインストールされます
# ls config/package-lists/packages/

日本語表示、日本語入力に関する設定を行うシェルスクリプトを作成します
# vi config/hooks/japanese-config.chroot

#!/bin/sh
echo "*****************************************************"
echo "* changing locale.gen japanese config file......... *"
echo "*****************************************************"
sed -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/g' /etc/locale.gen > /tmp/locale.gen_jp
mv -f /tmp/locale.gen_jp /etc/locale.gen
echo "new /etc/locale.gen"
cat /etc/locale.gen

echo "*****************************************************"
echo "* changing default locale japanese config file..... *"
echo "*****************************************************"
{
echo "#  File generated by update-locale"
echo "LANG=ja_JP.UTF-8"
} > /tmp/locale_jp
mv -f /tmp/locale_jp /etc/default/locale
echo "new /etc/default/locale"
cat /etc/default/locale

echo "*****************************************************"
echo "* changing keyboard msp japanese config file....... *"
echo "*****************************************************"
{
echo "# KEYBOARD CONFIGURATION FILE"
echo ""
echo "# Consult the keyboard(5) manual page."
echo "XKBMODEL=\"pc105\""
echo "XKBLAYOUT=\"jp\""
echo "XKBVARIANT=\"\""
echo "XKBOPTIONS=\"\""
echo ""
echo "BACKSPACE=\"guess\""
} > /tmp/keyboard_ja
mv -f /tmp/keyboard_ja /etc/default/keyboard
echo "new /etc/default/keyboard"
cat /etc/default/keyboard

echo "*****************************************************"
echo "* changing im-config config file................... *"
echo "*****************************************************"
im-config -n uim
echo "new /etc/X11/xinit/xinputrc"
cat /etc/X11/xinit/xinputrc

※ このスクリプトは作成中のシステムが入っているディレクトリに”chroot”されている状態で実行されます

カレントディレクトリを移動します
# cd ../

ISO作成やBOOTに関するパラメータの設定をコマンドにて叩きますが今回はConfigオプションが長かったりで毎回打つのは面倒なのでシェルスクリプトに書いておきます
# vi make_iso.sh

#!/bin/sh
# ディレクトリを移動します
cd live-build-config
# 前回のビルド内容が残っていると面倒なので一度クリアします
lb clean
# ブートに関する設定をconfigのオプションに追記して設定します
lb config \
  --bootappend-live "\
    boot=live \
    noconfig=sudo \
    username=root \
    hostname=kali \
    locales=ja_JP.UTF-8 \
    keyboard-model=jp106 \
    keyboard-layouts=jp \
    persistence \
    noeject \
  "
# ISOファイルの作成を開始します
lb build

シェルスクリプトに実行権を与えます
# chmod 755 make_iso.sh
ISOファイル生成を実行します
# ./make_iso.sh
※ 最初に行うビルドはかなり時間がかかります。当方の環境では3~4時間ほどかかりました。

その他設定の仕方を調べたい場合はDebian Live Manualを参照してください。なお、多くの日本語サイトではバージョンの古いlive buildを使ったカスタム法が紹介されていますがパラメータや設定ファイルの名前や書式に互換性がなかったりするのでご注意ください

参考サイト
Debian Live Manual
live-build 作成の半自動化 3

Raspberry Pi 自分の用途に合わせたディスクイメージを作成する Debian 最小構成

RaspbianはRaspberry Piに適した素晴らしいLinuxですがGUIが不要な用途だったりすると
不要なパッケージがあまりにも多く含まれていると感じたり
ほかのデスクトップ環境のディスクイメージを作りたいと考える人もいるかと思います
そこで、自分の用途に合わせたディスクイメージの作り方をメモしておきます

必要な物
・Raspberry Pi
・Raspbianの入ったSDカード
・空のSDカード
・カードリーダライタ

Raspbianの入ったSDカードで起動し
空のSDカードにディスクイメージとなる環境を作ります

SDのパーティション削除とジオメトリの設定
$ sudo fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 1990 MB, 1990197248 bytes
241 heads, 63 sectors/track, 256 cylinders, total 3887104 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *          63     3886847     1943392+   b  W95 FAT32

Command (m for help): d
Selected partition 1

Command (m for help): x

Expert command (m for help): h
Number of heads (1-256, default 241): 255

Expert command (m for help): s
Number of sectors (1-63, default 63): 63

Expert command (m for help): c
Number of cylinders (1-1048576, default 256): 各自計算したシリンダ数

Expert command (m for help): r

Command (m for help): p

Disk /dev/sda: 1990 MB, 1990197248 bytes
255 heads, 63 sectors/track, 241 cylinders, total 3887104 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

シリンダ数の計算
SDカードの容量 / 255 / 63 / 512 = シリンダ数
例) 1990197248 / 255 / 63 / 512 = 241
割り切れない数値は切り捨てます

Windowsパーティション’/boot’の作成 (64MB)
$ sudo fdisk /dev/sda

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-3887103, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-3887103, default 3887103): +64M

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))

Command (m for help): a
Partition number (1-4): 1

Command (m for help): p

Disk /dev/sda: 1990 MB, 1990197248 bytes
62 heads, 62 sectors/track, 1011 cylinders, total 3887104 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      133119       65536    c  W95 FAT32 (LBA)

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

Linuxパーティション”/”の作成 (残りの容量全部)
$ sudo fdisk /dev/sda

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 2):
Using default value 2
First sector (133120-3887103, default 133120):
Using default value 133120
Last sector, +sectors or +size{K,M,G} (133120-3887103, default 3887103):
Using default value 3887103

Command (m for help): p

Disk /dev/sda: 1990 MB, 1990197248 bytes
40 heads, 6 sectors/track, 16196 cylinders, total 3887104 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      133119       65536    c  W95 FAT32 (LBA)
/dev/sda2          133120     3887103     1876992   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

必要なパッケージのインストール
$ sudo apt-get install dosfstools debootstrap git-core ca-certificates

フォーマット
$ sudo mkfs -t vfat -v -c -F 32 /dev/sda1
$ sudo mke2fs -t ext4 /dev/sda2 -m 1

SDカードに作成したパーティション/を/mntにマウントしてdebootstrapを使いDebianをインストール
$ sudo mount -o defaults,noatime /dev/sda2 /mnt/
$ sudo debootstrap –exclude=ed,nano –foreign –arch armel wheezy /mnt http://ftp.jp.debian.org/debian

必要なファイルをコピー
$ sudo cp /etc/inittab /mnt/etc/inittab
$ sudo cp /etc/hosts /mnt/etc/hosts
$ sudo cp /etc/fstab /mnt/etc/fstab
$ sudo cp /etc/network/interfaces /mnt/etc/network/interfaces

rootユーザで/mntをchrootし疑似的にLinuxを触る
chrootするとsudoコマンドは使えないためrootユーザになっておく必要があります
作業中は一応、ヒストリーに履歴が残ってしまうようなので残らないようにしておきます
debootstrapを実行させるとマウントしていた/procがアンマウントされるようなので再度マウントします
$ sudo su –
# export HISTSIZE=0 HISTFILESIZE=0
# chroot /mnt
# mount -n /proc
# export PATH=/bin:/sbin:/usr/bin:/usr/sbin
# /debootstrap/debootstrap –second-stage –no-resolve-deps
# mount -n /proc

リポジトリの追加
これは標準のDevianのリポジトリを追加していますが面倒ならRaspbian側のファイルをコピーしても問題ありません
# vi /etc/apt/sources.list

# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free

# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

アップデートとアップグレードの実行とその他、各自必要なパッケージのインストール
ここで好きなパッケージをインストールしておくことで用途に合わせたディスクイメージを作成することができます
# apt-get update
# apt-get upgrade
# apt-get install console-common console-setup console-data console-tools \
keyboard-configuration locales ntpdate ntp lua5.1 vim ssh sudo syslog-ng usbutils

ユーザの作成とsudoグループへの追加
この時にpasswdコマンドを使用しrootユーザのパスワードを設定することもできます
# adduser pi
# gpasswd -a pi sudo

chrootでの作業とrootでの作業の終了
# exit
# exit

起動時にeth0を有効化させる設定
$ sudo vi /mnt/etc/network/interfaces

auto lo eth0

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

/bootとモジュールのコピー
$ sudo mount /dev/sda1 /mnt/boot
$ sudo cp -rp /boot/* /mnt/boot
$ sudo cp -rp /lib/modules/* /mnt/lib/modules

カーネルとモジュールのアップデート
$ sudo wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update
$ sudo chmod +x /usr/bin/rpi-update
$ sudo ROOT_PATH=/mnt BOOT_PATH=/mnt/boot rpi-update

SDカードをアンマウント
$ sudo umount -l /mnt

シャットダウン
$ sudo shutdown -h now

SDカードを引き抜き、SDカードのイメージを作成すればオリジナルディスクイメージの完成です。
イメージ作成はWin32 Disk Imagerなどを使用すると簡単かもしれません

最後に作成したSDカードをRaspberry Piに接続し電源を入れ、正常に起動するするかを確認してみてください。

参考URL
覚書的な何か » Blog Archive » Raspberry PiでまっさらなDebianのインストール
Debian Linux for Raspberry Pi – GreenLeaf
Raspberry piにDebian squeezeをインストールする – もぐてっく
fdiskでフォーマットする – Android on Beagle

Linux ファイル・ディレクトリ作成時のデフォルトパーミッションを一般ユーザ権限で設定する

学校やレンタルサーバなどではセキュリティーを意識してかデフォルトパーミッションが600や700に設定されていたりする場合がある。非常に良い設定であると思うが、普段からサーバを触る機会の多い自分からすれば普通にファイルを作成すれば他のユーザから閲覧される可能性があるのは百も承知な訳で煩わしいだけである。そのためこちら側でデフォルトパーミッションを変更したいと思う。

変更自体は簡単で”~/.bash_profile”の中に”umask 022″を追記すればファイルは644・ディレクトリは755で作成される。

面倒な場合やコマンドが叩ける環境であるならば下記のコマンドを実行すればよい。
$ echo “umask 022” >> ~/.bash_profile

Raspberry Pi wiringpi WiringPi-Python インストール

GPIOを使うのに標準のライブラリよりも使い勝手のよさそうなライブラリを発見したためこちらを使うことにした。

$ sudo apt-get install git python-dev python-setuptools # 必要なパッケージをインストールする
$ cd /tmp # 当然だが/tmpは再起動すると中身が削除されるため注意する
$ git clone https://github.com/WiringPi/WiringPi-Python.git
$ cd WiringPi-Python
$ git submodule update –init
$ sudo cp WiringPi/wiringPi/*.h /usr/include/ # ヘッダーファイルが無いと怒られるためコピーしておく
$ sudo python setup.py install
$ cd

サンプルコード

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import wiringpi
import time

if __name__ == '__main__':
    io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_GPIO)
    io.pinMode(23,io.OUTPUT)
    io.digitalWrite(23,io.HIGH)
    while True:
        io.digitalWrite(23,io.LOW)  # on
        time.sleep(1)
        io.digitalWrite(23,io.HIGH) # off
        time.sleep(1)

参考サイト
Raspberry Pi GPIO with Python (without root) – Sirmc.net
fatal error: wiringPi.h: No such file or directory · Issue #7 · WiringPi/WiringPi-Python · GitHub

MacBook Air Late 2011 BackTrack5 グラフィックドライバ

MacBook Air Late 2011 のグラフィックカードはnvidiaではなくi5に組み込まれているGPUらしいのでIntel HD Graphics 3000 384 MBを使っているようです。

調べたところリポジトリを追加することで手軽にインストールできるようなのでメモしておきます。

sudo add-apt-repository ppa:glasen/intel-driver
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install linux-image-generic-lts-backport-natty linux-headers-generic-lts-backport-natty