FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

FreeBSDのメンテナンス(2016年03月)

自宅や職場にFreeBSD 10.2を入れたパソコンが3台あります。
まず1台分のメンテナンスの備忘録です。

- FreeBSD 10.2から10.3への移行

手順1 (バージョンの確認、freebsd-updateコマンドの確認)
バージョンが10.2 Releaseであることを確認する。
freebsd-updateコマンドが適用するために、中途半端に10.2のStableでないことを確認する。
もし10.2 ReleaseでなければReleaseのソースをCSUP等で入手してmake world...結構面倒)
$ uname -a

freebsd-update コマンド自身を更新する。
# freebsd-update fetch && freebsd-update install

手順2 (作業領域 /var の空き容量の確認)
/var/dbに数百MB程度(500MB?)、余裕があるか確認。なければ不要なファイルを削除
$ df

不幸にも?/varがあふれそうなら、/var/db/freebsd-updateの領域を確保する。

手順3 (カーネルの更新とユーザーランドの入れ替え)
# freebsd-update upgrade -r 10.3-RELEASE
数十分待って、各種質問に答える。

# /usr/sbin/freebsd-update install && reboot (1回目はカーネルの更新)

再起動後にもう一度
# /usr/sbin/freebsd-update install (2回目はユーザーランドの入れ替え)

(その後、古いライブラリに依存したアプリを再コンパイル)

さらに再起動後にもう一度
# /usr/sbin/freebsd-update install (3回目はライブラリの入れ替え)

以上の作業で、FreeBSD 10.3に更新が完了。

freebsd-updateは実施環境により2回または3回実施しますが、
10.2から10.3への更新では2回で完了です。

もし3回目(4回目以上)を実行しても、下記メッセージが出るだけで問題ありません。

# freebsd-update install
No updates are available to install.
Run '/usr/sbin/freebsd-update fetch' first.




付録 portsnap を使ったportsツリーの更新

手順4-1 portsツリーの新規作成 (初回のみ実行。)
#portsnap fetch && portsnap extract && portsnap update

手順4-2 portsツリーの更新 (2回目以降 or 更新する場合)
# portsnap fetch update

手順4-3 全パッケージの更新
# pkg upgrade

スポンサーサイト

libftdi 0.18の導入

目的: FTDI社のFT232RL(とdsPIC33FJ256GP506A)を搭載したプリント基板を試作する機会がありました。
まずFT232RLの評価のためにオープンソースのlibftdi環境をFreeBSD上に構築します。
そして実際にFT232RLのシリアル通信の通信方法を試してみます。(うまくいったらその後、BitBangも試します。)

FT232RLその1

環境の構築編:FreeBSDのPortから libftdi 0.18 をインストールし、インストール後にexamplesディレクトリの
いくつかのサンプルを実行する。

FreeBSD_MACHINE# cd /usr/ports/devel/libftdi
FreeBSD_MACHINE# make install (必要に応じてclean)
FreeBSD_MACHINE$ cp -p /usr/ports/devel/libftdi/work/libftdi-0.18/examples/hogehoge.c hogehoge



サンプロプログラムの修正と実行:
全てのサンプルプログラムはFreeBSD環境でそのままコンパイルできないので修正する。
修正箇所は先頭の#includeに関する所だけ。

#include <stdio.h> (そのまま)
#include <stdlib.h> (追加する)
#include </usr/local/include/ftdi.h> (絶対パスに修正する)

サンプルプログラムを修正したらコンパイルし実行する。実行時にroot権限がないと動作しないので注意。

FreeBSD_MACHINE$ gcc -o test test.c -lftdi -L/usr/local/lib
FreeBSD_MACHINE# ./test
ftdi_read_chipid: 0
FTDI chipid: 5431AEC5



FT232RLその2

当初の目的であるserial通信のサンプルを実行する。
serial_read.cのサンプルはコマンドの引数でボーレートを一見変更できるように見えるが、引数からは反映せず
115200bpsの固定である。dspicに書き込んでいるプログラムは57600bpsで動作させていてそのままでは動作せず。
今回は、serial_read.c側を修正し、プログラム内のbaudrateの定数を2か所115200から57600に変更し
コンパイルする。実行すると定期的にread 1024 bytesの文字が標準出力され、その後、1024byte単位で
受信が行われている模様。なお、dspicからシリアル側に10bitsのADの取得値と電圧に変換した文字列を
出力するようにプログラムを書き込んでいる。
Teratermは遠隔のFMV-6000CL(FT232RLのボードをUSB接続したマシン)にログインするために使っている。

FreeBSD_MACHINE$ gcc -o serial_read serial_read.c -lftdi -L/usr/local/lib
FreeBSD_MACHINE# ./serial_read
read 1024 bytes
1[mV], 2
A/D = 6[mV], 8
A/D = 2[mV], 3
A/D = 0[mV], 3
A/D = 0[mV], 2
A/D = 0[mV], 4
A/D = 8[mV], 11
(後略)



以下、ご参考。FreeBSDのUSBデバイスの確認方法。
FUJITSUのデスクトップパソコン(FMV-6000CL)につないだUSBデバイスの一覧を得る

FreeBSD_MACHINE# usbconfig
ugen0.1: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen1.1: at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen2.1: at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen3.1: at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen4.1: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen3.2: at usbus3, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
ugen4.2: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen4.3: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON


