をダウンロード、解凍し、runme.plを実行すれば、正常にコンパイルできるようになる。
これはvmwareを実行するホストで行うもので、ゲストOSで行うものではない。
をダウンロード、解凍し、runme.plを実行すれば、正常にコンパイルできるようになる。
これはvmwareを実行するホストで行うもので、ゲストOSで行うものではない。
$ sudo apt-get install eclipse
$ eclipse
いきなりエラーで起動できない。
sunから jdk-1_5_0_15-linux-i586.binをダウンロードしてきて実行
$ sudo chmod 777 jdk-1_5_0_15-linux-i586.bin
$ sudo ./jdk-1_5_0_15-linux-i586.bin
これは解凍するだけのようだ。
https://help.ubuntu.com/community/JavaをみるとIcedTeaを薦めているが、ここでは謹製のsunのjavaを使った。eclipseを起動するときの表示からjavaを探しているパスをみて/usr/lib/j2sdk1.5-sunに移動。
$ sudo mv jdk1.5.0_15/ /usr/lib/j2sdk1.5-sun
$ eclipse
無事起動できた。
まだperlの開発環境は入っていない。ここではEPICを入れる。メニューのHELP->Software Updates->Find and Installを選択。
Search for new Features to installを選択して、nextをクリック。
New Remote Siteをクリックして以下のように入力
でてきたEPICを選択して、Finishをクリックした後、以下のようにチェックを付ける。
next
リスタート
New ProjectでPerlが表れる。ここではプロジェクト名をmyfirstperlとして作成。
myfirstperlを右クリックしてnew->fileを選択。ファイル名をstart.plをして作成。
適当なスクリプトを作成後セーブし、デバッグボタン(虫のボタン)をクリック。以下のように設定し、Debugボタンをクリックするとデバッグできる。
しかし、PadWalkerがないため、ローカル変数を表示できないと表示されているのでインストールする。
$ sudo apt-get install libpadwalker-perl
eclipseを再起動後、ローカル変数が表示できるようになった。
フォルダ作成
$ mkdir ~/MYK
$ cd ~/MYK
http://kernel.org/pub/linux/kernel/v2.6/から最新カーネルGET
$ ls
linux-2.6.24.tar.bz2
デフォルトの.configを/bootから持ってくる。
$ tar xjf linux-2.6.24.tar.bz2
$ cd linux-2.6.24/
$ cp /boot/config-2.6.18-6-486 ./.config
menuconfigを起動
$ make menuconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/kxgettext.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:32:20: error: curses.h: No such file or directory
...............
menuconfigがエラー。ncursesがないのでインストール
$ apt-cache search ncurses|grep dev
btscanner - ncurses-based scanner for Bluetooth devices
lib64ncurses5-dev - Developer's libraries for ncurses (64-bit)
libncurses5-dev - Developer's libraries and docs for ncurses
libncursesw5-dev - Developer's libraries for ncursesw
librote-dev - a simple C library for VT102 terminal emulation - development
libtexttools-dev - Ada and C++ library for writing console applications
$ sudo apt-get install libncurses5-dev
もう一度menuconfig
$ make menuconfig
こんどは成功。ここでいろいろなコンパイルオプションを選択できる。
コンパイル開始
$ sudo make-kpkg --initrd --revision=mykernel.1.0 kernel_image
あとは以下のコマンドでインストールできるようだ。(実際はやってない)
# dpkg --install ../linux-image-2.6.24_mykernel.1.0_i386.deb
LD_LIBRARY_PATHはLinuxのダイナミックリンカーであるld-linux.soが共有ライブラリを探すためのパスを設定した環境変数。
プログラムが起動したとき、まずld-linux.soが読み込まれ、これが必要な共有ライブラリを探してリンクする。その後プログラムが実行される。
ld-linux.soはまず環境変数LD_LIBRARY_PATHから探す。ただし、 setuid/setgidされているプログラムは除外される。
次に、/etc/ld.so.cacheから探す。これはバイナリファイル。速い。
最後に、/usr/lib, /libから探す。
/etc/ld.so.cacheは/sbin/ldconfigによってつくられる。ldconfigはライブラリのシンボリックリンクも作成する。ldconfigは/etc/ld.so.confファイルに記述してあるディレクトリに対して操作を行う。
LD_PRELOADに共有ライブラリのパスが書かれていると、ld-linux.soはまずこれらのライブラリを優先させる。これによりプログラム中のある関数だけをフックすることができる。
あるプログラムがどの共有ライブラリを使うかは、lddコマンドで確認できる。
プログラムが本当にld-linux.soを使っているかは readelf -l /bin/date で確認できる。
LD_DEBUG環境変数を使用すると、プログラムがダイナミックリンクするときのさまざまな情報を表示できる。
1 |
$ LD_DEBUG=all date |
/etc/ld.so.nohwcapが存在すれば、ld-linux.soは最適化されていないライブラリを使う。
ある実行ファイルがどのダイナミックリンカーを使っているかは以下のように調べる。
1 |
$ readelf -l xxx | grep interpreter |
ライブラリや実行ファイルのファイル形式はa.outとELFがあるが、上記の説明はすべてELFに関するもの。
smbclientはコマンドラインで利用するマイクロソフトネットワークの共有フォルダにアクセスするツール。ftpコマンドのように扱える。
まず、目的のマシンとフォルダを指定して起動する。
$ smbclient //machine/folder
passwd :
Domain=[machine] OS=[Windows] Server=[]
smb: \>
あとは、cdやlsでフォルダを移動し、getやput、またはmgetやmputでファイルのやり取りをする。
smb: \> get data.zip
コンピュータ名の変わりにIPアドレスを指定しても、接続できる。
$ smbclient //192.168.0.100/folder
ユーザー名を指定したいときは、-Uを用いる。
$ smbclient //machine/folder -Uusername
終了はq
smb: \>q
Fedoraにハードディスクを増設したときの書き置きです。
使っていたハードディスクが少なくなってきたので、一台増設して、/home以下を増設したハードディスクにマウント予定。
現在の/etc/fstab
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
ハードディスクを増設しgpartedを起動して、ext3でフォーマット。
なかなか終わらないと思っていたら、mkfs.ext3のナイス値(プロセス優先度)が19あたりに設定されていた。-10にreniceしたら一瞬で終わった。
次にランレベル1で起動。
# init 1
e2labelでラベルの設定
今ある/homeを/home_bに移動。
# mv /home /home_b
/etc/fstabを編集して、/homeの行を追加
/home_bのデータを/homeにコピー。以下の画像で、cp -prを使っているが、cp -aの方がいい。
後は再起動して問題なければ、/home_bを削除。
TUIとはText User Interfaceの略でGUIとCUIの中間みたいな奴。
ncursesを使ってCUIでGUIっぽっくなっている。TUI部分でソース、アセンブラ、レジスタの表示ができる。しかし使っているとやたらと画面が乱れることが多い。
操作中の画面は、上半分は固定で、下半分はCUI。
gdb tuiの基本操作
・C-x C-a
TUIとCUIの切り替え
・C-x 1
TUI1画面
・ C-x 2
TUI2画面
・(gdb) la src
ソースを表示
・(gdb) la asm
アセンブラ表示
・(gdb) la regs
レジスタ表示
・矢印キーがソースのスクロールになってしまうので、コマンドを戻したい場合はCtrl+P, Ctrl+Nなどを使う
すでにWindows98,2000,XP,VineがインストールされているPCにFreeBSD7.0をインストールした時の記録です。
FreeBSD7.0をインストールする前のハードディスク構成は下の図のようになっていました。 ハードディスクは3台あります。Cドライブには98と2000が、ZドライブにはXP、Zの左となりの3つがVineです。EとFはただのデータです。これらをインストールした順番は98,2000,XP,VineでブートマネージャにはVineインストール時にインストールされたgrubが使われています。
今回G:のところにFreeBSD7.0を新規にインストールしました。インストール時のブートマネージャの選択のところは、[None]を選択しました。
よってインストールしたあとも自動でFreeBSD7.0をブートすることはできません。以下のような手順で、このFreeBSD7.0をブートできるようになりました。
まずVineを起動して、/etc/grub.confの内容をメモしておきます。
—————————————————————————————–
default=0
timeout=5
title Vine Linux (Current kernel)
root (hd1,0)
kernel /vmlinuz ro root=LABEL=/1 resume2=swap:/dev/hdb5 vga=0x314 nosmp noapic nolapic
initrd /initrd.img
title Vine Linux (Previous kernel)
root (hd1,0)
kernel /vmlinuz.old ro root=LABEL=/1 resume2=swap:/dev/hdb5 vga=0x314
initrd /initrd.old.img
title Other
rootnoverify (hd0,0)
chainloader +1
—————————————————————————————–
次に、ここのやり方をまねして、ここからgrub-0.97-i386-pc.ext2fsを落として、grubフロッピーを作りました。
以下がこのフロッピーで起動した画像です。ここで上記のメモにしたがってコマンドを入力し、最後にbootを実行すると、ちゃんとVineがブートできることを確認しました。
つぎにここを参考に、以下のようなコマンドを実行すると、FreeBSD7.0がブートできました。
最後にVineを起動して、/etc/grub.confにFreeBSD7.0用のブートコマンドを追加しました。
———————————————————–
default=0
timeout=5
title Vine Linux (Current kernel)
root (hd1,0)
kernel /vmlinuz ro root=LABEL=/1 resume2=swap:/dev/hdb5 vga=0x314 nosmp noapic nolapic
initrd /initrd.img
title Vine Linux (Previous kernel)
root (hd1,0)
kernel /vmlinuz.old ro root=LABEL=/1 resume2=swap:/dev/hdb5 vga=0x314
initrd /initrd.old.img
title Other
rootnoverify (hd0,0)
chainloader +1
title FreeBSD7.0
root (hd2,2,a)
kernel /boot/loader
———————————————
以下のようになり、FreeBSD7.0がブートできるようになりました。
Visual Studioがたまに落ちる。しかも落ち方がすごくて他のアプリも巻き込んで、OS再起動しかなくなるときがある。
しかしなぜかコンソールアプリだけは生きていることが多い。そこでCygwinをあらかじめ起動しておけば、CygwinからVisual Studioを強制終了することで、OSの再起動をまぬがれることができる。
CygwinでVisual Studioを殺す方法は以下のとおり。
$ ps -W | grep -i msdev
3640 0 0 3640 ? 0 16:35:33 C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE
$ /usr/bin/kill.exe -9 -f 3640
ここではexeの名前はmsdevとしたが、それぞれ置き換えてください。