coLinux日記

coLinuxはフリーソフトを種として、よろずのシステムとぞなれりける。

Raspberry Pi、システム的な不具合をなおす。

2024-09-15 07:16:01 | Raspberry Pi
使っている Raspberry Pi で、 apt update を実行したら、基本的なライブラリ?が壊れたらしく、コマンドが動かなくなり、再度ログインできなくなりました。
お手上げですね。これでは Python3 も試せません。

しかたがないので、OSをインストールし直します。以下は大雑把なメモです。SSHD を起動して外からログインできるようにするのがとりあえずの目標ですね。

https://www.raspberrypi.com/software/operating-systems/
から、
Raspberry Pi OS (64-bit)/Raspberry Pi OS Lite
2024-07-04-raspias-bookworm-arm64-lite.img

を、Image Writer for Microsoft Windows のようなツールを使ってUSBメモリへコピーします。

本体にメモリを差し込んで、ディスプレイ、キーボード、マウス、ネットワークケーブルを繋いで、電源を入れてブートしてと、ホスト名を設定し、ユーザ名を入力してパスワードを入れてブートするとそのユーザ名でログインできるようになります。

ログインして、raspi-config で sshd を起動させます。ここは、専用ツールを使います。

# raspi-config

で、
3. Interface Options を選択して、
11. SSH を選択して、「Yes」を選ぶと

 The SSH server is enabled

になります。再起動が要求されるならそれに従って、他からログインできれば完了です。

一度シャットダウンして、すべてを外して、ネットワークケーブルだけ繋いで立ち上げれば一応動くようになりました。

今回は64ビット版ですね。

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
espiya@rasp4mb:~ $

このままだと、パスワード無しで sudo が実行出来てしまうので、

まず、root のパスワードを設定します。
$ sudo passwd root

確認するために root になります。
$ su

#

今回は、
/etc/sudoers.d/010_pi_nopasswd
の内容の行の先頭に # を付けてコメントにし、

# visudo
で、
%sudo ALL=(ALL:ALL)ALL
の行の先頭に # を付けてコメントしました。これは、/etc/sudoers ファイルを更新するのですね。

詳しく調べていませんが、一応これで設定は終了です。

古いメモリカードをUSBで接続すると、ファイルシステムは /dev/sda2 となって、これをマウントすれば読み取れました。

これで、Python環境(make したディレクトリとか)を復元しました。
cp コマンドに -Rp オプションを付けてコピーすればディレクトリ毎コピーできます。

apt も試してみました。

# apt update
......
# apt upgrade
......

無事にアップデートもできました。

次回は、再び Python3 をインストールしてみます。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pidora における Bash の Shellshock アップデートについて

2014-10-14 01:06:49 | Raspberry Pi
前回 のBash 4.3 patch 28 の修正の後、patch 29 と patch 30 がでました。これを、 patch 28 をコンパイルしたディレクトリ(ここでは ./bash-4.3)に対して適用して、再コンパイルします。Raspberry Pi では、約 13 分でした。

patch 30 以降はパッチが出ていないため、Shellshock 問題は一応収束したようです。

さて、pidora としては、正式ではないですが、「チケット #1402(new defect)」が提供されています。

早速、適用してみます。ちなみに yum localinstall は、rpm ファイルをインストールするためのものです。

# /bin/bash --version | head -1
GNU bash, version 4.2.47(1)-release (armv6hl-koji-linux-gnu)
# cp /bin/bash bad/bash4.2.47
#
# yum localinstall -y http://pidora.ca/pidora/misc/bash-4.2.48-2.fc20.armv6hl.rpm
Loaded plugins: langpacks, refresh-packagekit
bash-4.2.48-2.fc20.armv6hl.rpm | 921 kB 00:14
Examining /var/tmp/yum-root-OYjh84/bash-4.2.48-2.fc20.armv6hl.rpm: bash-4.2.48-2.fc20.armv6hl
Marking /var/tmp/yum-root-OYjh84/bash-4.2.48-2.fc20.armv6hl.rpm as an update to bash-4.2.47-2.fc20.armv6hl
Resolving Dependencies
--> Running transaction check
---> Package bash.armv6hl 0:4.2.47-2.fc20 will be updated
---> Package bash.armv6hl 0:4.2.48-2.fc20 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
bash armv6hl 4.2.48-2.fc20 /bash-4.2.48-2.fc20.armv6hl 3.3 M

Transaction Summary
================================================================================
Upgrade 1 Package

