OS」タグアーカイブ

Windowsのバージョン取得

使うことなんてないと思うけれど、一応メモ。
Windows系コンパイラなら問題なくコンパイルできると思う。
一応、MinGWでコンパイル、動作確認は行った。


#include <windows.h>
#include <stdio.h>

int main(void)
{
  unsigned int GV = GetVersion();

  printf("GetVersion API(GV)                        = %08X\n\n", GV);
  printf("_winver                                   = %08X\n", _winver);
  printf("_winmajor                                 = %08X\n", _winmajor);
  printf("_winminor                                 = %08X\n", _winminor);
  printf("_osver                                    = %08X\n\n", _osver);
  printf("(( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF = %08X (= _winver)\n",
                  (( GV << 8 ) | (( GV >> 8 ) & 0XFF)) & 0XFFFF );
  printf("GV & 0XFF                                 = %08X (= _winmajor)\n",
                  GV & 0XFF );
  printf("( GV >> 8 ) & 0XFF                          = %08X (= _winminor)\n",
                  (( GV >> 8 ) & 0XFF));
  printf("GV >> 16                                  = %08X (= _osver)\n\n\n",
                  (GV >> 16) );

  // Windows version(_winmajor, _winminor, _osver)
  printf("This system is [");
  if ( _osver < 0X8000 ) {
    // NT Group (_osver LowWORD MSB = 0)
    switch (_winmajor) {
      case 3:
      case 4:
        printf ("Windows NT %u.%u Build %u",
                         _winmajor, _winminor, _osver);
        break;
      case 5:
        switch (_winminor) {
          case 0:
            printf ("Windows 2000 Build %u", _osver);
            break;
          case 1:
            printf ("Windows XP Build %u", _osver);
            break;
          case 2:
            printf ("Windows Server 2003 family Build %u",
                                    _osver);
            break;
          default:
            printf ("NT Group Windows Build %u", _osver);
        }
        break;
      case 6:
        switch (_winminor) {
          case 0:
            printf ("Windows Vista or Windows Server 2008 Build %u", _osver);
            break;
          case 1:
            printf ("Windows 7 Build %u", _osver);
            break;
          default:
            printf ("NT Group Windows Build %u", _osver);
        }
        break;
      default:
        printf ("NTGroup Windows Build %u", _osver);
    }
  }
  else {
    switch (_winmajor ) {
      case 0: //Win32s Group
      case 1:
      case 2:
      case 3:
        printf ("Win32s Build %u", _osver & 0X7FFF);
        break;
      case 4: // 9X Group (_osver is invalid.)
        switch (_winminor) {
          case 0:
            printf ("Windows 95 Build ----");
            break;
          case 10:
            printf ("Windows 98 Build ----");
            break;
          case 90:
            printf ("Windows Me Build ----");
            break;
          default: // To make sure
            printf ("Newer than Windows Me");
        }
        break;
      default: // To make sure
        printf ("Newer than Windows Me");
    }
  }
  printf("]");

  return 0;
}

inferno in QEMU on WindowsXP

