サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
www15.big.or.jp/~yamamori
YAMAMORI Takenori 謎の処理系 SunOS 4.1.4 with Linux/FreeBSD/Solaris 謎の肉声アカペラコーラス 謎の回路で電子工作 ........ yamamori
■コラム■ その他のgccのオプション gccには,ほかにもたくさんのオプションがあります. 詳しくは,gccのオンラインマニュアルや, gccとともにインストールされるgcc.infoファイルをご参照下さい. ここでは筆者がよく用いるいくつかのオプションを紹介します. ・「-pipe」 「-pipe」を付けると,cpp・cc1・asの処理がUNIXのパイプでつながり, 一時ファイルを作らずに効率良く処理が行なわれるため, コンパイル速度が少し速くなります.ただし,その効果は環境に依存します. 詳しい実行内容は,「-v」オプションを付けて確認してみると面白いでしょう. ・「-fomit-frame-pointer」 「-fomit-frame-pointer」は,フレームポインタを省略するためのオプションです. C/C++では関数が呼び出された際に, スタックに積まれた引数を指し示すための
■コラム■ シェル関数action()を直接使ってみよう RedHat系Linuxは,起動時にコンソールに[ OK ]という緑色の メッセージを次々に表示しながらOSが立ち上がります. これを表示しているのは,/etc/rc.d/init.d/functionsの中で定義されている シェル関数のaction()(またはqaction(),daemon())です. このaction()などのシェル関数はrcスクリプト中で頻繁に使用されており,また, 関数の呼び出し時には右側に「()」を付けずに単にactionなどと記述さているため, 通常コマンドと区別がつかず,rcスクリプトを読むのに苦労するかも知れません. そこで,ためしにaction()などのシェル関数を手動で使ってみる方法を紹介します. 下図のように,bash上でfunctionsファイルを読み込み, 感じを出すために「Bringin
●C言語のコンパイルテスト gccでプログラムをコンパイルしたり,あるいはgcc自体の動作を確認するためには, とりあえず何らかのソースファイルを用意しなければなりません. こういう場合,単に“Hello World !”と表示するだけの hello.cのような短いプログラムが役に立ちます. $ gcc hello.c ← (*1) $ ./a.out ← (*2) Hello World ! $ rm a.out $ make hello ← (*3) cc hello.c -o hello $ ./hello Hello World ! $ size hello ← (*4) text data bss dec hex filename 847 224 24 1095 447 hello $ CC=gcc; export CC ← (*5) (※注1) $ CFLAGS=-O2; ex
●スナップショットを使う QEMUに-snapshotオプションを付けて起動するとスナップショットモードになります. スナップショットでは,QEMUの仮想ディスクは読み出し専用になり, 仮想ディスクに対するゲストOSからの書き込みは,別途,差分データとして 記録されるようになります.この差分データは,QEMUの終了時に破棄されます. したがって,ゲストOSのインストール直後などの安定な状態の仮想ディスクを 保存しておき,その後は専ら-snapshotを付けてQEMUを起動するようにすれば, いつまでもゲストOSを安定な状態に保てます. また,-snapshotを使用中に,本当に仮想ディスクを更新したくなった場合は, QEMUモニター上でcommitコマンドを実行して,変更分を仮想ディスクに 書き込むことができます. ○qemu-imgによる差分ファイル QEMUの終了時に差分データを破棄す
●仮想ディスクの作成 ゲストOSをインストールするための仮想ハードディスクは, qemu-imgコマンドで作成します.QEMUでは,次のように, rawまたはqcowのフォーマットの仮想ディスクを使用します. ○rawディスク rawディスクは,ハードディスクのイメージファイルをそのまま用いる, 最も単純な仮想ディスクです.普通のイメージファイルなので 「mount -o loop,offset=32256」のようにして直接マウントすることもできます. rawディスクを作成するには,下図のようにディスクサイズを指定して qemu-imgコマンドを実行します.rawフォーマットを指定する-f rawオプションは 省略可能です. なお,rawディスクはholeを含んだファイル(※注)になり, ファイルサイズと実際のディスク使用量が一致しませんので, 図*のように,ls -lsを実行して,ディス
●LinuxのインストールCD-ROMを使う方法 LinuxなどのOSのインストールCD-ROMは,実際のインストールだけでなく, ハードディスクからのファイルの救出にも使用することができます. その方法を順に説明します. ○インストーラの途中でシェルに切替え RedHat系Linuxでは,インストーラの起動後,実際のインストールを行なわずに 仮想コンソールを切替えてシェルの画面を表示することができます. RedHat系Linux以外のOSでも,たいていインストーラの途中でシェルに抜ける手段が 用意されているはずです. 具体的には下図のように,「インストールの種類」の選択画面あたり,または この画面で「カスタム」を選んだあとの「ディスクパーティションの設定」あたりまで インストーラを進め,ここで[Ctrl]+[Alt]+[F2]を押して, シェルの画面に切替えるとよいでしょう. ●図 Li
SunOS 4.x で、DNS を直接引くための-誰もやらない-もうひとつの方法。 (LD_PRELOAD を使って libc.so.1.9 を組み換えずに済ます方法) SunOS 4.x では、ネームサービスとしては NIS がメインで考えられています。libc の中の gethostbyname() などの名前解決のための関数は、NIS が動いていれば NIS のみを、NIS が動いていなければ /etc/hosts のみを参照し、DNS は参照されません。SunOS 4.x で DNS を引かせるためには、少し特殊な設定を行なう必要があります。 これにはいくつかの方法がよく知られていますが、 ここでは、さらに(恐らく誰もやらなかった)もうひとつの方法を紹介します。 ■ SunOS 4.1.4 で DNS を引くための従来の方法 よく知られている方法として、以下の3種類があります。これ
●コンパイル過程の詳細 ここでは,C/C++のソースから実行バイナリを作成することの全体を指して 広義的にコンパイルと呼んでいますが,このコンパイルは, プリプロセッサの処理・狭義のコンパイル・アセンブル・リンクという過程から 成り立っています. gccを起動すれば,これらの必要な過程が自動的に実行されます. gccというのは,実は「ドライバ」と呼ばれるプログラムであり, gcc自身はコンパイルなどの実作業を何も行なわず, gccの内部から,実際にコンパイル・アセンブル・リンクなどを行なうコマンドを 呼び出すことによって一連のコンパイル動作を行なっているのです.(下図) ここで,途中のcc1またはcc1plusの部分は, ソースファイルがC言語かC++かによって変わります. C++の場合は,gccで起動した場合でもcc1plusが呼び出されます. +-----+ | cpp | Cプリプロ
ここでは,PXE(Preboot eXecution Environment)対応のネットワークカードを用い, Linux/FreeBSD/DOSなどのOSをディスクレスブートするための方法を解説します. ●PCでもできるディスクレスブート ハードディスクもフロッピーディスクもCD-ROMも使わずに ネットワークのみからブートしてOSが立ち上がるディスクレスブートは, 本来はUNIXワークステーションが得意とするところです. SPARCなどのUNIXワークステーションのROMモニタには, RARP/TFTPといった,ネットワークブートの機能が標準で備わっています. さらにUNIX系のOSであれは,rootファイルシステムをNFS上に取ることができるため, ローカルディスクが一切必要なくなり,これでディスクレスマシンが実現できます. 一方PCでは,ディスクレスブートはあまり一般的ではありませ
●QEMUの使用方法 QEMUの使用方法を以下にまとめます. ○ドキュメントの参照方法 QEMUのマニュアルは,man qemuおよびman qemu-imgで読めます.また,前述のとおり, /usr/local/share/doc/qemuにあるHTMLファイルも参照してください.そのほか, qemuなどのコマンドをオプションなしで実行しても,簡単なヘルプが表示されます. ○おもなQEMUのオプション QEMUには多数のオプションがありますが,おもなものを下の表にまとめてみましたので, 参考にしてください. ・表 QEMUでおもに使用するオプション --------------------+---------------------------------------------------------- オプション | 意味 --------------------+---------
■Solaris 9 インストール CD-ROM を、Linux で完全マウントする■ 普通にマウントしてもその全容が読み出せない、Solaris のちょっと特殊なインストール CD-ROM を、Linux 上でマウントする方法を解説します。Solaris のディスクレスインストール時にも役立つはずです。 ●Solaris のインストール CD-ROM の特殊性 Solaris の CD-ROM は、単なる iso9660(+RockRidge) のファイルシステムではなく、その先頭部分に Sun のディスクラベルが書かれていて、通常のハードディスクと同じように複数のスライス(SunOS パーティション)を持った、ある意味特殊な CD-ROM です。その中には、Solaris の ufs フォーマットのスライスもあります。 このため、Solaris のインストール CD-ROM を、Lin
§2「rcスクリプトのためのシェルスクリプトの基礎知識」 ここではシェルスクリプトの基礎について解説します. ただし,シェルスクリプトそのものの話題となると範囲が広過ぎるため, おもにrcスクリプトでの使用を前提に,焦点を絞ります. なお,シェルスクリプトといっても実はあまり難しく考える必要はなく, 原始的には,単に実行したいコマンドをそのまま並べればよいのです. たとえば,rc.localに独自の設定を追加したいような場合, 単に起動したいコマンドをスクリプトの最下行に追加するだけで十分な場合も 多いでしょう.ただし,OSによってすでにインストールされているrcスクリプトには, さまざまなシェル文法が使われ,少々複雑な書き方もされています. したがって,これらを読みこなすためにはそれなりのシェルスクリプトの知識が 必要になるでしょう. ●スクリプトで使用されるシェル rcスクリプトはBシ
SunOS 4.1.4 の /sbin には、たった7つのコマンドしかありません。しかも、これらはブート時、/usr をマウントする前までに一時的に使用されるだけです。/sbin の内容は、少なければ少ないほどシステムとして美しく、シンプルを極める /sbin のコマンド群には一種の美学を感じます。 ● /sbin にある7つのコマンド SunOS 4.1.4 の /sbin には、次のように 7つのコマンドのみが存在します。 OSのブート時、これらのコマンドが実行される段階では、まだ /usr はマウントされていません。したがって、libc.so.* もまだ使用できず、/sbin のコマンドはすべて静的リンクされたバイナリです。 ● /sbin の必要性 そもそもの UNIX のディレクトリ構成は、/bin や /usr/bin に基本コマンドがあり、/etc や /usr/etc にシ
●ネットワーク QEMUのネットワークには,ユーザモードネットワーク(-user-net)と, TUN/TAPを使ったネットワークの2種類があります. TUN/TAPの設定スクリプトが存在しない場合は,デフォルトで-user-netになります. ○ユーザモードネットワーク(-user-net) ユーザモードネットワーク(-user-net)の構成を下図に示します. このように,-user-netは,QEMU内部に仮想のNAT/DHCPサーバやDNSサーバなどが 自動的に用意される,非常に便利なモードです. ゲストOSは,単にDHCPクライアントとして動作させるだけでよく, そのままLANやインターネットにアクセスすることができます. しかし,-user-netでは,ゲストOS側のネットワークが,ホストOS側からは 直接見えません.このため,ホストOS(またはLAN上のほかのホスト)から ゲ
●ブートローダの再設定 カーネルが読み込まれる前にブートローダの段階で止まる場合は, ハードディスクのMBR(Master Boot Record)またはパーティションのブートセクタに インストールされたブートローダが,何らかの原因で損傷または不整合な状態にある 可能性があります. ブートローダを再インストールするには,インストールCD-ROM または KNOPPIX などを使って起動し,ハードディスクをマウントして,マウントポイントにchrootしてから, grub-installまたはliloコマンドを実行します. インストールCD-ROM を使ってブートローダを再インストールする手順を下図に示します.ここでは,ハードディスクはrootパーティションのみであることを 想定していますが,/bootパーティションを分けている場合は,/a/bootにさらに マウントしてから作業してください.
このページは、技術評論社 Software Design 2005年4月号、『x86版 Solaris 10のインストール』の原稿を元に、Web 用に再構成したものです。 このページでは、Solaris 10 x86版の入手/DVD or CD書き込み/インストール方法などについて解説します。 Solaris 10の入手とDVD/CDの書き込み [ISOイメージファイルのダウンロード] [zipファイルの解凍と結合] [Linux上でdvdrecord/cdrecordでDVD/CDの書き込み] Solaris 10のインストール [DVDまたはCDから起動] [以前のWebStartはなくなり、対話式インストーラに統合] はじめてのログイン〜一般ユーザの登録 [まずは一般ユーザを登録] [/homeはautomount] [rootでグラフィカルログインは禁物] [CDEまたはJDSのデ
●Xアプリケーションのコンパイルテスト 今度はXのアプリケーションをコンパイルしてみましょう. サンプルソースを下のリストに示します. これはXawを用いたHello Worldのプログラムで, 表示する"Hello World !"の文字列は,リソースを用いず, プログラム中に埋め込んでいます. #include <X11/Intrinsic.h> #include <X11/StringDefs.h> #include <X11/Xaw/Label.h> main(int argc, char **argv) { XtAppContext app_context; Widget topLevel, hello; topLevel = XtVaAppInitialize( &app_context, "Hello", NULL, 0, &argc, argv, NULL, NULL );
■ネットワークカード ●ネットワークカードのあとからの設置と交換(RedHat系) redhatやVineでは,インストール時にはLANの設定メニューがあり, そこで設定できますが,あとでネットワークを設定したい場合は, インストール時と同じメニューでの設定はできません. その場合は,linuxconfなどを使って設定しますが, この方法については,『Linux×BSD』夏号Vol.1 にも書いていますので, そちらもあわせてご参照下さい. ここでは,詳細が不明なネットワークカードを認識させて, 使えるようにする方法について説明します. 再インストールはしないまでも,インストーラの冒頭部分を利用して, ネットワークカードを自動認識するかどうか試してみることができます. Vine 1.1のインストーラを起動して,インストールメディアとして 形式的に「NFSサーバ」を選びます. するとカードに
●QEMUの入手とインストール そこそこ高速なフリーのエミュレータであるQEMUは, http://fabrice.bellard.free.fr/qemu/ より,ソースファイルまたはバイナリがtarボールの形でダウンロードできます. しかし,より最新版の機能を使いたい場合は,CVSでのソースの取得が 必要になるため,CVSでのソースの取得方法も覚えておいてください. 実際,qemu-0.7.0のリリース前に後述のQEMUアクセラレータ(kqemu)を使うには, CVSでのソースファイルの取得が必須でした. ○CVSでのソースファイルの取得 CVSでのQEMUのソースファイルの取得方法は, 前述のQEMUサイトのリンクからたどれる, http://savannah.nongnu.org/cvs/?group=qemu に詳しく書かれています.これは「anonymous CVS over
●rootファイルシステムがマウントできない場合 カーネルの起動メッセージ(各種デバイスの認識,初期化メッセージなど)が 表示されたあと,rootファイルシステムのマウントに失敗,または initが見つからないというエラーで停止する場合は, カーネルオプションでの「root=」の指定が不適切 initrd内に必要なSCSIモジュールがない 「LABEL=/」の指定が問題を起こしている などの原因が考えられます.これらの対処方法を順に説明します. ○カーネルオプションで「root=」を指定 カーネルオプションでの「root=」の指定が間違っている場合は, 単にGRUBやLILOの画面上でroot=/dev/hda3などのオプションを指定して起動すれば よいだけです.正常に起動できたらgrub.confまたはlilo.confの「root=」の記述を 修正します.lilo.confを修正した場
このページは、技術評論社 SoftwareDesign 2000年6月号、『CD-R/CD-ROM完全ガイド』の原稿を元に、Web 用に再構成したものです。 ここでは,Linux/FreeBSD/Solarisのそれぞれにおいて, cdrecord/mkisofs(cdrtools)を使ってCD-Rを焼くための手順と, CD-ROMの詳細について解説します. 実行編 [これだけやればCD-Rが焼ける] cdrecord(cdrtools)のインストール [ちょっと変わったmakeシステム] CD-Rを焼く [mkisofsして、cdrecordでCD-Rを焼く] 研究編 [ISO9660/RockRidge/Jolietの詳細] ISO9660とRockRidge/Jolietについて [ファイル名の規則や、フォーマット拡張の仕組み] ファイルシステムフォーマットの方針 [mkisofs実
このページは、技術評論社 Software Design 2005年7月号、『QEMU使いこなしテクニック(Linux編)』の原稿を元に、Web 用に再構成したものです。 このページでは、kqemuの登場によってますます高速になったQEMUについて解説します。 QEMU/kqemuの入手とインストール [tarボールまたはCVSによる入手] [QEMU本体とkqemuアクセラレータ] KNOPPIXの起動テスト (QEMU のゲストとして) [QEMUの動作チェックには、ゲストOSとしてKNOPPIXを使うのが手頃] QEMUの使用方法 [各種コマンドラインオプション/QEMUモニタ/CD-ROMの交換方法] 仮想ディスクの作成 [qemu-imgコマンドを使って、ゲストOS用仮想ディスクを作成] ゲストOSのインストール [Solaris 10/FreeBSD 5.3/Win95などを実
§実行編「これだけやればCD-Rが焼ける」 ○“cdrecord -scanbus”でドライブの確認 CD-RドライブがSCSIで接続された状態で,まずは“cdrecord -scanbus”を 実行してみましょう.以下のように,認識されていればOKです. # cdrecord -scanbus Cdrecord 1.8 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jrg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'QUANTUM ' 'FIREBALL_TM3200S' '300N' Disk 0,1,0 1) * 0,2,0 2) * 0,3,0 3) * 0,4,0 4) 'TEAC ' 'CD-R56S ' '1.0E' Removable CD-ROM
●KNOPPIXを使う方法 KNOPPIX(下図)を使ってファイルの救出を行なうこともできます. KNOPPIXはそもそも通常のLinuxとして使用できるため, インストールCD-ROMのような限られた環境とは違って ファイルの救出作業をより楽に行なうことができるでしょう. ○KNOPPIXの起動時の注意 KNOPPIXは,起動時にハードディスクのswapパーティションを自動的に検出して, swapとして使用する可能性があります.このため, boot: knoppix noswap と,オプションを付けて起動し,swapの使用を禁止してください. とくにハードディスクにSolarisのパーティションがある場合は, パーティションIDが「Linux Swap」と同じ0x82になっているため,注意してください. ○rootになるには ファイルの救出作業のほとんどはroot権限が必要です. KN
このページは、技術評論社 Software Design 2001年2月号、『プログラムのコンパイルとリンク』の原稿を元に、Web 用に再構成したものです。 このページでは初心に立ち返り, GNUのCコンパイラであるgccを用いて, プログラムをコンパイルするための基本を解説します. C言語のコンパイルテスト [即席でhello worldのソースをつい何度も書いてしまう…] C++のコンパイルテスト [C++でもほとんど同じ] Xアプリケーションのコンパイルテスト [Athenaウィジェットを使った最小限のプログラム] [Xaw Xt X11 などのライブラリが必要になる…] コンパイル過程の詳細 [プリプロセッサやアセンブラ・リンカの段階を詳しく見ると…] [コラム] 「標準入力をコンパイル!?」 「gccでC++をコンパイル」 「Solarisの場合のgccのオプション」 「その他の
このページは、技術評論社 「すみからすみまでLinux〜テクニカル編」および SoftwareDesign 2000年8月号、『VMwareとBochsを使ってみる』の原稿を元に、Web 用に再構成したものです。 VMwareの概要 VMware上にSolaris 8をインストール [対話式インストール・リモートXサーバでSolaris 8もOK] [VMwareがcore dumpする場合の対処法(DMAはOFFに)] VMware上にVine Linux 2.xをインストール [VineなどではXnestでも使える] VMware上にFreeBSD 4.xをインストール(ほか) [ゲストOSがUNIX系OSなら、Xはリモートで使おう] Bochsのインストール [フリーでソース公開のPCエミューレータBochsではどうか?] BochsにWindows95をインストール BochsにW
●Linuxをディスクレスクライアントにする 今度はLinuxをディスクレスクライアントにしてみましょう. そのためには,LinuxカーネルがNFS rootに対応している必要があります. しかし,各種ディストリビューションに付属の標準カーネルでは, NFS rootの機能が組み込まれずにカーネルが構築されていることが多いため, NFS root関連の機能を組み込んでカーネルを再構築する必要があります. なお,ここでは当初 Vine 2.0 を使って動作を確認しましたが,その後,Vine 2.1.5 ほかのバージョンでも動作確認しています. ○DHCP / NFS root / ネットワークデバイスドライバの組み込み カーネルの再構築のポイントは,DHCP(またはBOOTP)機能の組み込み,NFS root 機能の組み込み,NIC のデバイスドライバの静的リンクの3点です. “make m
このページは、技術評論社 「SoftwareDesign 2001年9月号、『起動ファイルから解読するPC UNIX』の原稿を元に、Web 用に再構成したものです。 このページでは、PC UNIXの起動処理および起動ファイルについて解説します。 PC UNIXの起動処理の概要 (Linux/FreeBSD) [PC UNIX起動画面の各段階] 電源投入からブートローダ読み込みまで [BIOSを手がかりに鍵箱を開けてゆく] ブートローダからカーネルの読み込みまで [OSのない環境で動作するブートローダ] カーネルの起動からinitの起動まで [rootファイルシステムのマウントがひとつの関門] initの起動から login: プロンプトまで [BSD系とSysV系で違うrcスクリプトの実行] ■コラム■ 「Linuxのinitrdについて」 [rootのマウントは実は2回] 「fsckのト
次のページ
このページを最初にブックマークしてみませんか?
『YAMAMORI Takenori』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く