Total size: 3.3 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
Updating : bash-4.2.48-2.fc20.armv6hl 1/2
Cleanup : bash-4.2.47-2.fc20.armv6hl 2/2
Verifying : bash-4.2.48-2.fc20.armv6hl 1/2
Verifying : bash-4.2.47-2.fc20.armv6hl 2/2

Updated:
bash.armv6hl 0:4.2.48-2.fc20

Complete!
#
# /bin/bash --version | head -1
GNU bash, version 4.2.48(1)-release (armv6hl-koji-linux-gnu)

となります。これをテストすると、2) すなわち、

env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

が、以下のような結果になる以外は、4.3.30と同じ結果になります。

/bin/bash: warning: x: ignoring function definition attempt
/bin/bash: error importing function definition for `BASH_FUNC_x'
test

これは一応問題ないので、このままこの /bin/bash を利用してもよさそうです。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Shellshockの検証用シェルスクリプトの動作について その2

2014-10-04 09:52:00 | Raspberry Pi
前回、5種類の Shellshock のテストシェルスクリプトの動作を示しましたが、追加分の動作をまとめてみます。

6) (CVE-2014-6278)
x_func='() { echo vulnerable; }' bash -c x_func



version 4.3.28
bash: x_func: command not found


version 4.2.47
vulnerable


version 4.3.25
vulnerable


version 4.3.26
vulnerable


version 4.3.27
bash43-27: x_func: command not found



7) (CVE-2014-6277、./test005-bad等はシェルスクリプトファイル名)
HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c :


version 4.3.28 (何も出力されない)

version 4.2.47
./test005-bad: line 6: 4174 Segmentation fault HTTP_COOKIE="() { x() { _; }; x() { _; }


version 4.3.25
./test005-bad25: line 7: 4179 Segmentation fault HTTP_COOKIE="() { x() { _; }; x() { _; }


version 4.3.26
./test005-bad26: line 7: 4186 Segmentation fault HTTP_COOKIE="() { x() { _; }; x() { _; }


version 4.3.27 (何も出力されない)



8) (CVE-2014-7187、4.3は問題ないようです。)
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"



version 4.3.28(何も出力されない)

version 4.2.47(何も出力されない)

version 4.3.25(何も出力されない)

version 4.3.26(何も出力されない)

version 4.3.27(何も出力されない)


9) (CVE-2014-6278)
x='() { _; } >_[$($())] { echo vulnerable; }' /usr/local/bin/bash -c "echo test"


version 4.3.28
test


version 4.2.47
vulnerable
test


version 4.3.25
vulnerable
test


version 4.3.26
vulnerable
test


version 4.3.27
test



10) (CVE-2014-7186、test009-bad 等はシェルスクリプトファイル名)
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"


version 4.3.28
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')
bash: warning: here-document at line 0 delimited by end-of-file (wanted `EOF')


version 4.2.47
./test009-bad: line 7: 4300 Segmentation fault /bin/bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF'
CVE-2014-7186 vulnerable, redir_stack


version 4.3.25
./test009-bad25: line 7: 4305 Segmentation fault bash43-25 -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF'
CVE-2014-7186 vulnerable, redir_stack


version 4.3.26
./test009-bad26: line 7: 4309 Segmentation fault bash43-26 -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF'
CVE-2014-7186 vulnerable, redir_stack


version 4.3.27
./test009-bad27: line 7: 4313 Segmentation fault bash43-27 -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF'
CVE-2014-7186 vulnerable, redir_stack


10番目のテストが、bash 4.3.27 と bash 4.3.28 で動作が異なる場合です。4.3.27 までは Segmentation fault を起こしてしまいます。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Shellshock の検証用シェルスクリプトの動作について

2014-10-02 20:11:02 | Raspberry Pi
この記事を書く前に、bash 4.3 patch 28 が出ましたので、先にそちらを示します。

# wget get http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-028
# wget get http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-028.sig
# gpg2 --verify bash43-028.sig
gpg: Signature made Thu Oct 2 02:23:01 2014 JST using DSA key ID 64EA74AB
gpg: Good signature from "Chet Ramey <chet@cwru.edu>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7C01 35FB 088A AF6C 66C6 50B9 BB58 69F0 64EA 74AB
#

前回コンパイルしたbash-4.3 ディレクトリに対してこのパッチをあてます。事前に /usr/local/bin/bash は、bash43-27 として待避しておきます。修正ファイルは少ないので、Raspberry Pi でもすぐに再コンパイルできます。