ugen3.2:は、市販のUSB接続のキーボード(2000年頃に購入?)
ugen4.2:は、この度自作したdspicの評価ボードに搭載したFTDI社のFT232RL
ugen4.3:は、市販のDigilent社のJTAG HS1 Programming Cable


ugen4.2:の詳細を確認すると、Vendor=0x0403、Product=0x06001でFT232RLの初期設定そのものですね。

FreeBSD_MACHINE# usbconfig -d 4.2 dump_device_desc
ugen4.2: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0008
idVendor = 0x0403
idProduct = 0x6001
bcdDevice = 0x0600
iManufacturer = 0x0001
iProduct = 0x0002
iSerialNumber = 0x0003
bNumConfigurations = 0x0001



ugen4.3:の詳細を確認すると、HS1の中身はVendor=0x0403、Product=0x06010でFT2232D等の初期設定に
少しカスタマイズしたようですね。

FreeBSD_MACHINE# usbconfig -d 4.3 dump_device_desc
ugen4.3: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0040
idVendor = 0x0403
idProduct = 0x6010
bcdDevice = 0x0700
iManufacturer = 0x0001
iProduct = 0x0002
iSerialNumber = 0x0003 <210205331885>
bNumConfigurations = 0x0001

FreeBSDのメンテナンス(2012年1月)

あけましておめでとうございます。

自宅や職場にFreeBSD 8.2を入れたパソコンが3台あります。
この数日間、FreeBSDのメンテナンスを行ったので、その備忘録です。

- FreeBSD 8.2から9.0への移行

手順1 (バージョンの確認、freebsd-updateコマンドの確認)
バージョンがStableでなくReleaseであることを確認。
(ReleaseでなければReleaseのソースをCSUP等で入手してmake world...結構面倒)
$ uname -a

freebsd-update コマンド自身を更新する。
# freebsd-update fetch && # freebsd-update install


手順2 (作業領域 /var の空き容量の確認)
/var/dbに数百MB程度(500MB?)、余裕があるか確認。なければ不要なファイルを削除
$ df

不幸にも?/varがあふれそうなら、/var/db/freebsd-updateの領域を確保する。
(/varを700MBしか作成していないマシンがあるので...)
mkdir /home/freebsd-update && ln -s /home/freebsd-update /var/db/freebsd-update


手順3 (カーネルの更新とユーザーランドの入れ替え)
# freebsd-update upgrade -r 9.0-RELEASE
数十分待って、各種質問に答える。(/varがあふれないことを祈りながら)

# freebsd-update install && reboot (カーネルの更新)

再起動後にもう一度
# /usr/sbin/freebsd-update install (ユーザーランドの入れ替え)


手順4 パッケージの更新
古いライブラリに異存したパッケージをリビルドする。

- portsnap を使ったportsツリーの更新の例

手順4-1 portsツリーの新規作成 (初回のみ、今回は未実施)
#portsnap fetch && portsnap extract && portsnap update

手順4-2 portsツリーの更新 (2回目以降、今回該当)
# portsnap fetch && portsnap update

手順4-3 パッケージのの更新を確認
# portversion -vL=

手順4-4 パッケージの更新

全部更新する場合。(今回はこちら)
# portupgrade -ar
# portupgrade -ary (-yは全てyesと回答)

一部のみ更新する場合。 (rsyncとapacheとその依存のみ更新)
# portupgrade -r rsync apache


手順5 (古いライブラリの削除)
# freebsd-update install && reboot (古いライブラリの削除)


以上の作業で、FreeBSD 9.0に更新が完了。

(2012/1/25)追記
手順5の古いライブラリを削除後、apacheやsamba等が立ち上がらなくなった。
古いライブラリの内、libz.so.5が削除されたのが原因。

# vi /etc/libmap.conf
libz.so.5 libz.so.6
を記述して回避。

FreeBSDのメンテナンス(2011年4月)

自宅や職場にFreeBSD 8.xを入れたパソコンが3台あります。
この数日間、FreeBSDのメンテナンスを行ったので、その備忘録です。

- FreeBSD 8.1から8.2への移行

手順1
/var/dbに数百MB程度、余裕があるか確認。なければ不要なファイルを削除
(/varを700MBしか作成していないマシンがあるので...)
$ df

手順2
バージョンがStableでなくReleaseであることを確認。
(ReleaseでなければReleaseのソースをCSUP等で入手してmake world...結構面倒)
$ uname -a

手順3
# freebsd-update upgrade -r 8.2-RELEASE
数十分待って、各種質問に答える

# freebsd-update install && reboot

再起動後にもう一度
# /usr/sbin/freebsd-update install


- portsnap を使ったportsツリーの更新

手順1-1 portsツリーの新規作成 (初回のみ、今回は未実施)
#portsnap fetch && portsnap extract && portsnap update

手順1-2 portsツリーの更新 (2回目以降、今回該当)
# portsnap fetch && portsnap update

手順2 portsの更新を確認
# portversion -vL=

手順3 portsの更新

全部更新する場合。
# portupgrade -ar

今回の実施例。 (rsyncとapacheとその依存のみ更新)
# portupgrade -r rsync apache


プロフィール

まつばば

Author:まつばば
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。