■ 概要
http://kozos.jp/vmimage/index.html
で公開している「FreeBSDをインストール済みのVirtualBox用イメージ」に,
以下を追加インストールしたものです.
ログイン方法などの,詳しい使いかたは
上記イメージの説明
を参照してください.
- フィーリングで読むアセンブラ入門の
アセンブラ出力環境 (cross2-20121216)
- .Xdefaults, .emacs, .tcshrc (日本語入力などが行えます)
日本語入力は kinput2 経由では半角/全角で日本語モード,Shift+Spaceで日本語
解除です.emacsは mule もしくは emcws で起動して,Ctrl+O で日本語入力です.
日本語ターミナルはktermで起動します.
- シリアル経由でのログイン (後述)
■ 使いかた
一般ユーザのホームディレクトリに,以下が置いてあります.
- cross-20121216.tgz, cross2-20121216.tgz
- cross-20121216.zip, cross2-20121216.zip
- binutils-2.21.1.tar.bz2, gcc-3.4.6.tar.gz, gdb-7.3.1.tar.gz, newlib-1.20.0.tar.gz
*.tgzと*.zipは以下で解凍できます.
% tar xvzf cross-20121216.tgz
% unzip cross-20121216.zip
以下を実行してみてください.
% tar xvzf cross2-20121216.tgz
% cd cross/sample
% make clean ; make
% cd ../exec
% make clean ; make ; make run
% cd ../printf
% make clean ; make ; make run
なおインストールされているのは cross2-20121216 ですが,cross2-20121216 は
cross-20121216 の上位互換で,さらに /usr/local/cross2 を /usr/local/cross に
nullマウントしてあるので,cross-20121216 の環境もコンパイルできます.
■ ネットワーク経由でのログイン
ネットワーク経由でログインしたい場合には以下のようにします.
- VirtualBoxのNATを有効化し,さらにポートフォワーディングで10022番あたりを22番ポートに向ける.
- ゲストのroot/userのパスワードを変更する.もしくは公開鍵のみとかにする.
(標準のuser/userやroot/rootだと,ブルートフォースで簡単に入られてしまう
ので注意!)
- ゲストのFreeBSDで,スーパーユーザで以下を実行
# service sshd onestart
もしくは/etc/rc.confに以下を記述してreboot
sshd_enable="YES"
- ホストPCに対して10022番ポートにsshで接続.
■ シリアル経由でのログイン
ちょっとログインして操作したい際や,ネットワーク経由でやるほどでもないときの
ためにシリアル経由でのログインを有効化してあります.
セキュリティ的にネットワークのSSHを開けたくないときにも有効です.
具体的には,ゲストOSのFreeBSD側でCOM1ポートにログインプロンプトを出す設定に
なっています./etc/ttys の以下の行です.
ここを無効にすると(もしくはoffにすると)シリアルログインを無効化できます.
#ttyu0 "/usr/libexec/getty std.9600" dialup off secure
ttyu0 "/usr/libexec/getty std.115200" vt100 on secure
シリアル経由でログインしたい場合,以下のようにします.
(VirtualBoxの設定)
- 「シリアルポートを有効化」→有効にする
- 「ポート番号」→COM1を選択する.これがゲストOS側で利用するポートになる.
(FreeBSD的には,「/dev/ttyu0」に相当する)
- 「ポートモード」→ホストデバイスを指定
- 「ポート/ファイルパス」→ホストOS側でゲスト側に見せるポートを指定する.
ホストOSがFreeBSDで,ホスト側から接続したい場合には,/dev/ptyP0 あたりを
指定しておけば,ホストからは /dev/ttyP0 でゲストに接続できる.
(ホストの/dev/ttyP0→ホストの/dev/ptyP0→ゲストの/dev/ttyu0のように中継される)
この場合はホスト側から以下のようにして接続できる.
# cu -l /dev/ttyP0
ホストがWindowsとかの場合はよくわからないが,たぶんTeraTermか何かで接続
できるのかなあ.
viなどで表示が崩れたりシェルでCtrl-Lが効かなかったりする場合には,
環境変数TERMをvt100あたりに設定する.画面サイズが合っていない場合には,
さらに以下を実行してください.
% eval `resize`
(注意)「`resize`」は「'resize'」(シングルクォート)ではありません.
アスキーコードで「0x60」の「`」です.
ファイル転送したい場合には,以下のようにする.以下はホストがFreeBSDの場合.
- プロトコルにYMODEMを利用するのが楽.まず,ホストにlrzszをインストール
しておく.(ゲストにはインストール済み)
- シリアルでゲストOSにログインし,「lrx --ymodem」を実行.
- 実行後に「~C」を押下.コマンド入力に入る.
- 「lsx --ymodem <ファイル名>」を入力.
- これはゲスト側で受信する場合の例.送受信を逆にしたい場合には,
lrxとlsxを逆に実行する.
注意1:XMODEMと異なり受信側ではファイル名は指定しない(ファイル名も転送される)
注意2:受信側に同名のファイルがすでに存在するとうまく転送できない
注意3:転送後はmd5チェックサムを計算し,一致していることを確認するとよい
注意4:ssh経由で接続している先でやる場合には,「~C」のようにそのまま押下すると
sshへのエスケープシーケンスになってしまうので,「~~C」のようにして「~」
を2回押す.
注意5:失敗した場合には,しばらくほっておくとタイムアウトして終了するので
またやりなおす.
注意5:TeraTerm使う場合には,メニューからファイル転送を選択すればOK