# bash --version | head -1
GNU bash, version 4.3.27(1)-release (armv6l-unknown-linux-gnueabihf)
# cd bash-4.3
# patch -p0 <../bash43-028
patching file parse.y
patching file y.tab.c
Ignoring potentially dangerous file name ../bash-4.3/patchlevel.h
patching file patchlevel.h
# make
....................
# make install 2>&1 | tee Install.log
....................
#
# bash --version | head -1
GNU bash, version 4.3.28(2)-release (armv6l-unknown-linux-gnueabihf)

4.3.28(2)で、(2)となっているのは、一度コンパイルした後で、ソースファイルを修正してコンパイルした回数を表します。patch 27 まであてて一度コンパイルしてから、patch 28 をあてて再コンパイルしたので (2) です。

さて、前回、Shellshock 対策で、bash 4.3 patch 27 をインストールしましたが、ついでに Pidora 2014 のオリジナル /bin/bash と、patch 25 (bash 4.3.25) と patch 26 (bash 4.3.26) も作成して、公開されている 5種類の Shellshock のテストシェルスクリプトの動作をまとめてみました。


1) (CVE-2014-6271)
env 'x=() { :;}; echo vulnerable' bash -c "echo test"

version 4.3.27(1) patch 27 まで bash43-27
test


version 4.2.47(1) Pidora2014 オリジナル版 /bin/bash
vulnerable
test


version 4.3.25(1) patch 25 まで bash43-25
bash43-25: warning: x: ignoring function definition attempt
bash43-25: error importing function definition for `x'
test


version 4.3.26(1) patch 26 まで bash43-26
bash43-25: warning: x: ignoring function definition attempt
bash43-25: error importing function definition for `x'
test



2)
env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"

version 4.3.27(1)
test


