acer ASPIRE 4752G
CPU: Intel Core i5-2450M 2.5GHz
顯示卡:NVIDIA GeForce 610M with NVIDIA OPTIMUS TECHNOLOGY
openSUSE 12.1 GNOME Live CD 測試:
開機畫面正常,但選擇 Live GNOME 進入後,在 splash 畫面錯亂,
最後螢幕變黑,無法開機
強迫關機,重新開機時按 F2 進入 BIOS 設定畫面
將 Graphic Mode 由 Switchable 改成 Integrated,儲存,離開
再次測試 Live GNOME,這次就可以進入 GNOME 3,
而且是標準模式,有桌面特效
表示可以使用 openSUSE 系統
結束測試
接著要使用 openSUSE 12.1 64-bit DVD 來安裝
光碟放進去卻不會出現 GRUB 的開機畫面(就是選擇安裝的畫面)
而是黑色終端機螢幕,左上角顯示
ELILO boot:....
Loading kernel linux...
跑一陣子之後會直接進入安裝畫面
照著步驟做下去,到選擇安裝位置時,最後決定取消
因為這種方法會要求您將所有的分割區刪除
但我想留著 windows 做多重開機
本以為是需要先將磁碟空間空出,
但用 GParted 重新化分割區後再重做
仍無法僅用空白分割區安裝
系統說:
Your system states that is requires all EFI boot setup,
Since the selected disk does not contain a GPT disk lable
we creat a GPT lable on this disk.
You need to mark all partitions on this disk for removal.
差點就要放棄了,打算改用 Live CD 安裝
後來發現在 ELILO boot:... 出現時按 ESC
就會出現 GRUB 的安裝畫面
而且可以順利將作業系統安裝到所規劃好的磁區
雖然在安裝前摘要有紅字,說 GRUB 所安裝的位置可能無法正常開機
但我還是心一狠就依照預設位置裝了
結果裝完就...
正常開機了
把所有的更新裝一裝,該裝的套件裝一裝,該調的調一調
依照我以前的理解,再裝上 nvidia 的驅動程式應該就大功告成了
興高采烈的重開機,將 BIOS 中的 Graphic Mode 改回 Switchable
結果...
失敗...畫面整個亂掉,無法開啟 X
只好改回用 Integrated 的顯示卡
還要用 safe mode 才進得了 X
先移除 nvidia 驅動程式,重回原點開始找資料
幸好有 Geeko 的加持和 Google 的幫助
最後還是成功了
Geeko 與你同在!
對於 nvidia optimus 的顯示卡,您需要 Bumblebee,
(當然,如果您要放棄使用 nvidia 顯示卡,只用 intel 的顯示卡,在 BIOS 中調就都可以用了)
相關頁面:
https://github.com/Bumblebee-Project/Bumblebee
http://www.martin-juhl.dk/2011/08/ironhide-reporting-for-duty/
http://www.martin-juhl.dk/2011/08/reassemble-of-the-bee/
https://github.com/MrMEEE/bumblebee
雖然還是一個發展中的計劃
至少給了 nvidia 顯示卡的 Linux 使用者一絲的希望
在 software.opensuse.org 搜尋 bumblebee
(請在搜尋選項中核取「包含使用者的 home project」)
我們要使用新版的 bumblebee
# zypper ar home:Bumblebee-Project:Bumblebee-develop/openSUSE_12.1 bumblebee
您需要 bumblebee VirtualGL
若使用 64 位元系統,可能還需要 VirtualGL-32bit
# zypper in bumblebee VirtualGL
您可能需要手動將您的使用者加入 bumblebee 群組
您可以輕易用 YaST 來完成這件事
預設使用 nouveau 驅動程式
但我沒辦法成功使用 nouveau 驅動程式
(猜測是新的顯示卡還沒辦法被 nouveau 所支援)
所以我還是需要安裝 nvidia 的專利驅動程式
根據參考資料
安裝了 nvidia 專利驅動程式 (nvidia-gfxG02-kmp-desktop nvidia-computeG02 x11-video-nvidiaG02) 之後
將 nvidia 所提供的部份驅動程式移到新的目錄
以避免和 Mesa 以及 xorg-x11-server 所提供的檔案衝突
注意:
所以當您發現 nvidia 顯示卡驅動程式有更新時
以下步驟必須重新再跑一次
我是使用 64 位元作業系統,就直接以電腦上的檔案位置來舉例
若您是使用 32 位元系統,請注意 lib64 要改成 lib,後面就不再說明了
# mkdir -p /usr/lib64/nvidia/xorg/modules/updates/extensions
# mv /usr/X11R6/lib64/libGL* /usr/lib64/nvidia/
# mv /usr/lib64/xorg/modules/updates/extensions/libglx* /usr/lib64/nvidia/xorg/modules/updates/extensions/
# mkdir -p /usr/lib/nvidia
# mv /usr/X11R6/lib/libGL* /usr/lib/nvidia
最後編輯 /etc/bumblebee/bumblebee.conf 修改
DRIVER=nvidia
您可能還需要修改 /etc/sysconfig/kernel
NO_KMS_IN_INITRD="no"
重新開機,看看是否大功告成
精彩放送:在嘗試失敗的過程中拍到的有趣照片
可能是 intel 顯示卡使用了 nvidia 驅動程式所提供的 libglx.so 來運行桌面特效所造成的結果
(按 Alt-Shift+F12 來終止這種特效)
我本來想說可以用就用看看(還蠻炫的)
可惜都不能用
您可以用 glxinfo 來看看是否運作成功
如果沒有錯誤訊息表示 Intel 顯示卡 OK
$ glxinfo
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGI_swap_control,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_INTEL_swap_event
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_framebuffer_sRGB,
GLX_MESA_copy_sub_buffer, GLX_MESA_multithread_makecurrent,
GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap,
GLX_INTEL_swap_event
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGI_make_current_read,
GLX_SGI_swap_control, GLX_SGI_video_sync, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
GLX_EXT_texture_from_pixmap, GLX_INTEL_swap_event
OpenGL vendor string: Tungsten Graphics, Inc
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile
OpenGL version string: 2.1 Mesa 7.11
OpenGL extensions:
GL_ARB_multisample, GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
GL_EXT_copy_texture, GL_EXT_polygon_offset, GL_EXT_subtexture,
GL_EXT_texture_object, GL_EXT_vertex_array, GL_EXT_compiled_vertex_array,
GL_EXT_texture, GL_EXT_texture3D, GL_IBM_rasterpos_clip,
GL_ARB_point_parameters, GL_EXT_draw_range_elements, GL_EXT_packed_pixels,
GL_EXT_point_parameters, GL_EXT_rescale_normal,
GL_EXT_separate_specular_color, GL_EXT_texture_edge_clamp,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_ARB_framebuffer_sRGB,
GL_ARB_multitexture, GL_EXT_framebuffer_sRGB,
GL_IBM_multimode_draw_arrays, GL_IBM_texture_mirrored_repeat,
GL_3DFX_texture_compression_FXT1, GL_ARB_texture_cube_map,
GL_ARB_texture_env_add, GL_ARB_transpose_matrix,
GL_EXT_blend_func_separate, GL_EXT_fog_coord, GL_EXT_multi_draw_arrays,
GL_EXT_secondary_color, GL_EXT_texture_env_add,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias,
GL_INGR_blend_func_separate, GL_NV_blend_square, GL_NV_light_max_exponent,
GL_NV_texgen_reflection, GL_NV_texture_env_combine4,
GL_SUN_multi_draw_arrays, GL_ARB_texture_border_clamp,
GL_ARB_texture_compression, GL_EXT_framebuffer_object,
GL_EXT_texture_env_dot3, GL_MESA_window_pos, GL_NV_packed_depth_stencil,
GL_NV_texture_rectangle, GL_NV_vertex_program, GL_ARB_depth_texture,
GL_ARB_occlusion_query, GL_ARB_shadow, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_mirrored_repeat, GL_ARB_window_pos, GL_ATI_envmap_bumpmap,
GL_EXT_stencil_two_side, GL_EXT_texture_cube_map, GL_NV_depth_clamp,
GL_NV_vertex_program1_1, GL_APPLE_client_storage, GL_APPLE_packed_pixels,
GL_APPLE_vertex_array_object, GL_ARB_draw_buffers,
GL_ARB_fragment_program, GL_ARB_fragment_shader, GL_ARB_shader_objects,
GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ATI_draw_buffers,
GL_ATI_texture_env_combine3, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap,
GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_ARB_depth_clamp,
GL_ARB_fragment_program_shadow, GL_ARB_half_float_pixel,
GL_ARB_point_sprite, GL_ARB_shading_language_100, GL_ARB_sync,
GL_ARB_texture_non_power_of_two, GL_ARB_vertex_buffer_object,
GL_ATI_blend_equation_separate, GL_EXT_blend_equation_separate,
GL_OES_read_format, GL_ARB_color_buffer_float, GL_ARB_pixel_buffer_object,
GL_ARB_texture_compression_rgtc, GL_ARB_texture_rectangle,
GL_EXT_pixel_buffer_object, GL_EXT_texture_compression_rgtc,
GL_EXT_texture_rectangle, GL_EXT_texture_sRGB, GL_ARB_framebuffer_object,
GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXT_packed_depth_stencil, GL_APPLE_object_purgeable,
GL_ARB_vertex_array_object, GL_ATI_separate_stencil, GL_EXT_draw_buffers2,
GL_EXT_gpu_program_parameters, GL_EXT_texture_env_combine,
GL_EXT_texture_sRGB_decode, GL_EXT_timer_query, GL_OES_EGL_image,
GL_ARB_copy_buffer, GL_ARB_half_float_vertex, GL_ARB_map_buffer_range,
GL_ARB_texture_rg, GL_ARB_texture_swizzle, GL_ARB_vertex_array_bgra,
GL_EXT_separate_shader_objects, GL_EXT_texture_swizzle,
GL_EXT_vertex_array_bgra, GL_NV_conditional_render,
GL_ARB_ES2_compatibility, GL_ARB_draw_elements_base_vertex,
GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions,
GL_ARB_provoking_vertex, GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_shader_texture_lod, GL_EXT_provoking_vertex, GL_EXT_texture_snorm,
GL_MESA_texture_signed_rgba, GL_ARB_robustness
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x21 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x22 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x8e 24 tc 0 24 0 r . . 8 8 8 0 0 0 0 0 0 0 0 0 0 None
0x8f 24 tc 0 24 0 r y . 8 8 8 0 0 0 0 0 0 0 0 0 0 None
0x90 24 tc 0 24 0 r y . 8 8 8 0 0 0 0 0 0 0 0 0 0 None
0x91 24 tc 0 24 0 r . . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0x92 24 tc 0 24 0 r y . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0x93 24 tc 0 24 0 r y . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0x94 24 tc 0 32 0 r . . 8 8 8 8 0 0 0 0 0 0 0 0 0 None
0x95 24 tc 0 32 0 r y . 8 8 8 8 0 0 0 0 0 0 0 0 0 None
0x96 24 tc 0 32 0 r y . 8 8 8 8 0 0 0 0 0 0 0 0 0 None
0x97 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x98 24 tc 0 24 0 r y . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0x99 24 tc 0 24 0 r y . 8 8 8 0 0 24 8 16 16 16 0 0 0 Slow
0x9a 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0x9b 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x9c 24 dc 0 24 0 r . . 8 8 8 0 0 0 0 0 0 0 0 0 0 None
0x9d 24 dc 0 24 0 r y . 8 8 8 0 0 0 0 0 0 0 0 0 0 None
0x9e 24 dc 0 24 0 r y . 8 8 8 0 0 0 0 0 0 0 0 0 0 None
0x9f 24 dc 0 24 0 r . . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0xa0 24 dc 0 24 0 r y . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0xa1 24 dc 0 24 0 r y . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0xa2 24 dc 0 32 0 r . . 8 8 8 8 0 0 0 0 0 0 0 0 0 None
0xa3 24 dc 0 32 0 r y . 8 8 8 8 0 0 0 0 0 0 0 0 0 None
0xa4 24 dc 0 32 0 r y . 8 8 8 8 0 0 0 0 0 0 0 0 0 None
0xa5 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0xa6 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0xa7 24 dc 0 24 0 r y . 8 8 8 0 0 24 8 0 0 0 0 0 0 None
0xa8 24 dc 0 24 0 r y . 8 8 8 0 0 24 8 16 16 16 0 0 0 Slow
0xa9 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
0xaa 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 0 0 Slow
0x5d 32 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 0 0 None
接著用 optirun glxinfo 看 nvidia 顯示卡是否成功啟動
$ optirun glxinfo
name of display: :0
display: :0 screen: 0
direct rendering: Yes
server glx vendor string: VirtualGL
server glx version string: 1.4
server glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_SGI_make_current_read, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SUN_get_transparent_index, GLX_ARB_create_context
client glx vendor string: VirtualGL
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_SGI_make_current_read, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SUN_get_transparent_index, GLX_ARB_create_context
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_visual_info,
GLX_EXT_visual_rating, GLX_SGI_make_current_read, GLX_SGIX_fbconfig,
GLX_SGIX_pbuffer, GLX_SUN_get_transparent_index, GLX_ARB_create_context
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 610M/PCI/SSE2
OpenGL version string: 4.2.0 NVIDIA 290.10
OpenGL extensions:
GL_ARB_base_instance, GL_ARB_blend_func_extended,
GL_ARB_color_buffer_float, GL_ARB_compatibility,
GL_ARB_compressed_texture_pixel_storage, GL_ARB_conservative_depth,
GL_ARB_copy_buffer, GL_ARB_depth_buffer_float, GL_ARB_depth_clamp,
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_draw_buffers_blend,
GL_ARB_draw_indirect, GL_ARB_draw_elements_base_vertex,
GL_ARB_draw_instanced, GL_ARB_ES2_compatibility,
GL_ARB_explicit_attrib_location, GL_ARB_fragment_coord_conventions,
GL_ARB_fragment_program, GL_ARB_fragment_program_shadow,
GL_ARB_fragment_shader, GL_ARB_framebuffer_object,
GL_ARB_framebuffer_sRGB, GL_ARB_geometry_shader4,
GL_ARB_get_program_binary, GL_ARB_gpu_shader5, GL_ARB_gpu_shader_fp64,
GL_ARB_half_float_pixel, GL_ARB_half_float_vertex, GL_ARB_imaging,
GL_ARB_instanced_arrays, GL_ARB_internalformat_query,
GL_ARB_map_buffer_alignment, GL_ARB_map_buffer_range, GL_ARB_multisample,
GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_occlusion_query2,
GL_ARB_pixel_buffer_object, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_provoking_vertex, GL_ARB_robustness, GL_ARB_sample_shading,
GL_ARB_sampler_objects, GL_ARB_seamless_cube_map,
GL_ARB_separate_shader_objects, GL_ARB_shader_atomic_counters,
GL_ARB_shader_bit_encoding, GL_ARB_shader_image_load_store,
GL_ARB_shader_objects, GL_ARB_shader_precision, GL_ARB_shader_subroutine,
GL_ARB_shading_language_100, GL_ARB_shading_language_420pack,
GL_ARB_shading_language_include, GL_ARB_shading_language_packing,
GL_ARB_shadow, GL_ARB_sync, GL_ARB_tessellation_shader,
GL_ARB_texture_border_clamp, GL_ARB_texture_buffer_object,
GL_ARB_texture_buffer_object_rgb32, GL_ARB_texture_compression,
GL_ARB_texture_compression_bptc, GL_ARB_texture_compression_rgtc,
GL_ARB_texture_cube_map, GL_ARB_texture_cube_map_array,
GL_ARB_texture_env_add, GL_ARB_texture_env_combine,
GL_ARB_texture_env_crossbar, GL_ARB_texture_env_dot3,
GL_ARB_texture_float, GL_ARB_texture_gather,
GL_ARB_texture_mirrored_repeat, GL_ARB_texture_multisample,
GL_ARB_texture_non_power_of_two, GL_ARB_texture_query_lod,
GL_ARB_texture_rectangle, GL_ARB_texture_rg, GL_ARB_texture_rgb10_a2ui,
GL_ARB_texture_storage, GL_ARB_texture_swizzle, GL_ARB_timer_query,
GL_ARB_transform_feedback2, GL_ARB_transform_feedback3,
GL_ARB_transform_feedback_instanced, GL_ARB_transpose_matrix,
GL_ARB_uniform_buffer_object, GL_ARB_vertex_array_bgra,
GL_ARB_vertex_array_object, GL_ARB_vertex_attrib_64bit,
GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
GL_ARB_vertex_type_2_10_10_10_rev, GL_ARB_viewport_array,
GL_ARB_window_pos, GL_ATI_draw_buffers, GL_ATI_texture_float,
GL_ATI_texture_mirror_once, GL_S3_s3tc, GL_EXT_texture_env_add,
GL_EXT_abgr, GL_EXT_bgra, GL_EXT_bindable_uniform, GL_EXT_blend_color,
GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
GL_EXT_blend_minmax, GL_EXT_blend_subtract, GL_EXT_compiled_vertex_array,
GL_EXT_Cg_shader, GL_EXT_depth_bounds_test, GL_EXT_direct_state_access,
GL_EXT_draw_buffers2, GL_EXT_draw_instanced, GL_EXT_draw_range_elements,
GL_EXT_fog_coord, GL_EXT_framebuffer_blit, GL_EXT_framebuffer_multisample,
GL_EXTX_framebuffer_mixed_formats, GL_EXT_framebuffer_object,
GL_EXT_framebuffer_sRGB, GL_EXT_geometry_shader4,
GL_EXT_gpu_program_parameters, GL_EXT_gpu_shader4,
GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
GL_EXT_packed_float, GL_EXT_packed_pixels, GL_EXT_pixel_buffer_object,
GL_EXT_point_parameters, GL_EXT_provoking_vertex, GL_EXT_rescale_normal,
GL_EXT_secondary_color, GL_EXT_separate_shader_objects,
GL_EXT_separate_specular_color, GL_EXT_shader_image_load_store,
GL_EXT_shadow_funcs, GL_EXT_stencil_two_side, GL_EXT_stencil_wrap,
GL_EXT_texture3D, GL_EXT_texture_array, GL_EXT_texture_buffer_object,
GL_EXT_texture_compression_dxt1, GL_EXT_texture_compression_latc,
GL_EXT_texture_compression_rgtc, GL_EXT_texture_compression_s3tc,
GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888,
GL_EXT_texture_integer, GL_EXT_texture_lod, GL_EXT_texture_lod_bias,
GL_EXT_texture_mirror_clamp, GL_EXT_texture_object,
GL_EXT_texture_shared_exponent, GL_EXT_texture_sRGB,
GL_EXT_texture_sRGB_decode, GL_EXT_texture_storage,
GL_EXT_texture_swizzle, GL_EXT_texture_type_2_10_10_10_REV,
GL_EXT_timer_query, GL_EXT_transform_feedback2, GL_EXT_vertex_array,
GL_EXT_vertex_array_bgra, GL_EXT_vertex_attrib_64bit,
GL_EXT_x11_sync_object, GL_EXT_import_sync_object, GL_IBM_rasterpos_clip,
GL_IBM_texture_mirrored_repeat, GL_KTX_buffer_region, GL_NV_alpha_test,
GL_NV_blend_minmax, GL_NV_blend_square, GL_NV_complex_primitives,
GL_NV_conditional_render, GL_NV_copy_depth_to_color, GL_NV_copy_image,
GL_NV_depth_buffer_float, GL_NV_depth_clamp, GL_NV_explicit_multisample,
GL_NV_fbo_color_attachments, GL_NV_fence, GL_NV_float_buffer,
GL_NV_fog_distance, GL_NV_fragdepth, GL_NV_fragment_program,
GL_NV_fragment_program_option, GL_NV_fragment_program2,
GL_NV_framebuffer_multisample_coverage, GL_NV_geometry_shader4,
GL_NV_gpu_program4, GL_NV_gpu_program4_1, GL_NV_gpu_program5,
GL_NV_gpu_program_fp64, GL_NV_gpu_shader5, GL_NV_half_float,
GL_NV_light_max_exponent, GL_NV_multisample_coverage,
GL_NV_multisample_filter_hint, GL_NV_occlusion_query,
GL_NV_packed_depth_stencil, GL_NV_parameter_buffer_object,
GL_NV_parameter_buffer_object2, GL_NV_path_rendering,
GL_NV_pixel_data_range, GL_NV_point_sprite, GL_NV_primitive_restart,
GL_NV_register_combiners, GL_NV_register_combiners2,
GL_NV_shader_atomic_counters, GL_NV_shader_buffer_load,
GL_NV_texgen_reflection, GL_NV_texture_barrier,
GL_NV_texture_compression_vtc, GL_NV_texture_env_combine4,
GL_NV_texture_expand_normal, GL_NV_texture_lod_clamp,
GL_NV_texture_multisample, GL_NV_texture_rectangle, GL_NV_texture_shader,
GL_NV_texture_shader2, GL_NV_texture_shader3, GL_NV_transform_feedback,
GL_NV_transform_feedback2, GL_NV_vdpau_interop, GL_NV_vertex_array_range,
GL_NV_vertex_array_range2, GL_NV_vertex_attrib_integer_64bit,
GL_NV_vertex_buffer_unified_memory, GL_NV_vertex_program,
GL_NV_vertex_program1_1, GL_NV_vertex_program2,
GL_NV_vertex_program2_option, GL_NV_vertex_program3,
GL_NVX_conditional_render, GL_NVX_gpu_memory_info, GL_OES_depth24,
GL_OES_depth32, GL_OES_depth_texture, GL_OES_element_index_uint,
GL_OES_fbo_render_mipmap, GL_OES_get_program_binary, GL_OES_mapbuffer,
GL_OES_packed_depth_stencil, GL_OES_rgb8_rgba8,
GL_OES_standard_derivatives, GL_OES_texture_3D, GL_OES_texture_float,
GL_OES_texture_float_linear, GL_OES_texture_half_float,
GL_OES_texture_half_float_linear, GL_OES_texture_npot,
GL_OES_vertex_array_object, GL_OES_vertex_half_float,
GL_SGIS_generate_mipmap, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow, GL_SUN_slice_accum
glu version: 1.3
glu extensions:
GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x21 24 tc 0 32 0 r . . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x22 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x8e 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x8f 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x90 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x91 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x92 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x93 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x94 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x95 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x96 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x97 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x98 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x99 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x9a 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x9b 24 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x9c 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x9d 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x9e 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x9f 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa0 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa1 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa2 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa3 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa4 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa5 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa6 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa7 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa8 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xa9 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0xaa 24 dc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
0x5d 32 tc 0 32 0 r y . 8 8 8 0 4 24 0 16 16 16 16 0 0 None
目前 bumblebee 的發展似乎尚未能夠動態切換 intel 和 nvidia 顯示卡
http://www.omgubuntu.co.uk/2011/05/bumbleebee-brings-nvidia-optimus-gpu-switching-to-linux-users/
https://wiki.archlinux.org/index.php/Bumblebee
所以當您的應用程式要用到 nvidia 顯示卡時,
您要用命令行啟動
$ optirun 您的_應用程式
或者您直接修改固定要用的 應用程式.desktop 檔案來啟動
因為大部份的時候都用內建的 intel 顯示卡
所以在不用的時候要將 nvidia 顯示卡關閉以減少耗電
請參考:
https://github.com/Bumblebee-Project/Bumblebee/wiki/ACPI-Removed
http://hybrid-graphics-linux.tuxfamily.org/index.php?title=ACPI_calls
首先,我們需要安裝 acpi_call 模組
請到 software.opensuse.org 搜尋 acpi_call-kmp
依照您的核心類型選擇所需的套件
$ uname -r
3.1.0-1.2-desktop
所以我要選擇 acpi_call-kmp-desktop 套件
我使用了 home:Ximi1970:bumblebee-unstable 套件庫中的
# zypper ar obs://home:Ximi1970:bumblebee-unstable/openSUSE_12.1 acpi_call
# zypper in acpi_call-kmp-desktop
載入 acpi_call 模組
# modprobe acpi_call
接著根據 http://hybrid-graphics-linux.tuxfamily.org/index.php?title=ACPI_calls#How_to_add_your_model.27s_information
測試您的顯示卡所支援的呼叫方式
1. 顯示您的機型
# dmidecode -s system-product-name && dmidecode -s system-version
Aspire 4752
V2.13
2. 顯示您的顯示卡資訊
# lspci -vnnn | perl -lne 'print if /^\d+\:.+(\[\S+\:\S+\])/' | grep VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller [8086:0126] (rev 09) (prog-if 00 [VGA controller])
01:00.0 VGA compatible controller [0300]: nVidia Corporation Device [10de:0dea] (rev ff) (prog-if ff)
3. 下載測試 script 並進行測試
因為我們已經先安裝了並載入了 acpi_call 模組,所以不必自己編譯
直接測試即可
$ git clone https://github.com/mkottman/acpi_call.git
Cloning into acpi_call...
remote: Counting objects: 200, done.
remote: Compressing objects: 100% (132/132), done.
remote: Total 200 (delta 109), reused 148 (delta 66)
Receiving objects: 100% (200/200), 32.30 KiB, done.
Resolving deltas: 100% (109/109), done.
$ sh acpi_call/test_off.sh
Trying \_SB.PCI0.P0P1.VGA._OFF: failed
Trying \_SB.PCI0.P0P2.VGA._OFF: failed
Trying \_SB_.PCI0.OVGA.ATPX: failed
Trying \_SB_.PCI0.OVGA.XTPX: failed
Trying \_SB.PCI0.P0P3.PEGP._OFF: failed
Trying \_SB.PCI0.P0P2.PEGP._OFF: failed
Trying \_SB.PCI0.P0P1.PEGP._OFF: failed
Trying \_SB.PCI0.MXR0.MXM0._OFF: failed
Trying \_SB.PCI0.PEG1.GFX0._OFF: failed
Trying \_SB.PCI0.PEG0.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG1.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG0.PEGP._OFF: works!
這表示這個顯示卡可以用 \_SB.PCI0.PEG0.PEGP._OFF 來關閉
接下來要編輯
/etc/bumblebee/cardon
內容為
\_SB.PCI0.PEG0.PEGP._ON
/etc/bumblebee/cardoff
內容為就是剛才的測試結果
\_SB.PCI0.PEG0.PEGP._OFF
最後編輯 /etc/bumblebee/bumblebee.conf
修改
STOP_SERVICE_ON_EXIT=Y
ENABLE_POWER_MANAGEMENT=Y
FALLBACK_START=Y
存檔之後,重新開機,大功告成
您可以察看 /var/log/bumblebee.log
您會看見 nvidia 顯示卡在啟動時被停用的訊息
但是只要您用 optirun 去呼叫
就可以用較強的 nvidia 顯示卡功能
[ 26.92] Bumblebee log started at Mon, 02 Jan 2012 22:13:43 +0800
[ 26.93] Creating fifo /var/run/bumblebee.fifo for communication...
[ 26.93] Making FIFO writable for members of group bumblebee
[ 26.95] Unloading driver 'nvidia' on start...
[ 27.01] rmmod /lib/modules/3.1.0-1.2-desktop/updates/nvidia.ko
[ 27.02] Disabling graphics card on start...
[ 27.46] insmod /lib/modules/3.1.0-1.2-desktop/updates/acpi_call.ko
[ 27.47] Waiting for orders
您也可以看一下 /var/log/Xorg.0.log
這是 intel 顯示卡載入驅動的紀錄
還有 /var/log/Xorg.8.log
這是 nvidia 顯示卡用 VirtualGL 在虛擬的 X 載入的紀錄
這台電腦的 Fn 快速鍵大多可以正常運作(多媒體鍵就沒測試了)
Fn+F3 循環切換無線網路與藍牙開關正常
Fn+F4 休眠正常
Fn+F5 看起來像是切換外接螢幕(沒得測)
Fn+F6 關閉螢幕正常
Fn+F7 觸控板開關正常
Fn+F8 音量開關正常
Fn+F12 Scr LK 沒測試
Fn+up-arrow 音量調大正常
Fn+down-arrow 音量調小正常
Fn+F11 數字鍵的部份因為 systemd 的影響而無法用
要加上 init=/sbin/init 核心參數才能正常運作
請小心儘量不要用 release note 中的方法...
參考 http://en.opensuse.org/openSUSE:Managing_Systemd
Fn+right-arrow 螢幕調亮
Fn+left-arrow 螢幕調暗
則需要加上 acpi_backlight=vendor acpi_osi=Linux 的核心參數才能調整
這台電腦的其他資訊:
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 04fc:2801 Sunplus Technology Co., Ltd
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 062a:4101 Creative Labs
Bus 002 Device 003: ID 0489:e03c Foxconn / Hon Hai
其中 Foxconn/HonHai 的裝置是藍牙
目前似乎沒辦法使用
所以用快速鍵把藍牙關起來了
不管怎樣,貼個貼紙佔領起來再說吧!
Have a lot of fun !
沒有留言:
張貼留言