inferno Install完了画面
QEMUにNative infernoをインストールしたときのメモ

  • 準備
    1. QEMU on Windowsをダウンロード
    2. inferno CD 2007May10をダウンロード
    3. QEMUを適当なところに解凍する(例:”C:\QEMU”)
    4. infernoCDをQEMUのディレクトリ内に解凍する(例:”C:\QEMU\inf.iso”)
  • インストール
    1. 1GBのHardDiskImageの作成(コマンドプロンプト)
      C:\QEMU>qemu-img create -f qcow inferno.img 1G
    2. infernoCDからBoot(コマンドプロンプト)
      C:\QEMU>qemu -L . -m 128 -boot d -cdrom inf.iso -hda inferno.img
    3. インストールシェルスクリプトの実行(QEMU)
      ;sh install.sh -m /dev/sdD0 /dev/sdC0
    4. パーティションをPlan9で作成(QEMU)
      >>> a p1
      start cylinder: 0
      end [0..1024] 1024
      >>> A p1
      >>> w
      >>> q
      
    5. 再起動されるので再度インストールシェルスクリプトを実行(QEMU)
      ;sh install.sh /dev/sdD0 /dev/sdC0
      >>> w
      >>> q
      
    6. 「Remove the CD and reboot」と表示されたらQEMUのWindowsを閉じる
  • 起動確認
    1. (コマンドプロンプト)
      C:\QEMU>qemu.exe -L . -m 128 -hda inferno.img -net nic,model=rtl8139
    2. (QEMU)
      ; wm/wm
      wmlib: can't allocate Display: .initdisplay: /dev/draw/new:
      ;
      

    とりあえず、動きはしたけれど、GUIが立ち上がらない。
    VGAが見えてない?
    QEMUはCL-GD5446をエミュレートしてらしい。
    で、ソースをあさってみると os/pcに

    • vgaclgd542x.c
    • vgaclgd546x.c

    はあった。つまり・・・未対応?
    もしかしたら応用でドライバかけるかもしれないけど今のところ見送り
    QEMUはVESA起動もできるみたいなのでそちらも試してみる

    1. (コマンドプロンプト)
      C:\QEMU>qemu.exe -L . -m 128 -hda inferno.img -net nic,model=rtl8139 -vga std
    2. (QEMU)
      ; wm/wm
      wmlib: can't allocate Display: .initdisplay: /dev/draw/new:
      ;
      

    やっぱり駄目っぽい。
    このCDに入ってるカーネルにはVGAドライバが組み込まれてないのかな?
    このCD起動カーネルと昨日のFD起動カーネルではファイルサイズが結構違う。
    つまり、コンパイルした内容が違うってことだろうけど、
    このCDのカーネルと差し替えれるカーネルをつくるにはどうすればいいんだろう。
    CDのカーネルと同じコンパイル条件を作りたいんだけど、
    そもそもコンパイルオプションとかがよくわかってない。

  • 参考

inferno in VirtualBox on WindowsXP