version 4.2.47(1)
vulnerable
/bin/bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
/bin/bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
/bin/bash: error importing function definition for `BASH_FUNC_x'
test


version 4.3.25(1)
bash43-25: warning: x: ignoring function definition attempt
bash43-25: error importing function definition for `x'
bash43-25: error importing function definition for `BASH_FUNC_x()'
test


version 4.3.26(1)
bash43-26: warning: x: ignoring function definition attempt
bash43-26: error importing function definition for `x'
bash43-26: error importing function definition for `BASH_FUNC_x()'
test



3) (CVE-2014-7186, ./test001-bad等はシェルスクリプトファイル名)
env 'f=() { :<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<k<<l<<m<<n
a
b
c
d
e
f
g
h
i
j
k
l
m
n
}' bash -c 'echo test'


version 4.3.27(1)
test


version 4.2.47(1)
./test001-bad: line 18: 26253 Segmentation fault env 'f=() { :<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<k<<l<<m<<n
a
b
c
d
e
f
g
h
i
j
k
l
m
n
}' /bin/bash -c 'echo test'


version 4.3.25(1)
./test001-bad25: line 18: 26270 Segmentation fault env 'f=() { :<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<k<<l<<m<<n
a
b
c
d
e
f
g
h
i
j
k
l
m
n
}' bash43-25 -c 'echo test'


version 4.3.26(1)
./test001-bad26: line 18: 26307 Segmentation fault env 'f=() { :<<a<<b<<c<<d<<e<<f<<g<<h<<i<<j<<k<<l<<m<<n
a
b
c
d
e
f
g
h
i
j
k
l
m
n
}' bash43-26 -c 'echo test'



4)
bash -c "export f=1 g='() {'; f() { echo 2;}; export -f f; bash -c 'echo \$f \$g; f; env | grep ^f='"

version 4.3.27(1)
1 () {
2
f=1


version 4.2.47(1)
/bin/bash: g: line 1: syntax error: unexpected end of file
/bin/bash: error importing function definition for `g'
1
2
f=1
f=() { echo 2


version 4.3.25(1)
bash43-25: g: line 1: syntax error: unexpected end of file
bash43-25: error importing function definition for `g'
1
2
f=1
f=() { echo 2


version 4.3.26(1)
bash43-26: g: line 1: syntax error: unexpected end of file
bash43-26: error importing function definition for `g'
1
2
f=1
f=() { echo 2



5) (CVE-2014-7169)
cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo


version 4.3.27(1)
date
cat: /tmp/echo: No such file or directory


version 4.2.47(1)
/bin/bash: x: line 1: syntax error near unexpected token `='
/bin/bash: x: line 1: `'
/bin/bash: error importing function definition for `x'
Thu Oct 2 12:37:38 JST 2014


version 4.3.25(1)
bash43-25: x: line 1: syntax error near unexpected token `='
bash43-25: x: line 1: `'
bash43-25: error importing function definition for `x'
Thu Oct 2 12:38:09 JST 2014


version 4.3.26(1)
bash43-26: x: line 1: syntax error near unexpected token `='
bash43-26: x: line 1: `'
bash43-26: error importing function definition for `x'
date
cat: /tmp/echo: No such file or directory



今回調べきれなかったので、4.3.27 と 4.3.28 の違いを示すシェルスクリプトは見つかりませんでした。もちろん 4.3.28 は、上述の5つのテストすべて 4.3.27と同じ結果です。

Pidora 2014 と Raspberry Pi でも十分テストや検証ができることが分かります。やはり動作する Linux ディストリビューションの種類も豊富で、SDカード一枚で気軽にOSすら変更できる Raspberry Pi は、1台は手元に置いておきたいマシンですね。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pidora2014における Shellshock (Bash の脆弱性)について

2014-09-29 23:21:36 | Raspberry Pi
Shellshock と呼ばれているbashの脆弱性ですが、Pidora2014 では正式にはまだ修正が行われていません。

# /bin/bash --version
GNU bash, version 4.2.47(1)-release (armv6hl-koji-linux-gnu)
.......
# date;yum update bash
Mon Sep 29 20:46:47 JST 2014
Loaded plugins: langpacks, refresh-packagekit
No packages marked for update
#  env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' \
           bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
#

そこで、ソースからコンパイルすることにします。bash は、ほとんどのシステムで問題なくコンパイル可能ですので、pidora で問題ないでしょう。しかし、OpenSSLと異なり、最新バージョンの bash でも脆弱性は修正されていないため、パッチをあてる必要があります。bash のパッチは累積パッチが用意されておらず、各パッチが、patchlevel.h を毎回更新していく形式ですから、全てのパッチを001からあてていく必要があります。

4.2 のパッチ数が 50 、4.3 のパッチ数が 27 ですから、ここは bash-4.3 を /usr/local/bin にインストールするのが簡単そうです。

例えば、こんな感じです。

# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3.tar.gz
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3.tar.gz.sig
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-001
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-001.sig
,,,,,
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-027
# wget http://ftp.jaist.ac.jp/pub/GNU/bash/bash-4.3-patches/bash43-027.sig

pidora では、gpg ではなくて gpg2 が標準ですから、パブリックキー 0x64EA74AB をインポートしてから、以下のようにチェックできます。

# gpg2 --verify bash-4.3.tar.gz.sig
gpg: Signature made Tue Feb 25 23:36:04 2014 JST using DSA key ID 64EA74AB
gpg: Good signature from "Chet Ramey <chet@cwru.edu>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 7C01 35FB 088A AF6C 66C6 50B9 BB58 69F0 64EA 74AB
#


同様に27個のパッチを入手してチェックします。

用意できたら、コンパイルしてみます。

# tar xvf bash-4.3.tar.gz
# cd bash-4.3
# patch -p0 <../bash43-001
-bash: patch: command not found

となってしまいました。patch をインストールします。

# yum install patch
......

準備ができましたのでパッチをあてます。

# patch -p0 <../bash43-001
Ignoring potentially dangerous file name ../bash-4.3/test.c
patching file test.c
Ignoring potentially dangerous file name ../bash-4.3/patchlevel.h
patching file patchlevel.h

# grep '#define PATCHLEVEL' patchlevel.h
#define PATCHLEVEL 1

# patch -p0 <../bash43-002
......
# patch -p0 <../bash43-027

# grep '#define PATCHLEVEL' patchlevel.h
#define PATCHLEVEL 27

# ./configure
.....
# make (約16分)
....
# make install 2>&1 |tee Install.log
...
# which bash
/usr/local/bin/bash
# bash --version
GNU bash, version 4.3.27(1)-release (armv6l-unknown-linux-gnueabihf)
..............
#


先ほどのテストを行ってみます。

# env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' \
bash -c "echo test"

test
#

脆弱性は解消できました。インターネットに直接接続するような場合は、/bin/bash を待避して、作成した/usr/local/bin/bash をコピーする必要があります。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Apache httpd と Komodo Edit

2014-09-17 21:23:47 | Raspberry Pi
Webサーバ上でいろいろテストを行う必要があったので、Pidoraで Apache の httpd を起動することにしました。Raspberry Pi なので、もっと軽いWebサーバもありますが、テストしたい内容が httpd を使って行うものなのでこうしています。

標準では入っていないのでインストールします。

# yum install httpd 

====================================================================
 Package           Arch          Version             Repository            Size
====================================================================
Installing:
 httpd             armv6hl       2.4.9-2.fc20        pidora-updates       1.1 M
Installing for dependencies:
 apr               armv6hl       1.5.1-1.fc20        pidora-updates        88 k
 apr-util          armv6hl       1.5.3-1.fc20        pidora-updates        79 k
 httpd-tools       armv6hl       2.4.9-2.fc20        pidora-updates        77 k

Transaction Summary
====================================================================
Install  1 Package (+3 Dependent packages)

#
# systemctil -l status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)
   Active: inactive (dead)

# chkconfig httpd
Note: Forwarding request to 'systemctl is-enabled httpd.service'.
disabled
#

ブート時に起動できるようにします。

# systemctl enable httpd.service
ln -s '/usr/lib/systemd/system/httpd.service'
'/etc/systemd/system/multi-user.target.wants/httpd.service'
#
# systemctl -l status httpd.service
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: inactive (dead)

#

enable になりましたが、reboot していないのでまだ httpd は動いていません。

# rpm -qa |grep httpd
....
httpd-2.4.9-2.fc20.armv6hl
# rpm -ql httpd-2.4.9-2.fc20
/etc/httpd
.....
/usr/lib/httpd/modules
.....
/var/www
/var/www/cgi-bin
/var/www/html
#

ですから、設定ファイルは /etc/httpd/conf/httpd.conf です。

httpd を起動します。

# systemctl start httpd.service
# ps -ef |grep httpd
root 1333 1 9 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1334 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1335 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1336 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1337 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 1338 1333 0 14:47 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 1340 548 0 14:47 pts/0 00:00:00 grep --color=auto httpd
#

ここで一人しか使っていないので、プロセス数を少なくします。/etc/httpd/conf.d/mpm.conf を作成して、次のようにしました。

# cat mpm.conf
<IfModule mpm_prefork_module>
StartServers 1
MinSpareServers 1
MaxSpareServers 2
</IfModule>
#
# systemctl stop httpd.service
# systemctl start httpd.service
#

これで準備ができました。標準ではWebページのトップのディレクトリは、
/var/www/html
ですが、ユーザ espiya のホームディレクトリにテストというディレクトを作成して、そちらをリンクします。

$ cd
$ mkdir test
$ su
# ln -s /home/espiya/test /var/www/html/test

標準では /home/espiya に httpd からのアクセス権がありませんので許可します。

# ls -ld /home/espiya
drwx------ ................................
# chmod 0755 /home/espiya
#

これで、

http://Raspberry Pi のIPアドレス/test/

として参照出来るようになります。

HTML のファイルを作成する場合、Pidora 上のエディタを使って作業してもよいのですが、やはり Windows 上のエディタの方が何かと便利です。今のところ使っているのは、Komodo Edit です。Komodo Edit は、リモートファイルをオープンする機能が付いているので、Pidora上のファイルをあたかもWindows上のファイルのように扱えるのが気に入っています。

詳しい解説は例えば、
RASPBERRY LIFE
に書かれていますが、そこで書かれているFTPを使う方法だとFTPサーバをインストールしなければいけないので、ここでは標準で利用できる OpenSSH を利用することにします。

設定は、Komodo Edit を実行して、メニューバーから、
[Edit] -> [Preferences]
で、Preferences ウィンドウを開き、左側の[Servers]というところをクリックします。設定は、

Server type : SFTP
Name : pidora (適当な名前)
Hostname : Raspberry Pi のIPアドレス
Port : 22
Username : espiya (適当なユーザ名)
Password : 空白ならKomodoを起動すると最初の一回だけ聞いてきます。
Default path : 該当ディレクトリをフルパスで指定します。

記入が終わったたら、[Add] をクリックして、[OK]をクリックします。

テストは、メニューバーの [File] -> [Open] -> [Remote File...] で、

Open Filesとうウィンドウが表示されます。[Server]の右側をクリックすると、先ほどの Name で指定した名前が表示されます。後はファイルを選択して、
[Open]をクリックすれば、ファイルを開けます。このファイルの内容を修正して、保存すると、自動的に Pidora 側のファイルが更新されます。日本語コードはUTF-8がお勧めです。予めPidora 側で小さな HTML5 のファイルをひな形として作っておいて、コピーして使うようにしています。

設定が間違ってエラーになってしまった場合は、設定を変更してから一度Komodoを終了してもう一度起動し直すのが無難です。

HTML5なら表示もできます。メニューバーの地球儀の形のアイコンをクリックするとウィンドウが分割されて下側にブラウザが開きます。Pidoraを使っているので、この機能を使わずに外部のブラウザで確認するのがよさそうです。

このように Komodo Edit は作成したプログラムの実行もできるのですが、Pidoraの場合は、別に ssh でログインして確かめた方が何かと便利だと思います。

この環境で HTML5 ファイルを作成するのはとても便利で、WindowsとPidoraをうまく使い分けて行うテストは、coLinux の時と同様に快適です。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pidora2014 のネットワーク関連コマンドについて

2014-08-29 12:40:33 | Raspberry Pi
Pidora2014 では、ifconfig 等のおなじみのネットワーク関連コマンドが標準では用意されません。

# yum provides /sbin/ifconfig
Loaded plugins: langpacks, refresh-packagekit
net-tools-2.0-0.15.20131119git.fc20.armv6hl : Basic networking tools
Repo        : pidora
Matched from:
Filename    : /sbin/ifconfig
なので net-tools をインストールすれば良いのですが、既に

[訳:非推奨になったLinuxネットワークコマンドの代替コマンド]

の通り非推奨なので、ここは ip コマンドを使うようにしましょう。

ip コマンドは、iproute2 に含まれており、例えば、 iproute2 入門などが参考になります。

先ほどの「非推奨」の所に、

ifconfig コマンド等の旧タイプのコマンドとの対応https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/

が紹介されていましたのでそれを利用するのが便利です。

よく使うものを抜粋します。

1) ifconfig -a 

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:OO:OO:OO brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.101/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::OOOO:OOOO:OOOO:OOOO/64 scope link
       valid_lft forever preferred_lft forever

2) ifconfig eth0 up

# ip link set dev eth0 up

3) ifconfig eth0 down

# ip link set dev eth0 down

4) ifconfig eth0 192.168.1.100 netmask 255.255.255.0

# ip addr add 192.168.1.100/255.255.255.0 dev eth0

5) arp -a

# ip n 
192.168.1.237 dev eth0 lladdr 78:OO:OO:OO:OO:OO REACHABLE
192.168.1.1 dev eth0 lladdr OO:90:OO:OO:OO:OO REACHABLE

6) netstat -r

# ip route
default via 192.168.1.1 dev eth0  proto static  metric 1024
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.101

7) netstat -a

# ss -a
Netid  State      Recv-Q Send-Q   Local Address:Port       Peer Address:Port
.......................
ifconfig コマンドが無いからといって、不用意に net-tools をインストールすることはせずに、ここは ip コマンドを利用するのが正解のようです。

Pidora2014 は、RedHat と同様に、NetworkManager を使っています。

# ps -ef |grep NetworkManager
root       160     1  0 22:22 ?        00:OO:OO /usr/sbin/NetworkManager --no-daemon

# systemctl -l status NetworkManager.service
NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled)
   Active: active (running) since Thu 1970-01-01 09:00:13 JST; 44 years 7 months ago
 Main PID: 160 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           mq160 /usr/sbin/NetworkManager --no-daemon

......................................
ブート時に動作するするようになっているのは以下で確認できます。

# chkconfig NetworkManager
Note: Forwarding request to 'systemctl is-enabled NetworkManager.service'.
enabled
NetworkManager を制御するコマンドが、nmcli です。RHEL7 等でも採用されているので以下のような解説しているものも増えてきました。

NetworkManagerの設定変更、nmtuiとnmcliについてまとめたよ!

Pidoraでは、ほとんど以前ご紹介した従来通りの設定で行えるので、nmcli コマンドを利用することはほとんど無いと思いますが、色々試して見たい場合には Raspberry Pi のような小型のマシンで行うのが何かと便利です。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pidora 2014 のアップデートと OpenSSL 1.0.1h のインストール

2014-06-15 23:19:04 | Raspberry Pi
前回インストールした Pidora 2014 (20) ですが、公開から2ヶ月くらい経っていますので、すぐにアップデートします。(以下では適当に改行してあります。)
# yum update 
.............
Install    1 Package  (+8 Dependent packages)
Upgrade  359 Packages

Total size: 239 M
Is this ok [y/d/N]: y
Downloading packages:
.......................
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-pidora-20
Importing GPG key 0x67FD194F:
 Userid     : "pidora (fedora20v6) <seneca.sigul@gmail.com>"
 Fingerprint: a01d 420a bd0c ff14 7858 14bb 4483 4c0f 67fd 194f
 Package    : pidora-release-20-7.rpfr20.noarch 
       (@pidora-rpfr/bluesky)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-pidora-20
Is this ok [y/N]: y
.......................

Complete!
#

このように GPG キーの取得があるので、2回 "y" を入れる必要があります。そうすると、アップデートが始まります。記録したい場合は、script コマンドが使えます。のっけからすごい分量ですので1時間以上かかります。

この結果、Kernel は 3.12.20 にアップされます。リブートして確認します。

# uname -a
  Linux raspi001
  3.12.20-1.20140521git7bd46e7.rpfr20.armv6hl.bcm2708
  #1 PREEMPT Wed May 21 15:54:03 EDT 2014 armv6l
  armv6l armv6l GNU/Linux

以前あったようなアップデートによって不具合がでることもないようです。

Pidora の利点は、含まれるパッケージが新しい事です。古い場合は、コンパイルしてインストールする必要がありますが、Pidora ではその必要はほぼ無いと思います。これは、非力な Raspberry Pi にとっては大切ですね。

このアップデートされた Pidora において、最近立て続けに脆弱性が問題になっている OpenSSL を見てみますと、Pidora 2014 の場合は 1.0.1e です。修正はされているようですが本当に問題ないかどうかは不明なので、実際にコンパイルしてみます。

# wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz
# wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz.md5
# wget http://www.openssl.org/source/openssl-1.0.1h.tar.gz.sha1

のようにソースを取り寄せて、md5 と sha1 のチェックサムを確認してから、展開してコンパイルしてみます。コンパイルの方法は、以前インストールした例を参考にします。

# tar xvf openssl-1.0.1h.tar.gz
....................
# cd openssl-1.0.1h
# ./config shared
....................

Configured for linux-armv4.
# make
....................
 (約50分)
# make test
....................
ALL TESTS SUCCESSFUL.
../util/shlib_wrap.sh ./heartbeat_test
make[1]: Leaving directory `/root/src/openssl-1.0.1h/test'
OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
OpenSSL 1.0.1h 5 Jun 2014
built on: Sun Jun 15 00:00:00 JST 2014
platform: linux-armv4
options: bn(64,32) rc4(ptr,char) des(idx,cisc,16,long)
idea(int) blowfish(ptr)
compiler: gcc -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -Wa,--noexecstack -DTERMIO -O3
-Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m
-DSHA1_ASM -DSHA256_ASM -DSHA512_ASM
-DAES_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/local/ssl"
#
# make install 2>&1 |tee Install.log
..........................
#

これで、/usr/local/ssl に 1.0.1h がインストールできました。

# ls /usr/local/ssl
bin certs include lib man misc openssl.cnf private
#

Pidora 2014 のライブラリ等が新しいので、多くのソフトはこのように、ほぼ問題なくコンパイルできそうです。Raspberry Pi なので、時間はものすごくかかります。例えば gcc などのコンパイルは気が遠くなりそうです。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pidora 20 (2014r1) のインストール

2014-06-14 14:08:58 | Raspberry Pi
2014年4月30日に Pidora 20 (2014r1)が公開されましたので、インストールしてみます。日本の場合は、こちらからダウンロードできます。

pidora-2014-05-01

ここから、以下のファイルをダウンロードします。

Pidora-2014-R1.zip

前回同様、Pidora-2014-R1.zip.sha1 からSHA1のチェックサムを確認してから、展開して Pidora-2014-R1.img (2GB) を得ます。md5のチェックサムも確認しておきましょう。ちなみに、チェックサムを確認するために、Microsoft の fciv.exe を使っていますが何かと便利です。

今回はチェックの為に既存の Pidora18 のSDカードに上書きするのではなくて、新しいSDカード(16GB)を利用して、「新規」にインストールしてみます。

Windows で、SDカードを差し込んでから Win32DiskImager.exe を起動して、Image File に、Pidora-2014-R1.img を指定して書き込みます。

書き込みが完了したSDカードを Windows から見ると、前回同様に、
FAT でフォーマットされた、約50MBのカードに見えます。

ブートすると初期設定を促されますので、前回 同様に設定します。

FAT16のパーティションには以下のようなファイルが入ってます。

bootcode.bin
boot.scr
cmdline.txt
config-3.12.17-2.20140415git1782035.rpfr20
config.txt
config.txt.hdmi_nooverscan
config.txt.hdmi_overscan
config.txt.ntsc_japan
config.txt.ntsc_northamerica
config.txt.pal
config.txt.pal_brazil
fixup_cd.dat
fixup.dat
fixup_x.dat
grub\
grub\splash.xpm.gz
kernel-3.12.17-2.20140415git1782035.rpfr20.img
kernel.img
lost+found\
start_cd.elf
start.elf
start.elf.desc
start_x.elf

設定は、Pidora18の場合と同じにしておきます。

Pidora18 の入っているSDカードは、カードリーダを用意してマウントします。
# mount /dev/sdd2 /mnt

# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root       15200840 2988448  11556044  21% /
devtmpfs          222884       0    222884   0% /dev
tmpfs             223000       0    223000   0% /dev/shm
tmpfs             223000     316    222684   1% /run
tmpfs             223000       0    223000   0% /sys/fs/cgroup
tmpfs             223000       0    223000   0% /tmp
/dev/mmcblk0p1     51082   22810     28272  45% /boot
/dev/sdd2       15234120 2565608  12015320  18% /mnt

# uname -a 
Linux raspi001 
   3.12.17-2.20140415git1782035.rpfr20.armv6hl.bcm2708 
   #1 PREEMPT Fri Apr 25 17:53:16 EDT 2014 armv6l armv6l 
   armv6l GNU/Linux
#                   (表示は、適当に折り曲げてあります。)

後は /mnt から、Pidora 18 で作業して作成されたデータをコピーすれば移行完了です。Pidora の場合は、/home にユーザデータを、その他は /usr/local 等の固定したディレクトリに予めデータを集約しおくのが良さそうです。

Pidoraのバージョンアップは、yum からも出来ると思いますが、時間がかかることが予想されるRaspberry Pi の場合は、ハードディスクと異なり気軽に交換できるSDカードの利点を活かして、新しいカードに新規にインストールして行うのが良さそうです。Raspberry Pi を使うには、カードリーダは必需品です。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Pidora のアップデート 3回目

2014-01-06 10:50:22 | Raspberry Pi

またまた利用している Pidora のアップデートをしてみました。といっても、実際に行ったのは去年の12月中旬で、現在は更にカーネルの修正が実施されています。

今回は大量の変更があり、所要時間は2時間以上です。(表示は少し修正してあります。)

# yum update

............................................

===========================================================
 Package               Arch    Version                     Repository      Size
===========================================================
Installing:

.......................................................


     replacing  raspberrypi-kernel.armv6hl 3.6.11-5.20130415git197d15b.rpfr18
     replacing  raspberrypi-kernel.armv6hl 3.6.11-7.20130415git197d15b.rpfr18
     replacing  raspberrypi-kernel.armv6hl 3.6.11-12.20130920git966efc7.rpfr18
Updating:

GConf2                armv6hl 3.2.6-2.fc18.1307170601kf   pidora-updates 983 k

.......................................................

 openssh               armv6hl 6.1p1-9.fc18                pidora-updates 265 k
 openssh-askpass       armv6hl 6.1p1-9.fc18                pidora-updates  61 k
 openssh-clients       armv6hl 6.1p1-9.fc18                pidora-updates 362 k
 openssh-server        armv6hl 6.1p1-9.fc18                pidora-updates 295 k

........................................................

 raspberrypi-kernel-headers
                       armv6hl 3.12.0-4.20131106git839f349.rpfr18
                                                           pidora-rpfr-updates
                                                                          827 k
 raspberrypi-vc-demo-source
                       armv6hl 20131018git4c14569-5.rpfr18 pidora-rpfr-updates
                                                                           30 M
 raspberrypi-vc-firmware
                       armv6hl 20131018git4c14569-5.rpfr18 pidora-rpfr-updates
                                                                          2.9 M
 raspberrypi-vc-libs   armv6hl 20131018git4c14569-5.rpfr18 pidora-rpfr-updates
                                                                          218 k
 raspberrypi-vc-libs-devel
                       armv6hl 20131018git4c14569-5.rpfr18 pidora-rpfr-updates
                                                                          235 k
 raspberrypi-vc-static armv6hl 20131018git4c14569-5.rpfr18 pidora-rpfr-updates
                                                                          152 k
 raspberrypi-vc-utils  armv6hl 20131018git4c14569-5.rpfr18 pidora-rpfr-updates
                                                                          115 k

......................................................................


Transaction Summary
===========================================================
Install    3 Packages (+11 Dependent packages)
Upgrade  351 Packages
Remove     1 Package

Total download size: 247 M
Is this ok [y/N]:y
..................................
Total                                           384 kB/s | 247 MB     10:59
..................................
#

ここで、新しいカーネルを使うには、
# cd /boot
# cp kernel-3.12.0-4.20131106git839f349.rpfr18.img kernel.img
# reboot

とすればよいのですが、これを実行すると外部から ssh でログインできなくなりますので設定が終わるまでは古いカーネルを利用することにします。

# cat /proc/version
Linux version 3.6.11 (mockbuild@) (gcc version 4.7.2 20120921 (Red Hat 4.7.2-2)
(GCC) ) #1 PREEMPT Fri Jun 14 13:05:58 EDT 2013
#

というわけで、これが現在利用しているカーネルです。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする