Your SlideShare is downloading. ×
カーネルVm関西その参lt
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

カーネルVm関西その参lt

2,164
views

Published on

カーネルVM@関西 その参のスライドです。

カーネルVM@関西 その参のスライドです。

Published in: Education

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,164
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Linuxカーネル3.3でNVIDIAの プロプラドライバを使う カーネルVM探検隊@関西 その参 by コスモ Twitter:@cosmo__
  • 2. Linux3.3で新しくなった部分● Androidがマージ● ext4・btrfsが改良された● ネットワーク周りも改良されています● EFI bootのサポート etc.... 参考:http://kernelnewbies.org/Linux_3.3
  • 3. 今回話すのはこれら機能についてではありません。
  • 4. 本題● NVIDIAのプロプライエタリドライバ ● Linux/Unixにも提供されている。 ● Ubuntuだと高機能ドライバ としてインストールできます。 ● カーネルのヘッダーに深く依存…? ● 一旦インストールするとnouveauと 相性が悪い ● しかもカーネル入れ替えるとドライバを インストールし直さないとXがディスプレイ を見つけられない
  • 5. 何故これを話すかLinux3.3のカーネルをいつものようにコンパイルして立ち上げると… with NVIDIA Driver295.20 If you are using a Linux 2.4 kernel, please make sure you either haveconfigured kernel sources matching your kernel or the correct set ofkernel headers installed on your system. If you are using a Linux 2.6 kernel, please make sure you haveconfigured kernel sources matching your kernel installed on yoursystem. If you specified a separate output directory using either the“KBUILD_OUTPUT” or the “O” KBUILD parameter, make sure tospecify this directory with the SYSOUT environment variable or withthe equivalent nvidia-installer command line option. Depending on where and how the kernel sources (or the kernelheaders) were installed, you may need to specify their location with theSYSSRC environment variable or the equivalent nvidia-installercommand line option.つまり…このカーネルはサポートしてません。 と出てしまった。
  • 6. NVIDIAのプロプラドライバが入らなかった理由● NVIDIAのプロプラドライバはインストール時に対応 しているかのテストを実行する NVIDIA_Driver/kernel/conftest.sh● そのテストの一つがcommit: 303395ac3bf3e2cb488435537d416bc840438fcb の変更でこけてしまっていた
  • 7. コミット履歴を覗く ● システムコール生成のスクリプトに変更があった scripts/checksyscalls.sh checksyscalls: Use arch/x86/syscalls/syscall_32.tbl as source author H. Peter Anvin <hpa@linux.intel.com> Fri, 11 Nov 2011 23:57:53 +0000 (15:57 -0800) committer H. Peter Anvin <hpa@linux.intel.com> Thu, 17 Nov 2011 21:35:37 +0000 (13:35 -0800) Use the new arch/x86/syscalls/syscall_32.tbl file as source instead of arch/x86/include/asm/unistd_32.h. Cc: Michal Marek <mmarek@suse.cz> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com> このシェルスクリプトにarch/x86/syscalls/syscall_32.tblから システムコールに関わるヘッダーを自動生成するように変更が 掛かっています。http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=29dc54c673ea2531d589400badb4ada5f5f60dae;hp=d181764ccf6207e02abb95fb3052639b947f4833
  • 8. 調べると… ● commit  303395ac3bf3e2cb488435537d416bc840438fcb で 以下の2つのファイルの位置に変更 arch/x86/include/asm/unistd_32.h arch/x86/include/asm/unistd_64.h (DELETED)http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=303395ac3bf3e2cb488435537d416bc840438fcb
  • 9. コケた原因● conftest.sh: if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include" ” arch/x86/include/asm/unistd_32.h arch/x86/include/asm/unistd_64.h を決め打ちしていた。
  • 10. コケた原因:その2 arch/x86/include/asm/unistd_32.h arch/x86/include/asm/unistd_64.h● 上の2つのヘッダーは arch/x86/include/generated/asm/unistd_(32|64).h に生成されるようになった
  • 11. カーネル3.3でドライバを使いたい解決策の1: arch/x86/include/asm/unistd_32.h arch/x86/include/asm/unistd_64.h シンボリックリンクを貼るarch/x86/include/generated/asm/unistd_(32|64).h
  • 12. カーネル3.3でドライバを使いたいその2:ドライバを解凍してパッチを当てる $ sh ./NVIDIA_Driver.run --extract-only --- ~/Document/conftest.sh.orig 2012-03-19 21:11:18.000000000 +0900 +++ ~/Document/conftest.sh 2012-03-28 03:54:51.719483979 +0900 @@ -126,7 +126,7 @@ CFLAGS="$BASE_CFLAGS $MACH_CFLAGS $OUTPUT_CFLAGS -I$HEADERS $AUTOCONF_CFLAGS" if [ "$ARCH" = "i386" -o "$ARCH" = "x86_64" ]; then - CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include" + CFLAGS="$CFLAGS -I$SOURCES/arch/x86/include -I$SOURCES/arch/x86/include/generated" elif [ "$ARCH" = "ARMv7" ]; then CFLAGS="$CFLAGS -I$SOURCES/arch/arm/include" fi
  • 13. 実際にインストールしてみる● 解決策1を取ってみました。 するとちゃんとインストールできるようです↓
  • 14. Linux3.3が起動できてる図です。
  • 15. Linuxカーネル3.3でNVIDIAの プロプラドライバを使う大体ここらを参考にしています↓http://weltall.heliohost.org/wordpress/2012/01/20/linux-kernel-3-3-rc1-and-nvidia-drivers/http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=303395ac3bf3e2cb488435537d416bc840438fcb 参考にしたブログにはお礼のコメントをしておきました!
  • 16. と、ここまで話しましたが● NVIDIA Driver 295.33では解決策2が取られてお り問題は解決していました マジデスカ…orz 完