onion pi を作って数日。
SDカードは書き換え回数に制限があるので、データーを書き込む限り、制限に達するのは時間の問題です。1年や2年では達しないと思いますが、通常稼働時は一切のデーターをSDカードに書き込みしないように構築してみました。
また、前回、前々回の構築方法では、電源を切るために、いちいちログインしなければいけないのも面倒です。SDカードを書込み禁止にしておけば、不意の電源断でストレージが壊れる心配も無くなるので、コンセントからプラグを抜いて電源を切ることも大丈夫となります。
今回はカーネルの再構築があるので作業に半日かかります。
もっとも、makeを行っている約9時間は何もできないので、寝るしかありません。
onion pi はこれで完成かな。
参考:PCリンクス よもやま雑記帳
2回目:Raspberry Pi で使用しないデーモンを停止する
3回目:Raspberry Pi でRAMディスクを使う
4回目:Raspberry Pi でカーネルにaufsを組み込む
9回目:Raspberry Pi でfsprotectを試す
PLANEX GW-USNano2 用手順(俺様用)
・Raspberri Pi のダウンロードページから、Raspbian "wheezy"をダウンロードします。
執筆時点の最新版は 2013-07-26-wheezy-raspbian.zip
・2013-07-26-wheezy-raspbian.zipを解凍します。
2013-07-26-wheezy-raspbian.imgが解凍されます。
・手持ちの Windows PC で Win32DiskImager.exe を用い、2013-07-26-wheezy-raspbian.img をSDカードに書き込みます。
※うちの環境では最新版は動かず、v0.7が正常動作しました。
・Raspberry Pi にSDカードを挿入しケーブルを接続します。
まず、以下を挿入または接続します。
2013-07-26-wheezy-raspbian.imgを書き込んだSDカード
HDMIケーブル
LANケーブル
USB用WiFiアダプタ
USBキーボード
最後にmicroUSBを接続し、電源を入れます。
・しばらくして、テレビの画面に以下のような表示が現れれば、SDカードへのイメージ書込みは成功です。
・まず最初に、使用しているSDカードの全領域を確保するために、1を選択します。しばらくして、下記の表示が現れれば成功です。
・言語設定を行うため、1を選択します。
・画面をスクロールし、下記二つの言語を選択し OK を押します。
[*] en_GB.UTF-8 UTF-8
[*] ja_JP.UTF-8 UTF-8
・デフォルトの言語は、ja_JP.UTF-8 UTF-8 を選択し、OK を押します。
・Geographic area から Asia を選択し、Time zone として、Tokyo を選択します。
・新しいホスト名を設定します。下図では onionpi としています。
・グラフィックに割り当てるメモリの設定を行うため、3を設定します。
・トップ画面で Finish を選択し、再起動を促されるので、再起動します。
・IPアドレスを確認します。
再起動が終わり、ログインプロンプトがでたとき、その上に、IPアドレスが表示されています。
[ ok ] Starting system message bus: dbus. [ ok ] starting NTP server: ntpd. [ ok ] Starting OpenBSD Secure Shell server: sshd. My IP address is 192.168.xxx.xxx Debian GNU/Linux 7 onionpi tty1 onionpi login: _ |
・Raspberry Pi 本体からキーボードを外す
・ログインします。
ここからはテレビの画面は使いません。別のPCで作業を行います。
テレビの画面に表示されたIPアドレスへPCからTeraTerm等でSSHで接続します。通常のパスワード認証です。
ID : pi
Password : raspberry
・rootパスワードを作成します。
pi@onionpi ~ $ sudo passwd root 新しいUNIXパスワードを入力してください: 新しいUNIX パスワードを再入力してください: passwd: パスワードは正しく更新されました |
・rootになります。
pi@onionpi ~ $ su - パスワード: |
・ユーザー onion を作成し、パスワードを設定します。
root@onionpi:~# useradd -m -s /bin/bash onion
root@onionpi:~# passwd onion |
・rootログイン禁止、パスワード認証禁止、チャレンジレスポンス認証を許可します。
root@onionpi:~# cp -ip /etc/ssh/sshd_config /etc/ssh/sshd_config.org
root@onionpi:~# cat /etc/ssh/sshd_config.org | sed -e 's/PermitRootLogin yes/PermitRootLogin no/' | sed -e 's/#PasswordAuthentication yes/PasswordAuthentication no/' | sed -e 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/' > /etc/ssh/sshd_config root@onionpi:~# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.org |
・sshdを再起動します。
root@onionpi:~# service ssh restart [ ok ] Restarting OpenBSD Secure Shell server: sshd. |
・キーボード設定を変更します。
root@onionpi:~# cp -ip /etc/default/keyboard /etc/default/keyboard.org
root@onionpi:~# vi /etc/default/keyboard |
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page. XKBMODEL="jp106" |
・ ll ( ls -l ) を利用可能にします。
root@onionpi:~# cd root@onionpi:~# vi .bashrc |
下記行先頭の # を外す # alias ll='ls $LS_OPTIONS -l' |
root@onionpi:~# vi /home/onion/.bashrc |
下記行先頭の # を外す #alias ll='ls -l' |
・仮想端末の一部を無効化します。
root@onionpi:~# cp -ip /etc/inittab /etc/inittab.org
root@onionpi:~# vi /etc/inittab |
※下記記述行をコメントアウト 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 |
root@onionpi:~# diff /etc/inittab /etc/inittab.org 55,59c55,59 < #2:23:respawn:/sbin/getty 38400 tty2 < #3:23:respawn:/sbin/getty 38400 tty3 < #4:23:respawn:/sbin/getty 38400 tty4 < #5:23:respawn:/sbin/getty 38400 tty5 < #6:23:respawn:/sbin/getty 38400 tty6 --- > 2:23:respawn:/sbin/getty 38400 tty2 > 3:23:respawn:/sbin/getty 38400 tty3 > 4:23:respawn:/sbin/getty 38400 tty4 > 5:23:respawn:/sbin/getty 38400 tty5 > 6:23:respawn:/sbin/getty 38400 tty6 |
・パケット転送許可
root@onionpi:~# cp -ip /etc/sysctl.conf /etc/sysctl.conf.org
root@onionpi:~# vi /etc/sysctl.conf |
28行目を有効にします。 net.ipv4.ip_forward=1 |
root@onionpi:~# diff /etc/sysctl.conf /etc/sysctl.conf.org 28c28 < net.ipv4.ip_forward=1 --- > #net.ipv4.ip_forward=1 |
・fstab変更 fsckをしないように。さらに、/tmp等を tmpfsへ
root@onionpi:~# cp -ip /etc/fstab /etc/fstab.org
root@onionpi:~# vi /etc/fstab |
/dev/mmcblk0p1及び/dev/mmcblk0p2はfsckを行わない設定へ。 /dev/mmcblk0p1 /boot vfat defaults 0 0 /dev/mmcblk0p2 / ext4 defaults,noatime 0 0 さらに、下記を追記 tmpfs /tmp tmpfs defaults,size=32m 0 0 tmpfs /var/tmp tmpfs defaults,size=16m 0 0 tmpfs /var/log tmpfs defaults,size=32m 0 0 |
root@onionpi:~# diff /etc/fstab /etc/fstab.org 2,3c2,3 < /dev/mmcblk0p1 /boot vfat defaults 0 0 < /dev/mmcblk0p2 / ext4 defaults,noatime 0 0 --- > /dev/mmcblk0p1 /boot vfat defaults 0 2 > /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 5,6d4 < tmpfs /tmp tmpfs defaults,size=32m 0 0 < tmpfs /var/tmp tmpfs defaults,size=16m 0 0 < tmpfs /var/log tmpfs defaults,size=32m 0 0 |
・仮想メモリ使用停止
root@onionpi:~# free total used free shared buffers cached Mem: 497544 66660 430884 0 10376 30592 -/+ buffers/cache: 25692 471852 Swap: 102396 0 102396 root@onionpi:~# dphys-swapfile swapoff root@onionpi:~# free root@onionpi:~# update-rc.d dphys-swapfile disable |
・不要サービス自動起動停止
root@onionpi:~# update-rc.d dbus disable update-rc.d: using dependency based boot sequencing insserv: warning: current start runlevel(s) (empty) of script `dbus' overrides LSB defaults (2 3 4 5). insserv: warning: current stop runlevel(s) (2 3 4 5) of script `dbus' overrides LSB defaults (empty). root@onionpi:~# update-rc.d triggerhappy disable root@onionpi:~# update-rc.d alsa-utils disable root@onionpi:~# update-rc.d lightdm disable root@onionpi:~# update-rc.d motd disable root@onionpi:~# update-rc.d plymouth disable |
・ntpdドリフトファイルを/tmpへ配置します。
root@onionpi:~# cp -ip /etc/ntp.conf /etc/ntp.conf.org
root@onionpi:~# cat /etc/ntp.conf.org | sed -e 's/\/var\/lib\/ntp\/ntp.drift/\/tmp\/ntp.drift/' > /etc/ntp.conf root@onionpi:~# diff /etc/ntp.conf /etc/ntp.conf.org |
・syslogを必要最小限にします。
root@onionpi:~# cp -ip /etc/rsyslog.conf /etc/rsyslog.conf.org
root@onionpi:~# vi /etc/rsyslog.conf |
下記の行をコメントアウトします。 64~68行目 #daemon.* -/var/log/daemon.log #kern.* -/var/log/kern.log #lpr.* -/var/log/lpr.log #mail.* -/var/log/mail.log #user.* -/var/log/user.log 74~76行目 #mail.info -/var/log/mail.info #mail.warn -/var/log/mail.warn #mail.err /var/log/mail.err 81~83行目 #news.crit /var/log/news/news.crit #news.err /var/log/news/news.err #news.notice -/var/log/news/news.notice 88~90行目 #*.=debug;\ # auth,authpriv.none;\ # news.none;mail.none -/var/log/debug |
root@onionpi:~# diff /etc/rsyslog.conf /etc/rsyslog.conf.org 64,68c64,68 < #daemon.* -/var/log/daemon.log < #kern.* -/var/log/kern.log < #lpr.* -/var/log/lpr.log < #mail.* -/var/log/mail.log < #user.* -/var/log/user.log --- > daemon.* -/var/log/daemon.log > kern.* -/var/log/kern.log > lpr.* -/var/log/lpr.log > mail.* -/var/log/mail.log > user.* -/var/log/user.log 74,76c74,76 < #mail.info -/var/log/mail.info < #mail.warn -/var/log/mail.warn < #mail.err /var/log/mail.err --- > mail.info -/var/log/mail.info > mail.warn -/var/log/mail.warn > mail.err /var/log/mail.err 81,83c81,83 < #news.crit /var/log/news/news.crit < #news.err /var/log/news/news.err < #news.notice -/var/log/news/news.notice --- > news.crit /var/log/news/news.crit > news.err /var/log/news/news.err > news.notice -/var/log/news/news.notice 88,90c88,90 < #*.=debug;\ < # auth,authpriv.none;\ < # news.none;mail.none -/var/log/debug --- > *.=debug;\ > auth,authpriv.none;\ > news.none;mail.none -/var/log/debug |
・起動時に /var/log へ空ファイルなどを作成します。
root@onionpi:~# cp -ip /etc/rc.local /etc/rc.local.org root@onionpi:~# vi /etc/rc.local |
最下行の exit 0 の上部に下記を挿入します。 mkdir -p /var/log/ConsoleKit mkdir -p /var/log/samba mkdir -p /var/log/fsck mkdir -p /var/log/apt mkdir -p /var/log/ntpstats chown root.ntp /var/log/ntpstats chown root.adm /var/log/samba touch /var/log/lastlog |
root@onionpi:~# diff /etc/rc.local /etc/rc.local.org 20,34d19 < mkdir -p /var/log/ConsoleKit < mkdir -p /var/log/samba < mkdir -p /var/log/fsck < mkdir -p /var/log/apt < mkdir -p /var/log/ntpstats < chown root.ntp /var/log/ntpstats < chown root.adm /var/log/samba < < touch /var/log/lastlog < touch /var/log/wtmp < touch /var/log/btmp < chown root.utmp /var/log/lastlog < chown root.utmp /var/log/wtmp < chown root.utmp /var/log/btmp < |
・パッケージ管理システムの最新パッケージリストをダウンロードします。
root@onionpi:~# apt-get update ・・・(しばらく待つ)・・・ パッケージリストを読み込んでいます... 完了 |
・アップデート可能なパッケージをアップデートします。
root@onionpi:~# apt-get upgrade パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージはアップグレードされます: gnupg gpgv libgcrypt11 linux-libc-dev アップグレード: 4 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 3,192 kB のアーカイブを取得する必要があります。 この操作後に追加で 5,120 B のディスク容量が消費されます。 続行しますか [Y/n]? Y ・・・(しばらく待つ)・・・ (データベースを読み込んでいます ... 現在 62264 個のファイルとディレクトリがインストールされています。) linux-libc-dev:armhf 3.2.41-2+rpi1 を (.../linux-libc-dev_3.2.46-1+rpi1_armhf.deb で) 置換するための準備をしています ... linux-libc-dev:armhf を展開し、置換しています... libgcrypt11:armhf (1.5.0-5+deb7u1) を設定しています ... linux-libc-dev:armhf (3.2.46-1+rpi1) を設定しています ... |
・ DHCPサーバーをインストールします。
root@onionpi:~# apt-get install isc-dhcp-server パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 提案パッケージ: isc-dhcp-server-ldap 以下のパッケージが新たにインストールされます: isc-dhcp-server アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 887 kB のアーカイブを取得する必要があります。 この操作後に追加で 1,875 kB のディスク容量が消費されます。 ・・・(しばらく待つ)・・・ isc-dhcp-server (4.2.2.dfsg.1-5+deb70u6) を設定しています ... Generating /etc/default/isc-dhcp-server... [FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics. ... failed! failed! invoke-rc.d: initscript isc-dhcp-server, action "start" failed. |
・ hostapdをインストールします
※apt-getでインストールされるものではPLANEX GW-USNano2に対応していません。
root@onionpi:~# wget -nv https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz 2013-08-20 19:16:30 URL:https://codeload.github.com/jenssegers/RTL8188-hostapd/tar.gz/v1.1 [1939585] -> "v1.1.tar.gz" [1] root@onionpi:~# ls -l v1.1.tar.gz root@onionpi:~# tar -zxf v1.1.tar.gz root@onionpi:~# cd RTL8188-hostapd-1.1/hostapd root@onionpi:~/RTL8188-hostapd-1.1/hostapd# make root@onionpi:~/RTL8188-hostapd-1.1/hostapd# make install root@onionpi:~/RTL8188-hostapd-1.1/hostapd# cd root@onionpi:~# |
・ WiFi向けのDHCP設定を行います。
root@onionpi:~# cp -ip /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.org
root@onionpi:~# vi /etc/dhcp/dhcpd.conf |
13,14行目をコメントアウトします。 #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org; 21行目を有効にします。 authoritative; 最下行に追記します。 subnet 192.168.42.0 netmask 255.255.255.0 { range 192.168.42.10 192.168.42.50; option broadcast-address 192.168.42.255; option routers 192.168.42.1; default-lease-time 600; max-lease-time 7200; option domain-name "local"; option domain-name-servers 8.8.8.8, 8.8.4.4; } |
root@onionpi:~# diff /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.org 13,14c13,14 < #option domain-name "example.org"; < #option domain-name-servers ns1.example.org, ns2.example.org; --- > option domain-name "example.org"; > option domain-name-servers ns1.example.org, ns2.example.org; 21c21 < authoritative; --- > #authoritative; 108,116d107 < subnet 192.168.42.0 netmask 255.255.255.0 { < range 192.168.42.10 192.168.42.50; < option broadcast-address 192.168.42.255; < option routers 192.168.42.1; < default-lease-time 600; < max-lease-time 7200; < option domain-name "local"; < option domain-name-servers 8.8.8.8, 8.8.4.4; < } root@onionpi:~# cp -ip /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server.org root@onionpi:~# vi /etc/default/isc-dhcp-server |
21行目を下記にします。 INTERFACES="wlan0" |
root@onionpi:~# diff /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server.org 21c21 < INTERFACES="wlan0" --- > INTERFACES="" |
・ネットワークインターフェースの設定を行います。
root@onionpi:~# cp -ip /etc/network/interfaces /etc/network/interfaces.org
root@onionpi:~# vi /etc/network/interfaces |
auto lo
iface lo inet loopback allow-hotplug wlan0 iface wlan0 inet static up iptables-restore < /etc/iptables.ipv4.nat |
・wlan0の動作確認をします。
root@onionpi:~# ifconfig wlan0 192.168.42.1
root@onionpi:~# ifconfig wlan0 |
・WiFiルーターとしての設定を行います。
※ PLANEX GW-USNano2 を基に設定しています。
ssidやwpa_passphraseはお好きな文字列を指定してください。
決められない場合は、SSIDはMACアドレスをもとに、
パスキーはランダムに生成した64桁の16進数を設定するのもよいでしょう。
※SSIDなどを決められない場合の参考 root@onionpi:~# echo ssid=`ifconfig wlan0 | grep 'wlan0' | awk '{print$5}' | tr -d : | tr "[:lower:]" "[:upper:]"` ssid=123456789ABC root@onionpi:~# echo wpa_psk=`openssl rand -hex 32` |
root@onionpi:~# cp -ip /etc/hostapd/hostapd.conf /etc/hostapd/hostapd.conf.org
root@onionpi:~# vi /etc/hostapd/hostapd.conf |
interface=wlan0 driver=rtl871xdrv ssid=【任意のSSID】 country_code=JP ieee80211d=1 hw_mode=g channel=1 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 ieee80211n=1 wpa=2 ## wpa_passphrase または wpa_psk のいずれかを使用 #wpa_passphrase=【8~63文字の英数記号の場合】 #wpa_psk=【64桁の16進数の場合】 ## wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP wmm_enabled=1 # Bandwidth 20MHz #ht_capab=[SHORT-GI-20][SMPS-STATIC][MAX-AMSDU-7935] ht_capab=[SHORT-GI-20][SMPS-STATIC] # Bandwidth 40MHz #ht_capab=[HT40+][SHORT-GI-20][SHORT-GI-40][SMPS-STATIC][MAX-AMSDU-7935][DSSS_CCK-40] |
・iptable の設定を行います。
root@onionpi:~# vi /tmp/iptables.sh |
iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040 iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT |
root@onionpi:~# sh /tmp/iptables.sh &
root@onionpi:~# iptables -t nat -S root@onionpi:~# iptables -S root@onionpi:~# iptables-save > /etc/iptables.ipv4.nat root@onionpi:~# ls -l /etc/iptables.ipv4.nat root@onionpi:~# cat /etc/iptables.ipv4.nat |
・WiFiルーター起動
root@onionpi:~# service hostapd start [ ok ] Starting advanced IEEE 802.11 management: hostapd. root@onionpi:~# service isc-dhcp-server start root@onionpi:~# service hostapd status root@onionpi:~# service isc-dhcp-server status root@onionpi:~# update-rc.d hostapd defaults root@onionpi:~# update-rc.d hostapd enable root@onionpi:~# update-rc.d isc-dhcp-server enable |
・不要ファイル削除
root@onionpi:~# rm /tmp/iptables.sh
root@onionpi:~# ls -l /tmp/iptables.sh |
・Torインストール
root@onionpi:~# apt-get install tor パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: tor-geoipdb torsocks 提案パッケージ: mixmaster xul-ext-torbutton socat tor-arm polipo privoxy apparmor-utils 以下のパッケージが新たにインストールされます: tor tor-geoipdb torsocks アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。 2,694 kB のアーカイブを取得する必要があります。 この操作後に追加で 7,386 kB のディスク容量が消費されます。 続行しますか [Y/n]? Y ・・・(しばらく待つ)・・・ tor (0.2.3.25-1) を設定しています ... [ ok ] Starting tor daemon...done. torsocks (1.2-3) を設定しています ... tor-geoipdb (0.2.3.25-1) を設定しています ... root@onionpi:~# cp -ip /etc/tor/torrc /etc/tor/torrc.org root@onionpi:~# vi /etc/tor/torrc |
ファイル先頭に下記を追加 VirtualAddrNetwork 10.192.0.0/10 AutomapHostsSuffixes .onion,.exit AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 192.168.42.1 DNSPort 53 DNSListenAddress 192.168.42.1 RunAsDaemon 1 Log notice stdout |
root@onionpi:~# diff /etc/tor/torrc /etc/tor/torrc.org 1,9d0 < VirtualAddrNetwork 10.192.0.0/10 < AutomapHostsSuffixes .onion,.exit < AutomapHostsOnResolve 1 < TransPort 9040 < TransListenAddress 192.168.42.1 < DNSPort 53 < DNSListenAddress 192.168.42.1 < RunAsDaemon 1 < Log notice stdout |
・Tor起動
root@onionpi:~# service tor restart [ ok ] Stopping tor daemon...done. [....] Starting tor daemon...Aug 22 14:26:21.000 [warn] Can't log to stdout with RunAsDaemon set; skipping stdout done. root@onionpi:~# service tor status root@onionpi:~# update-rc.d tor enable |
・ファームウェアバージョン確認
root@onionpi:~# /opt/vc/bin/vcgencmd version Jun 17 2013 20:43:10 Copyright (c) 2012 Broadcom version d380dde43fe729f043befb5cf775f99e54586cde (clean) (release) |
・ファームウェアバージョンアップ
root@onionpi:~# rpi-update ・・・(しばらく待つ)・・・ *** Running ldconfig *** Storing current firmware revision *** Syncing changes to disk *** If no errors appeared, your firmware was successfully setup *** A reboot is needed to activate the new firmware |
・再起動します。
root@onionpi:~# reboot |
・再起動後、新しいユーザーでログインします。
チャレンジレスポンス認証になっていることに注意
ID : onion
Password :
・rootになります。
onion@onionpi ~ $ su - パスワード: |
・ファームウェアのバージョンが上がっているか確認
root@onionpi:~# /opt/vc/bin/vcgencmd version Aug 20 2013 00:35:49 Copyright (c) 2012 Broadcom version 18e3e93a3ae0765ca25e4fe511f59f14396afcaa (clean) (release) |
・アカウント名 pi をロックします。
root@onionpi:~# passwd -l pi passwd: パスワード期限切れ情報を変更しました |
・開発環境一式をインストールします
root@onionpi:~# apt-get -y install libncurses5-dev libxml2-dev subversion libssl-dev libspandsp-dev libsqlite3-dev sqlite3 libgtk2.0-dev libslang2-dev libnewt-dev libghc-zlib-dev libkrb5-dev git libreadline6-dev ・・・(しばらく待つ)・・・ |
・最新ソースコードの取得
root@onionpi:~# cd /usr/src
root@onionpi:/usr/src# git clone --depth 1 https://github.com/raspberrypi/linux.git root@onionpi:/usr/src# ln -s linux linux-3.6.11+ root@onionpi:/usr/src# cd linux root@onionpi:/usr/src/linux# git clone git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git |
・パッチファイルのダウンロード
root@onionpi:/usr/src/linux# cd aufs3-standalone/ root@onionpi:/usr/src/linux/aufs3-standalone# git checkout origin/aufs3.6 Note: checking out 'origin/aufs3.6'. You are in 'detached HEAD' state. You can look around, make experimental If you want to create a new branch to retain commits you create, you may git checkout -b new_branch_name HEAD is now at 35a79fc... aufs3.6 20130325 |
・パッチファイルのコピー
root@onionpi:/usr/src/linux/aufs3-standalone# cp -rp *.patch /usr/src/linux
root@onionpi:/usr/src/linux/aufs3-standalone# cp -rp fs /usr/src/linux root@onionpi:/usr/src/linux/aufs3-standalone# cp -rp Documentation/ /usr/src/linux root@onionpi:/usr/src/linux/aufs3-standalone# cp -rp include/linux/aufs_type.h /usr/src/linux/include/linux/ |
・パッチ適用
root@onionpi:/usr/src/linux/aufs3-standalone# cd .. root@onionpi:/usr/src/linux# patch -p1 < aufs3-kbuild.patch patching file fs/Kconfig patching file fs/Makefile patching file include/linux/Kbuild root@onionpi:/usr/src/linux# patch -p1 < aufs3-base.patch root@onionpi:/usr/src/linux# patch -p1 < aufs3-proc_map.patch root@onionpi:/usr/src/linux# patch -p1 < aufs3-standalone.patch root@onionpi:/usr/src/linux# patch -p1 < aufs3-loopback.patch |
・稼働中カーネル設定のコピー
root@onionpi:/usr/src/linux# zcat /proc/config.gz > .config |
・カーネル設定(aufs有効化設定)
root@onionpi:/usr/src/linux# make menuconfig |
・メニュー画面で下にスクロールし Load an Alternate Configuration File を選択します。
・Initial RAM filesystem and RAM disk (initramfs/initrd) support を選択し、[*]を表示させます。
・トップ画面に戻り、 File systems を選択します。
・[*] Miscellaneous filesystems を選択します。
・< > Aufs (Advanced multi layered unification filesystem) support を選択し <*> を表示させます。
<M> ではなく、<*> とする点に注意
・さらに下部にスクロールできるようになるので、下記を選択し[*]を表示させます。
[*] NFS-exportable aufs
[*] Ramfs(initramfs/rootfs) as an aufs branch
[*] Fuse fs an sufs branch
[*] Hfsplus as an aufs branch (NEW) ※選択済
・トップ画面に戻り、 Save an Alternate Configuration File を選択します。
・aufs有効設定確認
root@onionpi:/usr/src/linux# grep -E 'CONFIG_BLK_DEV_INITRD|CONFIG_AUFS_FS' .config CONFIG_BLK_DEV_INITRD=y CONFIG_AUFS_FS=y |
・カーネルバージョン修正
root@onionpi:/usr/src/linux# cp -ip Makefile /tmp/Makefile root@onionpi:/usr/src/linux# vi Makefile |
4行目を下記に修正 EXTRAVERSION = -aufs |
root@onionpi:/usr/src/linux# diff Makefile /tmp/Makefile 4c4 < EXTRAVERSION = -aufs --- > EXTRAVERSION = root@onionpi:/usr/src/linux# rm /tmp/Makefile |
・カーネル再構築
root@onionpi:/usr/src/linux# make clean
root@onionpi:/usr/src/linux# make |
・モジュールインストール
root@onionpi:/usr/src/linux# mv /lib/modules/3.6.11+ /lib/modules/3.6.11+.bak
root@onionpi:/usr/src/linux# make modules_install |
・カーネルインストール
root@onionpi:/usr/src/linux# uname -a Linux raspberrypi 3.6.11+ #524 PREEMPT Thu Aug 15 15:48:48 BST 2013 armv6l GNU/Linux root@onionpi:/usr/src/linux# mv /boot/kernel.img /boot/kernel.img.bak root@onionpi:/usr/src/linux# cp arch/arm/boot/Image /boot/kernel.img |
・再起動します。
root@onionpi:/usr/src/linux# reboot |
・再起動後、新しいユーザーでログインします。
チャレンジレスポンス認証になっていることに注意
ID : onion
Password :
・rootになります。
onion@onionpi ~ $ su - パスワード: |
・カーネルバージョン確認
root@onionpi:~# uname -a Linux onionpi 3.6.11-aufs+ #1 PREEMPT Wed Aug 21 10:09:01 JST 2013 armv6l GNU/Linux |
・fsprotectをインストールします
root@onionpi:~# apt-get install fsprotect パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: fsprotect アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 79.4 kB のアーカイブを取得する必要があります。 この操作後に追加で 179 kB のディスク容量が消費されます。 取得:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main fsprotect all 1.0.6 [79.4 kB] 79.4 kB を 1秒 で取得しました (58.1 kB/s) 以前に未選択のパッケージ fsprotect を選択しています。 (データベースを読み込んでいます ... 現在 70467 個のファイルとディレクトリがイン ストールされています。) (.../fsprotect_1.0.6_all.deb から) fsprotect を展開しています... man-db のトリガを処理しています ... fsprotect (1.0.6) を設定しています ... initramfs-tools のトリガを処理しています ... |
・initramfsイメージファイルを作成し直します。
root@onionpi:~# update-initramfs -c -k $(uname -r) update-initramfs: Generating /boot/initrd.img-3.6.11-aufs+ |
・書込み禁止設定
root@onionpi:~# cp -ip /boot/cmdline.txt /boot/cmdline.txt.org
root@onionpi:~# vi /boot/cmdline.txt |
最後尾に fsprotect を追記する |
root@onionpi:~# diff /boot/cmdline.txt /boot/cmdline.txt.org 1c1 < dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fsprotect --- > dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait |
・initramfsの指定を追加
root@onionpi:~# cp -ip /boot/config.txt /boot/config.txt.org root@onionpi:~# vi /boot/config.txt |
下記を追記する # aufs initramfs initrd.img-3.6.11-aufs+ |
root@onionpi:~# diff /boot/config.txt /boot/config.txt.org 43,45d42 < < # aufs < initramfs initrd.img-3.6.11-aufs+ |
・/boot ディレクトリの保護
root@onionpi:~# cp -ip /etc/default/fsprotect /tmp/fsprotect root@onionpi:~# vi /etc/default/fsprotect |
最下行を下記にする PROTECT="/boot=32M" |
root@onionpi:~# diff /etc/default/fsprotect /tmp/fsprotect 11c11 < PROTECT="/boot=32M" --- > PROTECT="" |
・再起動します。
root@onionpi:~# reboot |
・確認
onion pi に繋がない状態で、自分のIPアドレスを確認。http://www.ipchicken.com/
onion pi へ 設定した SSID、KEYでつながるか?
WiFi接続後、もう一度IPアドレスを確認し先ほどとは異なっている事。
多くのTorの出口ノードのホスト名はtorの文字があるので参考にするとよい。
・再起動後、新しいユーザーでログインします。
チャレンジレスポンス認証になっていることに注意
ID : onion
Password :
・rootになります。
onion@onionpi ~ $ su - パスワード: |
・シャットダウンします
root@onionpi:~# halt |
・SDカード書込み禁止スイッチ
|
以上、完成!
設定変更時の手順
SDカードにデータを書き込むには以下の手順を実施します。
|
書込み禁止時の留意点 起動時の下記表示は気にしなくてよい [warn] Fast boot enabled, so skipping file system check. ... (warning). 下記表示が出る事 [ ok ] Protecting filesystems:. シャットダウン時の下記表示は気にしなくてよい [....] Unmounting temporary filesystem...umount: /fsprotect/fs/boot/tmp: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1)) . failed. |
参考:Onion Pi