MacBookのトリプルブートでUbuntuが起動しない
Mac/Windows/Linuxのトリプルブートを可能にする方法(しかもBoot Camp不使用!) | ライフハッカー[日本版]
を読んでMacBookで Mac, Windows7, Ubuntu11.04 のトリプルブートに挑戦したら、すごくハマったのでメモ。
rEFItの画面からUbuntu11.04を選んでもLinuxのアイコンが表示されたまま、ずっとフリーズ。
(一緒にインストールしたWindows7は正常に起動する)
調べたところ、Ubuntuの /boot をext4でフォーマットしていたのが原因だったみたい。
ext3でフォーマットし直したら起動するようになった。
トリプルブートの設定で参考させてもらったページ
Intel Mac で トリプルブート その1 (Snow Leopard でディスクパーティション準備編) » sa-sa-ki.jpのblog
Mac用マルチブート・マネージャー rEFIt を試す | 普通的生活
y2blog » OSX/Win/Linuxトリプルブートシステムの構築(その1)
How To | Latest News, Photos & Videos | WIRED
Intel Mac/Triple Boot - PukiWiki
64bit版Windows非対応機種でBootCamp64.msiをインストールする : Macとの闘いの日々
Ubuntu日本語フォーラム / 9.10(Alpha5)、MBMでマルチブート不能。
関数ポインタで型情報の異なる関数を実行する -キャスト-
C言語の関数ポインタは振る舞いを動的に変えるのに便利。
だけど、関数の型情報に縛られるのは何とかできないかと調べていたら、関数ポインタをキャストしてしまえば、どんな型の関数でも実行できることを知った。
ポインタ虎の巻〜関数ポインタの使い方
#include <stdio.h> int add(int x, int y) { return x + y; } int square(int x) { return x * x; } float div(float x, float y) { return x / y; } int main() { void (* pfunc)(void); int x = 10; int y = 4; printf("x = %d, y = %d\n", x, y); pfunc = (void (*)())add; printf("pfunc(add) : %d\n", ((int (*)(int, int))pfunc)(x, y)); pfunc = (void (*)())square; printf("pfunc(square) : %d\n", ((int (*)(int))pfunc)(x)); pfunc = (void (*)())div; printf("pfunc(div) : %.2f\n", ((float (*)(float, float))pfunc)((float)x, (float)y)); return 0; }
実行結果
$ ./a.out x = 10, y = 4 pfunc(add) : 14 pfunc(square) : 100 pfunc(div) : 2.50
実行結果から正しい結果が返ってきているのがわかる。
けど、これってpfuncは抽象化できているけれども、実行するときに元々の具体的な型情報でキャストしなくちゃいけないから、イマイチ。
結局、型情報に縛られちゃってる。
うーん、使いどころがあるかな?
Re:Start
どこが1番気楽に日記書けるかを考えてたら、ここに舞い戻っていました。
主にメモ用で。