inferno起動画面
inferno を VirtualBox上で動くように Ubuntu で コンパイル したときのメモ

  • ソースコードの入手
    1. $apt-get install mercurial
    2. $cd /usr
    3. $sudo hg clone https://inferno-os.googlecode.com/hg/ inferno
    4. $sudo chmod -R 777 /usr/inferno

    どうも、コンパイルが通らないのでVita Nuovaのバージョンを利用する。

    1. inferno Fourth Edition(inferno-20100120.tgz)をダウンロード
    2. inferno-20100120.tgzを解凍し、中身を/usr/inferno/へ上書き
  • コンパイル用ライブラリのインストール
    1. $sudo apt-get install libxpm-dev
    2. $sudo apt-get install libxext-dev
    3. $sudo apt-get install x11proto-xext-dev
  • infernoのコンパイル
    1. $sudo vi inferno/mkconfig
      
      @@ -17,0 +18,0 @@
      -	SYSHOST=Plan9
      +#	SYSHOST=Plan9
      +	SYSHOST=Linux
      @@ -25,0 +27,0 @@
      -#	OBJTYPE=368
      -	OBJTYPE=$objtype
      +	OBJTYPE=368
      +#	OBJTYPE=$objtype
      
    2. $sh makemk.sh
    3. $export PATH=$PATH:/usr/inferno/Linux/368/bin/
    4. $mk nuke
    5. $mk install
  • PBS(PCパーティションブートセレクタプログラム)と9load(カーネルローダ)のコンパイル
    1. $mkdir /usr/inferno/Inferno/386/lib/
    2. $sudo chmod -R 777 /usr/inferno/Inferno/386/lib/
    3. $cd /usr/inferno/os/boot/pc/
    4. $mk pbs.install 9load.install
  • カーネルコンパイル
    1. $cd /usr/inferno/os/pc
    2. $vi ether79x970.c
      
      @@ -540,6 +540,7 @@
      	switch(x&0xFFFFFFF){
      	case 0x2420003: /* PCnet/PCI 79C970 */
      	case 0x2621003: /* PCnet/PCI II 79C970A */
      +	case 0x2625003: /* PCnet/FAST III 79C973 */
      		break;
      	default:
      		print("#l%d: unknown PCnet card version %.7ux\n",
      
    3. $vi pc
      
      @@ -48,10 +48,11 @@
      	kern
      
       link
      -	ether2114x      pci
      +	ether79c970     pci
      +#	ether2114x      pci
       #	ether82557      pci
      -	ether83815      pci
      -	etherelnk3      pci
      +#	ether83815      pci
      +#	etherelnk3      pci
      	ps2mouse
      	ethermedium
       #	pppmedium ppp compress
      @@ -70,7 +71,7 @@
      	math
      
       init
      -	wminit
      +	shell
      
       code
      	int kernel_pool_pcnt = 10;
      @@ -79,7 +80,7 @@
      	int image_pool_pcnt = 40;
      	int cflag=0;
      	int swcursor=0;
      -	int consoleprint=0;
      +	int consoleprint=1;
      
       port
      	alarm
      @@ -137,3 +138,5 @@
      	/dis/lib/daytime.dis
      	/dis/lib/auth.dis
      	/dis/lib/ssl.dis
      +	/dis/lib/arg.dis
      +	/dis/lib/filepat.dis
      
    4. $mk
  • カーネルロード設定ファイルの作成
    1. $vi /usr/inferno/os/pc/plan9.ini
      
      bootfile=fd0!ipc.gz
      
  • フロッピーイメージの作成
    1. $emu
    2. ;cd os/pc
    3. ;gzip ipc
    4. ;disk/format -b /Inferno/386/pbs -df inferno.img /Inferno/386/9load plan9.ini ipc.gz

    出来上がったinferno.imgをVirtualBoxにマウントしBoot
    確かに起動はできたが、たまにPanicを起こす。
    infernoもPlan9系だからVirtualBoxではだめなのかもしれない。
    それに、Native infernoをコンパイルできたけど、FD起動なんだよね。
    Plan9のブートローダで起動可能ってことはこれで分かったんだけど、
    HDDからブートさせたい・・・Native infernoを使うにはPlan9の勉強した方がいいかもしれない。
    次回はinferno in QEMU on WindowsXPを試してみよう。

  • 参考

VirtualBox in Ubuntuで共有フォルダ

共有フォルダ設定

  1. 拡張機能のインストール
    1. 仮想マシンウインドウのメニューの「デバイス」→「Guest Additions のインストール」でインストールCDをマウント
    2. $cd /media/VBOXADDITIONS_3.2.4_62467/
    3. $sudo sh VBoxLinuxAdditions-x86.run
  2. 共有フォルダの設定
    1. 仮想マシンウインドウのメニューの「デバイス」→「共有フォルダ…」で共有フォルダを設定
    2. $sudu mkdir /mnt/share
      (マウント先の作成)
    3. $sudo mount.vboxsf Share /mnt/share/
      (共有フォルダをマウント)

いろいろなOS

とにかくいろんな種類のOSをいじってみたいが毎回調べて忘れての繰り返しなので期待してるOSをメモして、いろんなところに残しとこう・・・。

  • モノリシックカーネル
    • BSD
      • FreeBSD
        忘れちゃいけないBSDの大御所
      • OpenSolaris
        Solarisといえば
    • Linux
      • INSERT
        データ救出用Linux
      • PuppyLinux
        古いPCでも軽快に動くことを目的としたLinux
      • GentooLinux
        玄人向けのLinux
      • EcoLinux
        日本人の大学生ががんばってるLinix
      • Elive
        きれいで動きのあるGUIを提供するLinux
      • Chromium OS
        Googleの作っているLinuxベースのWebOS
      • Joli OS
        Jolicloudの作っているUbuntu LTSベースのネットブック用OS
      • Splashtop OS
        MicrosoftがDeviceVM社と組み、Linuxをベースとした軽量Webアクセス用OS
      • Damn Vulnerable Linux
        無防備極まるセキュリティ学習用Linux
      • BackTrack
        セキュリティチェック用Linux
    • Amiga
      • icaros desktop
        AmigaOS3.1 互換 AROSのディストリビューション
      • Syllable
        AtheOSの派生OS
    • MS-DOS
      • FreeDOS
        MS-DOS互換OS
  • マイクロカーネル
    • Minix
      UNIX風教育用OS
    • BeOS
      • Haiku
        今はなきBeOSの思想を引き継いだOS
    • L4
      マイクロカーネルらしさを追求した第二世代のマイクロカーネル
    • MonaOS
      2ちゃんねる発
    • MikeOS
      OSの勉強にもってこい
    • ナノカーネル
      • JNode
        ほとんどすべてをJavaで作ったOS
  • ハイブリッドカーネル
    • ReactOS
      WindowsNT互換OS
    • Plan9
      次世代Unixを志した分散OS

OS/2 や NetWareはないんだよなぁ・・・
まぁ、個人で使うことなんてないようなOSなんだけれど。

Chromium OSビルド「Flow」



100218chromeflow.jpg

以前にも紹介した、Chromium OSを簡単に入れられるビルド(非公式)。この度その製作者であるHexxeh氏が、自動更新動画とWi-Fiサポートの強化ウェブカム使用メニューのカスタマイズなどが追加されるアップデートを行いました。その名も『Flow』。以前よりはウェイトアップしたものの、2GBのUSBメモリを用意するだけで実行できます。Windows、Linux、Macで(通常)起動可能です。

今回のアップデートですが、ハードウェアの性能によっては苦戦する可能性もありうるとのことです。
サーバーから直で327MBのダウンロードをしなければならないのですが、その分しばらく他のダウンロードは必要無さそうです。
前回ベータ版としてテストされた自動更新が、今回でデフォルト搭載となるので、今後はアップデートの度にUSBドライブをリセットせずに済むというわけです。

「Chrome OSって何?」というかたは、こちらの『Chrome OS』入門を参照してみてください。

It’s Flow time… [Hexxeh’s Blog via Download Squad]

Kevin Purdy(原文/訳:松井亮太)

USBメモリ起動対応「ChromiumOS Zero」



100119chromeos_zero.jpg

Googleが開発中のウェブベースネットブックシステムのオープンソースビルドChromiumOSのサムドライブ対応版が完成しました。

Hexxehという名のハッカー作。彼の最新ビルド『ChromiumOSZero』はChromeアドオンサポート、スピード起動、その他が追加された秀作。彼自身によるアップデートの正式なリストはこちら

ブロードコムベースのWi-Fiによるスピードロスや、OSの核となるChromiumブラウザが改善されています。
しかも、ビルド自体は1GBのUSBドライブに入るというコンパクトさ
このリリース以降の更新は自動的にアップデートされるというおまけつき。

HexxehのサイトからBitTorrent、もしくは「Mirror」からでダウンロード出来ます。『ChromiumOSZero』を試してみたいけど…と尻込みしていた方もUSBからなら気楽に試してみることができそうです。

サムドライブからHexxehベースビルドを起動させる方法は過去記事「GoogleChromeOSをUSBメモリから起動する方法」をご覧下さい。

『ChromiumOSZero』はMac以外のシステムで(通常)起動可能なフリーダウンロードです。

Chromium OS Builds by Hexxeh[viaDownload Squad]

Kevin Purdy(原文/まいるす・ゑびす)

ネットブック用OS「Jolicloud」



091211jolicloud_top.jpg

先月テスト版がようやくリリースされた『Google Chrome OS』。圧倒的なスピードを誇り、これまでにない斬新なOSとして注目されていますが、完全なるブラウザ対応型という点がいまひとつ気に入らないというユーザさんも。こちらでは、『Chrome OS』の有力な対抗馬として、ネットブック用OS『Jolicloud』をご紹介しましょう。

Jolicloud』が『Chrome OS』と大きく異なるのは、デスクトップアプリにも対応している点。またこちらのページでお分かりのとおり多種多様なデバイスとも対応しています。実際、米Lifehackerの仮想マシンでテストしたところ動作は良好で、他のハードディスクとの相性もいいようだとのこと。

Jolicloud』にご興味が湧いてきた方はインストールしてみましょう。Windowsをアンインストールしなくても、ハードドライブで割り当てられたスペースでこれを使うことができます。以下のスクリーンショットのスライドショーで、まずは雰囲気をチェックしてみてくださいね。

091211joicloud_g01091211joicloud_g02091211joicloud_g03091211joicloud_g04091211joicloud_g05091211joicloud_g06091211joicloud_g07091211joicloud_g08

インストールした後の流れは、大まかにこんな感じです。

『Jolicloud』のインストールが終わったら、次のようなログイン画面が現れます。

091211jolicloud2.jpg

インストール時に設定したユーザ名とパスワードを入力。ログインすると、このようなJolicloudのランチャー画面が表示されます。

091211jolicloud3.jpg

Jolicloudアカウントを設定します。特別なJolicloudアカウントは招待コードが必要ですので、早めに登録しておきましょう。Jolicloudのホームベースに登録できたら、以下のようなJolicloudのアプリケーションディクショナリーにアクセスできます。

091211jolicloud4.jpg

この画面では、『Skype』、『Dropbox』、『Boxee』、『Spotify』といったデスクトップアプリをワンクリックでインストールできます。また、Jolicloudにログインすれば、Twitter・Facebookといったソーシャルネットワークにもアクセスできます

091211jolicloud5.jpg

こちらは更新マネージャ。アプリの更新情報を教えてくれる便利なプラットフォームです。

091211jolicloud6.jpg

いかがでしたか?
『Chrome OS』とはそもそもの設計コンセプトが異なるので一概に比較できませんが、『Jolicloud』は『Chrome OS』にはないデスクトップ対応型という特徴があり、デスクトップ派の方には有力なネットブック用OSといえるでしょう。特に、アプリケーションディクショナリーはiPhone風なので、iPhoneユーザの方にはなじみやすいかもしれません。

『Jolicloud』はα版としてリリースされています。ダウンロードはこちらのページからどうぞ。

Jolicloud

Adam Pash(原文/松岡由希子)

「Chrome OS」に関する7つのFAQ

1. そもそも『Chrome OS』ってどんなもの?

『Chrome OS』はウェブユースのためのOS。従来のOSと異なり、圧倒的なスピードが特徴です。

2. いつ、どうやってリリースされるの?

Googleによると、正式版のリリースは2010年11月頃になる見込みだそう。以下の画像で示されているとおり、OSの仕組みが大幅に異なるため、ダウンロードでのインストールは推奨しておらず、現在、『Chrome OS』対応PCを開発中だとか。価格帯についてはまだ明らかになっていませんが、Googleとしては、大きめのキーボードとマウスパッド付のネットブックでリリースしたい方針とのことです。

3. どんなに速いの?

ログオン画面まで7秒、デスクトップ表示まで4秒、計11秒で立ち上げ完了になる見込み。従来のOSよりも格段に速いですね。これは、『Chrome OS』用のファームウェアにより実現できるそうです。

4. 具体的に何が違うの?

『Chrome OS』の具体的な特徴として、以下の点が挙げられます。

  • 従来のOSではゲームやアクセサリなどのアプリケーションに確保されていたマルチコアCPUや画像チップが『Chrome』に使える
  • 『Chrome OS』で『Chrome』を使うと、さらにスピードアップ
  • ウェブアプリがすべて。ゲームやアクセサリなど従来のアプリケーションがない。
  • 『Chrome OS』はGoogleアカウントで制御されているので、どのネットブックを使っても自分のアカウントでログインできる。
  • Gmail、GoogleDocsのみならず、『Chrome OS』で使う全てのものはすべてオンライン保存される

5. これまで使っていたアプリは使えない?

そうともいえません。たとえば、Microsoft Officeのオンライン版を活用し、Excelファイルなどを使えるようにする方針だそうです。

6. 印刷対応はアリ?

『Chrome OS』にも印刷機能は搭載される見込み。ただし、これまでにはない斬新なアプローチでプリンター対応する方針だとか。

7. ラップトップPCやデスクトップPCへの対応は?

まずはネットブックを最優先に取り組んでいるそうで、ラップトップPCやデスクトップPCはその後にリリース予定のようです。

Kevin Purdy(原文/松岡由希子)