-*- coding: japanese-shift-jis-dos -*- ■■■■■ ディレクトリについて ■■■■■ ディレクトリとは、Windows でいうフォルダーである。 作業に応じて、ディレクトリを作成し、その中で ファイルを作成する。 ホームディレクトリ ユーザー毎に作成されるディレクトリ 「~/」であらわされ、ここに作業内容別にディレクトリを 作成して使用する。各ユーザー毎の設定等もここにある。 カレントディレクトリ 現在いるディレクトリ 「.」であらわされる。 pwd コマンドでカレントディレクトリを調べることができる。 親ディレクトリ 現在いるディレクトリの親ディレクトリ。 「../」であらわされる。 Linux のディレクトリツリー構造 / ルートディレクトリ ├ bin 基本コマンド ├ boot 起動に必要なファイル ├ dev デバイスファイル ├ etc 設定ファイル ├ home ユーザーのホームディレクトリがこの下にできる ├ lib 共有ライブラリ ├ mnt マウントポイント | ├ win | ├ cdrom | ├ USBマスストレージ | └ floppy ├ opt 追加アプリケーション ├ proc プロセス情報など ├ root root用ホームディレクトリ ├ sbin システム管理用コマンドなど ├ tmp 一時的なファイル ├ usr 各種プログラムなど | ├ X11R6 | | ├ bin/ 基本コマンド | | └ doc/ 各種ライブラリ | ├ bin/ 基本コマンド | ├ src/ | ├ local | | ├ bin | | ├ etc | | ├ man | | └ src | └ lib/ 各種ライブラリ └ var 変更されるデータ http://www.glasscom.com/tone/linux/BasicOperation/DirHandling.htm http://www.atmarkit.co.jp/flinux/rensai/theory02/theory02a.html ■■■■■ よく使用するコマンド ■■■■■ コピー cp コピー元ファイル名 コピー先ファイル名(ディレクトリ名) tar.bz2のファイルの圧縮 tar jcvf ディレクトリ名.tar.bz2 ディレクトリ名 tar.bz2のファイルの展開 tar jxvf ファイル名.tar.bz2 FD からのコピー mcopy a:\*.* . ディレクトリ作成 mkdir ディレクトリ名 ディレクトリ移動 cd ディレクトリ名 カレントディレクトリ確認 pwd 管理者ユーザー(root)に切り替える。 su ■■■■■ Linux 環境の整備 ■■■■■ 異なるアプリケーション間での コピー アンド ペースト コピーしたい領域をマウスでドラッグ(emacsは、範囲指定 C-y)。 ペーストしたいアプリケーションで真中ボタンをクリック (または、左右同時クリック)。 Windows のファイルを読めるようにする mkdir /mnt/win mount -r -t ntfs -o nls=utf8 /dev/hda1 /mnt/win (mount -r -t vfat /dev/hda1 /mnt/win ←fatの場合) 何もエラーが出てこなくなれば正常にマウントされた (mount -t iso9660 -r /dev/scd0 /mnt/cdrom ←cdのマウント) 起動時に /mnt/win を自動的にマウントするには、 /dev/hda1 /mnt/win ntfs defaults,iocharset=utf8 0 0 を、/etc/fstab に書く(uid=500の人にも見ることができるようにid foo) .emacs.my.el を編集 ;;対応する括弧をハイライト (show-paren-mode t) ;;セッション (require 'session) (add-hook 'after-init-hook 'session-initialize) ;; hilight region(リージョンをハイライト表示) (transient-mark-mode 1) ;;前回のデスクトップの状態を回復 (load "desktop") (desktop-load-default) (desktop-read) ;;ポイント上のワードをファイル名として認識する (ffap-bindings) -- 以下は好みで -- ;;Shift-Space で ime を起動 (global-set-key [?\S- ] 'canna-toggle-japanese-mode) ;;C-o で、1行挿入 (global-set-key "\C-o" 'open-line) session.el を Meadow の中からコピー (M-xで入力したり、入力したファイル名を記憶/回復) shell を起動 M-x shell (過去のコマンドを呼び出すのは、M-p M-n) コピー cp /mnt/win/Meadow/site-lisp/session.el /usr/share/emacs/site-lisp .emacs.my.el にエラーが無いかどうかをチェック M-x load-file .emacs.my.el メニューバーを英語にしたい場合には、.emacs.el の以下の部分をコメントアウト ;;;日本語メニューバー ;;(if(equal(substring(concat(getenv"LANG")"__")02)"ja") ;;(load"menu-tree")) Emacs の行数を増やす(次回emacs起動時に行数が変わる) ~/.Xresources の Emacs.geometry を書き換える Emacs.geometry: 80x38 ついでに、 XTerm*geometry: 80x38+100 KTerm*geometry: 80x38+100 M-x shell で、以下のコマンドを入力する xrdb -load ~/.Xresources ログイン時に emacs/kterm を自動実行するようにする gnome-session-properties の[自動起動するプログラム]タブで、 emacs、kterm を追加する。 [オプション]タグで、[ログイン時ににスプラッシュスクリーンを表示する] を無効にする。 キーボードのキーを入れ替える(好みで) Caps<->Ctrl の入れ替えその1 Vine Linux 2.xの場合は、rootで/etc/X11/XF86Configを開いて以下の部分を 修正する。 # XkbOptions "ctrl:swapcaps" ←行頭の#を取る 保存終了したら、X Window Systemを再起動する。 (Vine 3.1では駄目) Caps<->Ctrl の入れ替えその2 X Window Systemの設定ファイル(XF86ConfigまたはXF86Config-4)を変 更してもキーが入れ替わらないときは、X Window Systemのキー配列定義 ファイルを変更する必要がある。rootでログインして、 /usr/X11R6/lib/X11/xkb/keycodes/xfree86を開き、以下のように変更 変更前 変更後 = 66; = 37; = 37; = 66; 変更したら、保存終了してX Window Systemを再起動する Caps<->Ctrl の入れ替えその3 以上の設定でも[Ctrl]キーと[Caps Lock]キーが入れ替わらないとき は、ユーザーのホームディレクトリに、例えば.xmodmapのようなファイル を作成し、以下の内容を記述する。 remove Lock = Caps_Lock remove Control = Control_L keysym Control_L = Caps_Lock keysym Caps_Lock = Control_L add Control = Control_L add Lock = Caps_Lock keycode 37 = Alt_L keycode 131 = Alt_L keycode 120 = Alt_L keycode 129 = Alt_L keycode 208 = Alt_L add Mod1 = Alt_L M-x xmodmap /etc/X11/xinit/Xmodmap を実行 (xev コマンドにより、押されたキーコードが分かる) (Alt-Tab でWindowを切り替えられるように 全てAlt_L) fedoracore4 は、[デスクトップ]-[個人設定]-[キーボード]で出てくる [キーボードの設定]ダイアログボックスの[レイアウトのオプション] で、ある程度は変更することが可能である。 (fedoracore4は、 /etc/X11/Xmodmap) ■■■■■ uClinux ボードの準備 ■■■■■ ブートプログラム解凍(パソコンで言うBIOSプログラム) gunzip redboot.mot.gz 「pull oneself up by one's own bootstraps:自力で進む、自力で向上する」 という口語から生まれた言葉で、コンピュータを起動する過程を指す。 (参考4:ブートプログラムの作成方法) h8write をコンパイル(ブートプログラムの書き込みに使用) (http://www.computerartisan.com/aizuit/linux/h8write.c) gcc -o h8write h8write.c 外付けCOMポート(RS232C)の使用準備 modprobe pl2303 RS232Cとはテレタイプで使用された信号で、最も単純な 通信方式。1対1でしか通信できない。 テレタイプとは、FAXができる以前の情報機器で、 タイプを打つと、遠隔地でそれがプリントされる。 組み込みプログラム製作では、非常によく使用される。 h8write で、ブートプログラムを書き込む ジャンパー設定 o o o o | | o o o o △ ./h8write -3069 -f25 redboot.mot /dev/ttyUSB0 実行すると、「turn on target power! and press return」 とのメッセージが出るので、H8MAXの電源をONし、3秒ほど待って Enter キーを押す。1分以上反応が見られない場合には、 C-c で h8write を停止し、H8MAX の電源を OFF にして もう一度やってみる。 minicom をインストールする(テレタイプソフト) rpm -i minicom-2.1-1-rh7.3.i386.rpm /etc/minirc.dfl を以下のように書き換える(頭のスペースは取り除く) pr port /dev/ttyUSB0 pu baudrate 38400 pu bits 8 pu parity N pu stopbits 1 pu scriptprog /usr/bin/runscript pu minit pu mreset pu mhangup minicom を立ち上げる 終了するときには、C-a Z X [Enter] H8MAXを動作させる ジャンパーが以下の状態になっていることを確認して電源ON(SW下側) o o o o | | o o o o △ ┌─────────┐ DP93902A - eeprom ESA:│00:02:cb:01:a4:5d │ └─────────┘ 四角の中の数字を記憶する マウスでドラッグして反転させて、emacs に C-y で取り込む ■■■■■ ネットワークの準備 ■■■■■ DHCPサーバーにする準備 /etc/sysconfig/network-scripts/ifcfg-eth0 を書き換える #DEVICE=eth0 #BOOTPROTO=dhcp #ONBOOT=yes DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.1 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 ネットワーク再スタート /etc/rc.d/init.d/network restart DHCPサーバーをインストールする rpm -i dhcp-2.0pl5-6vl1.i386.rpm DHCPサーバーを立ち上げる /etc/dhcpd.conf を作る subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.2 192.168.1.20; } host h8max { #hardware ethernet 00:02:cb:01:3c:5a; hardware ethernet 00:02:cb:01:6c:5a; fixed-address 192.168.1.12; } DHCPサーバーの動作確認 一度、 /usr/sbin/dhcpd -f -d を実行し、 H8MAX が正しくIPアドレスを取れているかどうかを確認。 確認方法は、minicom を立ち上げ、H8MAX を電源投入(リセット)。 ブートローダーオープニングメッセージで、 「IP:192.168.1.12/255.255.255.0」と表示されていればOK。 確認できたらば、C-c で、dhcpd を停止。 (リスタート:ipconfig /renew??????) DHCPサーバーを起動 /etc/rc.d/init.d/dhpcd restart # 再起動 TFTPサーバーをインストールする rpm -i tftp-server-0.16-5vl1.i386.rpm tftp サービスを立ち上げる /etc/xinetd.d/tftp を作成する service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } /etc/exports を修正する /tftpboot 192.168.1.12(rw,no_root_squash) /etc/inetd.conf を編集(行頭の # を削除する) tftp dgram udp wait root /usr/sbin/tcpd in.tftpd tftpに公開するディレクトリを作成 mkdir /tftpboot /tftpboot に、h8max-20030802.bin をコピー/所有権の設定 cp h8max-20030802.bin /tftpboot chown nobody:nobody /tftpboot inetd を再起動 /etc/rc.d/init.d/inet restart [アプリケーション]-[システムツール]-[サービスの設定]で、 dhcp、nfsにチェックを入れる。 以上の全ての設定が、正しく動いていることの確認 パソコンを再起動し、minicom を実行する。 H8MAXの電源を入れる。 minicom 上から次のコマンドをペーストする。 load -r -b 0x400000 h8max-image.bin 3つのLED(Ethernet用)が点滅することを確認。 ■■■■■ gcc開発環境の作成 ■■■■■ 開発環境の構築 コンパイラ等のインストール cd / tar jxvf h8300-elf-tools.i386linux.tar.bz2 ROMファイルツールのインストール cd /root tar zxvf genromfs-0.5.1.tar.gz cd genromfs-0.5.1 make mkdir /usr/man mkdir /usr/man/man8 make install cd .. (参考1:http://strawberry-linux.com/h8max/devel.php) (参考2:http://strawberry-linux.com/h8max/elf2flt.php) カーネルの構築 カーネルのソースを展開 cd /root tar jxvf uClinux-dist-h8300.tar.bz2.tar cd uClinux-dist-h8300 オープニングタイトルのファイルを編集(やりたい人だけ) ./uClinux-dist-h8300/vendors/strawberry-linux/H8MAX/motd カーネルのソースよりカーネルを作成 make xconfig その後、出てくるダイアログで以下の操作を行う [Target Platform Selection]ボタンを押すと出てくるダイアログで、 [SecureEdge/SecureEdgeVPN]ボタンをドラッグし、一覧の中の [strawberry-linux/H8MAX]を選択する。 [Default all settings(lose changes){HELP}]の左の[y]にチェックを入れる [Main Menu]をクリックする [Save and Exit]をクリックする (VineLinux2.6の場合は(注8)参照) メッセージがたくさん流れる。終了したら make dep 終了したら make かなり時間がかかるが、これで、カーネルイメージと必要なファイル が作成された 電源投入時の load/exec を自動化する redboot1.mot を、H8 に書き込む ./h8write -3069 -f25 redboot1.mot /dev/ttyUSB0 ■■■■■ 一時的開発環境の作成 ■■■■■ NFSブートのためのファイル作成 NFSのルートにあるべきファイルを展開する cd /tftpboot tar zxvf linux-2.4-root.tar.gz NFS ブートのためのブートイメージをコピーする cp nfs.bin /tftpboot (参考1) NFSサーバーの設定 /etc/exports の修正(行頭にスペース無し) /tftpboot 192.168.1.12(rw,no_root_squash) /etc/hosts.deny の修正(行頭にスペース無し) ALL:ALL /etc/hosts.allow の修正(行頭にスペース無し) ALL:192.168.1.0/255.255.255.0 NFSサーバーのスタート exportfs -a /etc/rc.d/init.d/nfs restart NFSサーバーの動作確認 showmount -e localhost 以下のように表示されればOK Export list for localhost: /tftpboot 192.168.1.12 ■■■■■ 最初のプログラムの作成 ■■■■■ Makefile 複数ファイルがある時に、コンパイルを効率的に行う プログラムコード hello.c ハードウエア解説 h8_3052.pdf - 258p ■■■■■ 参考URL ■■■■■ (参考1:nfsブートイメージの作成) まだ! uClinux-dist-h8300/linux-2.4.x の、.config を修正 オリジナルとの diff は、以下のとおり < # CONFIG_BLK_DEV_NBD is not set --- > CONFIG_BLK_DEV_NBD=y 108c108,110 < # CONFIG_IP_PNP is not set --- > CONFIG_IP_PNP=y > CONFIG_IP_PNP_BOOTP=y > CONFIG_IP_PNP_RARP=y 394,395c396,397 < # CONFIG_NFS_V3 is not set < # CONFIG_ROOT_NFS is not set --- > CONFIG_NFS_V3=y > CONFIG_ROOT_NFS=y 400a403 > CONFIG_LOCKD_V4=y 416c419,420 < # CONFIG_PARTITION_ADVANCED is not set --- > CONFIG_PARTITION_ADVANCED=y > CONFIG_MSDOS_PARTITION=y make dep make ---参考url--- http://lists.sourceforge.jp/mailman/archives/uclinux-h8-devel /2003q3/000096.html 「kernel-2.4(for H8MAX) http://prdownloads.sourceforge.jp/uclinux-h8/4357/linux.bin.gz と rootimage archive http://prdownloads.sourceforge.jp/uclinux-h8/4482/linux-2.4-root.tar.gz をダウンロードしてBOOTP,TFTP、NFS環境を作って実行 http://www.lancard.com/modules/news/article.php?storyid=13 http://sourceforge.jp/projects/uclinux-h8/files/?release_id=937#937 (参考2:NFSサーバーの設定の仕方) http://www.a-yu.com/opt/nfs01.html http://yang.amp.i.kyoto-u.ac.jp/~yyama/Linux/NFS.html (参考3:カーネルイメージにファイルを追加) ./uClinux-dist-h8300/romfs の下にファイルをコピー ./uClinux-dist-h8300/romfs/etc/rc に、最初に実行する (参考4:ブートプログラムの作成方法) tar jxvf ecos-2.0.i386linux.tar.bz2 export PATH=$PATH:/root/ecos-2.0/tools/bin export ECOS_REPOSITORY=/root/ecos-2.0/packages cd ecos-2.0 ecosconfig new h8max redboot ecosconfig add CYGPKG_IO_ETH_DRIVERS ecosconfig add CYGPKG_DEVS_ETH_NS_DP83902A ecos-2.0/ecos.ecc を編集(console と、=ttySC1 は続けて1行にすること) cdl_option CYGDAT_REDBOOT_DEFAULT_BOOT_SCRIPT { user_value 1 "\"load -r -b 0x400000 h8max.bin;exec -c \\\"console =ttySC1,38400n81 nfsroot=192.168.1.1:/tftpboot\\\"\\n\"" ecosconfig check ecosconfig tree ecos-2.0/packages/hal/h8300/h8max/current/include/platform.inc を編集 (CSCR の値を 0x1f -> 0xff) INIT_REGS_DATA(CYGARC_CSCR ,0xff) make h8300-elf-objcopy -O srec install/bin/redboot.elf ../redboot1.mot http://ip-sol.jp/h8max/redboot.php#devel http://www.nishimoto-site.net/~h8max/?%5B%5BRedBoot%BC%AB%C6%B0%BC%C2%B9%D4%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%5D%5D (注1)USB-Flash のマウント(vine3.1では自動マウントされるので必要ない) mount -t vfat /dev/sda1 /mnt/usbhdd umount /mnt/usbhdd (注2)ペーストのできる term gnome-terminal (注3)CDのマウント(vine3.1では必要ない) (注4)Vine2.6で、USBシリアルを使えるようにする(vine3.1では必要ない) ドライバソース pl2303.c を、 /usr/src/linux-2.0.22/drivers/usb/serial/ にコピー ドライバをコンパイル gcc -D__KERNEL__ -DMODULE -Wall -c -I/usr/src/linux/include pl2303.c コンパイルしたものを、以下のディレクトリにコピー cp pl2303.o /lib/modules/2.4.22-0vl2.10/kernel/drivers/usb/serial/pl2303.o USBシリアルを USBポートにさして、 modprobe pl2303 を実行 (注5)h8write.c をカレントディレクトリにコピーし、修正 cp ..................... #define RSLINE "/dev/ttyUSB0" h8write.c をコンパイルする gcc h8write.c -o h8write (注6)DHCP サーバーにする????????? ifconfig eth0 192.168.1.1 netmask 255.255.255.0 netconfig で、 IPアドレス:192.168.1.1 netmask: 255.255.255.0 にする http://www.mm-labo.com/computer/linux/dhcp.html (注7)in.tftpd を使用する場合には、下記のコマンドを用いて、in.tftpd のサービスを有効にしてください。 # chkconfig tftp on (注8)ncurses をインストールすれば、make menuconfig が実行できる make menuconfig (kterm上で実行すること。emacs上では駄目) -- uClinuxのコンフィグ画面が現れます。 "Target Platform Selection"を選んでEnterを押す。 -- ベンダー・プロダクトの選択画面が現れるので、 「(SecureEdge/SourceEdgeVPN) Vendor/Product」を選択してEnterを押す。 -- ↑↓でstrawberry-linux/H8MAX(一番下)を選択します。選択はスペースキー。 -- "Default all settings"を選んでスペースキーを押す。[ ]が[*]になる。 -- →ボタンを押して画面下部 を選択します。Enterを押すと、"Do you wish to save your new kernel configuration?"と尋ねられるので そのままEnetrを押して< Yes >を選択。 (Esc/Esc?) -- ncurses のインストール [root src]# tar zxvf ncurses-5.3.tar.gz [root src]# cd ncurses-5.3 [root ncurses-5.3]# ./configure --with-shared --with-normal [root ncurses-5.3]# make [root ncurses-5.3]# make install [root ncurses-5.3]# ldconfigl http://www.ryouto.jp/linux/linux_23.html#POS001 linux-2.4.x\arch\h8300\kernel\gpio.c:62 extern char *_platform_gpio_table(int length); linux-2.4.x\arch\h8300\platform\h8300h\aki3068net\crt0_ram.S:28 .global SYMBOL_NAME(_platform_gpio_table) linux-2.4.x\arch\h8300\platform\h8300h\aki3068net\crt0_ram.S 81 __platform_gpio_table: linux-2.4.x\arch\h8300\platform\h8300h\generic\crt0_rom.S:28 .global SYMBOL_NAME(_platform_gpio_table) linux-2.4.x\arch\h8300\platform\h8300h\generic\crt0_rom.S 86 __platform_gpio_table: linux-2.4.x\arch\h8300\platform\h8300h\h8max\crt0_ram.S:28 .global SYMBOL_NAME(_platform_gpio_table) linux-2.4.x\arch\h8300\platform\h8300h\h8max\crt0_ram.S 80 __platform_gpio_table: (参考リンク) http://park11.wakwak.com/~domo/uClinux.html http://strawberry-linux.com/cgi-bin/h8max/bbs/wforum.cgi?mode=allread&no=43&page=0 ホームページ上のelf2fltで紹介されている./configureの引数の "--with-bfd-include-dir="の値を、"/usr/local/include/include"(include を2重)にしてelf2fltを作成する。(もちろんインストールもする) http://uclinux-h8.sourceforge.jp/pukiwiki/pukiwiki.php?%B3%AB%C8%AF%B4%C4%B6%AD http://ip-sol.jp/cgi-bin/h8max/bbs/wforum.cgi?mode=allread&no=36&page=0 /pub/linux/Vine/Vine-3.1/i386/ http://www.google.co.jp/search?hl=ja&c2coff=1&q=XF86Config+ps2+anaconda&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja http://hijiri3.s65.xrea.com/sorekore/develop/h8/h802_redboot.htm H8/3069FフラッシュマイコンLANボードではじめるRedBoot入門。 http://www.cv.its.hiroshima-cu.ac.jp/~kazutaka/Windows/tar.html UNIX系OS 上での解凍・圧縮方法 http://sourceforge.jp/projects/uclinux-h8/files/ ---------------------------------- uClinux-dist-h8300/linux-2.4.x/arch/h8300/kernel/setup.c h8300_gpio_init() uClinux-dist-h8300/linux-2.4.x/arch/h8300/kernel/gpio.c _platform_gpio_table uClinux-dist-h8300/linux-2.4.x/arch/h8300/platform/h8300h/generic/crt0_rom.S uClinux-dist-h8300/linux-2.4.x/arch/h8300/platform/h8300h/h8max/crt0_ram.S .global SYMBOL_NAME(_platform_gpio_table) ------------------------------------------------------------------------------ mount -t vfat /dev/fd0 /mnt/floppy ------------------------------------------------------------------------------ console でのキーマップの変更 http://www.linux.or.jp/JF/JFdocs/Keyboard-and-Console-HOWTO-15.html http://www.big.or.jp/~mio/ca/ca_old/lx_old/lxman/lx_man_keyboard.htm キーボード上のCaps Lock と Control を交換する場合には以下のようにして くださ い.(キーマップ0-15の使用を前提としています.dumpkeys | head -1 でチェック できます) 以下のファイルを作って keymaps 0-15 keycode 58 = Control keycode 29 = Caps_Lock keycode 41 = Escape keycode 14 = grave keycode 100 = Alt keycode 88 = BackSpace #f12 loadkeys < ファイル keycode は、showkey コマンドで確認する。 29 ctrl 94 無変換 92 変換 キーボードの設定を、起動時に自動的に行うには、/etc/rc.d/rc.local ファ イルに、次のような記述を追加します。 /usr/bin/loadkeys /usr/local/etc/106keyboard.map showkey コマンドで、キーコードを確認する。