プロテクトモード移行は 2nd boot でやった方が良さそうな気がして来た。
で、『はじめて読む486』では、MakeSegDesc とかいう関数作ったりして
大がかりだけど、eota の boot/2nd/start16.S とか見ると
ディスクリプタを最初っから直書きしていて、こうした方が楽な気がする。
できれば、『はじめて読む486』のようにC を使って書きたいところだけど、
gcc に 16 bit 用コードを吐きださせる方法が分からないから。
アセンブリ使うしかなさそう。

(1) そうだと思う。
(2) 1st boot でプロテクトモードにするならそれでOKだと思うけど、
2nd boot でプロテクトモードに切り替えるなら2nd boot の先頭はアセンブリの
コードにしておいて(プロテクトモードに切り替えて)そこから C の関数を
呼べば良いと思う。

動作確認は>>663 の VRAM直接アクセスをCで書けば良いと思う。
/boot/2nd/lib.c の write_vram が参考になる。
上手く行かなければ、
int c_func()
{
return 'A';
}
という関数をアセンブリからcallすれば ax に 'A'が入る。それを
アセンブリで画面表示すれば良いと思う。
どうしてもダメならリアルモードに戻してBIOSコールってことになるかな。