Meego Wiki
Views
From MeeGo wiki
Revision as of 09:52, 23 July 2010 by Maxayu (Talk | contribs)
Jump to: navigation, search

Contents

Disclaimer

The content of this wiki page is my personal opinion only and although I am an employee of Intel, the statements I make here in no way represent Intel's position on the issue, nor am I authorized to speak on behalf of Intel on this matter.

--Max

The problem, and a solution

MeeGo is designed to run on a variety of devices: netbooks, handsets, in-vehicles, connected TVs, and media phones. But desktops are not in this list. So one must either use a real MeeGo-supported device or an emulator to test the software she/he developed in a desktop box, which is less convenient than testing the software in the desktop box directly.

A solution for this problem is to make MeeGo to support desktops. Since netbooks and desktops are similar by nature, so it does not need much extra effort.

Current status

Following screen shot shows the Netbook branch of MeeGo running on a desktop box.

Picture1.png

In fact, the Netbook branch of MeeGo has some support for desktop boxes already, as following:

  • User experience (UX) - The behavior of Netbook UX has been adjusted for desktop screens, as following:
    • When using a screen which is larger than typical netbook screens, all the apps you are using will be shown in one zone instead of multiple zones.
  • Hardware support - Some desktop hardware are supported, including:
    • Intel graphics chips are supported.
  • Software
    • All development libraries for the Netbook branch are there, including:
      • C/C++/Python
      • Qt/GTK+
    • The required development tools for the Netbook branch are there, including:
      • QtCreator
      • Anjuta

MeeGo IT Build Image

(http://opensource.intel.com/linux-wiki/MeeGoITBuild)

The packages of the image are in the following repos:

  • Repository for 'Enterprise' packages, which should all be on their way into MeeGo Trunk: http://build.meego.com/project/show?project=devel:enterprise . Following packages are in the repo:
    • chromium
    • evolution
    • evolution-data-server
    • jana
    • krb5-auth-dialog
    • nss
    • openconnect
    • pidgin-sipe
    • rdesktop
    • tigervnc
    • tsclient

Gaps

Comparing the Netbook branch of MeeGo with other well known Linux distros, we can find the following gaps:

  • User experience(UX)
    • Missing some handy system utilities like:
      • Menu for shut down / suspend / reboot / lock the system
    • No multiple-users support
  • Hardware support
    • Platforms with the GMA-500, Nvidia, or ATI graphics chipsets are not supported
    • No x86_64 support
  • Software - Missing some frequently used software, such as:
    • Eclipse
    • OpenOffice
    • Java

MeeGo IT Build

(http://opensource.intel.com/linux-wiki/MoblinIntelRequirements)

The entry point of current bugs: http://bugs.meego.com/show_bug.cgi?id=1508

Proposal

To make MeeGo to support desktops, at least it should have the required changes below. MeeGo will support desktops better if the optional changes below be applied.

Required changes

  • User experience - Enhance Netbook UX to give users better experience for desktop usage model, including:
    • Add menu for shut down / suspend / reboot / lock the system in the UX.
  • Hardware support - Enable most desktop hardware, which should be comparable to what Ubuntu, Fedora, or OpenSUSE does.
    • Enable more kernel drivers.
    • Add non-intel video drivers/libraries, including:
      • Xorg X11 video drivers
      • Mesa dri drivers
      • libdrm libraries
      • kernel video drivers
    • Support x86_64.

Required changes in detail

  • Create two new build repos in OBS to build packages to run on desktops:
    • i586 - Using a gcc which has not been optimized for Atom.
    • x86_64
  • Change existing packages:
    • kernel
      • Enable more drivers in the config file, including:
        • video drivers
        • Gpu drm drivers
    • mesa
      • Add mesa dri drivers for: mga, r128, r200, r300, radeon, savage, sis, tdfx, unichrome.
    • libdrm
      • Add a libdrm library for nVidia: libdrm_nouveau.so
  • Add new packages:
    • xorg-x11-drv-XXX, where XXX can be replaced by: apm, ast, ati, cirrus, geode, glint, i128, i740, mach64, mga, neomagic, nouveau, nv, openchrome, r128, rendition, s3virge, savage, siliconmotion, sis, sisusb, tdfx, trident, v4l, or voodoo.
    • meego-panel-leave
      • This is a new panel service of the window manager. It adds a new button in the bar of mutter-moblin. When the user clicks the button, a panel will be popped up, and she/he can choose to shut down / suspend / reboot / lock the system from the panel.

Optional changes

  • User experience - Polish Netbook UX to give users better experience for desktop usage model, including:
    • Make it quicker when switch between apps.
    • Support multiple-users
  • Software - The more, the better
    • The first set of apps/features to add is as following:
      • java
      • eclipse
      • OpenOffice.org
      • rdesktop
      • icecream distributed compiler (see home:sbryan project on moblin-mdi for an local dev team specifc customized package)
      • Resolution configuration
      • Export display for presentations

Appendix 1: How to install MeeGo for Netbook on a desktop box

  • Make sure there is an Intel graphics chip/card in your desktop box.
    • You may need to change BIOS settings to use the integrated Intel graphics chip.
  • Download MeeGo v1.0 for Netbook from http://meego.com/downloads/releases/1.0/meego-v1.0-netbooks-google-chrome-browser and dd it into a USB disk. Boot from it to install MeeGo.
  • If you found that the installation blocked when writing boot information to disk, don't panic. This seems to be a bug. A work around is to reboot the system, and enter the following commands in grub to boot MeeGo:
root (hdX,X)
kernel /boot/vmlinuz-XX.XX root=/dev/XXX ro
boot

Appendix 2: Investigation on MeeGo Netbook UX

Architecture

  • Window manager: mutter
    • Window manager plugin: mutter-moblin
    • Panel services of window manager: zones, myzone, status, people, internet, media, pasteboard, applications

Compare MeeGo zones (large display mode) with traditional workspaces

  • The zone is MeeGo's implementation of workspace
  • A new zone can be created only if there is a zone contains more than one app.
  • Switching zones takes noticeable time, which is caused by the way the animation effect designed.
  • Conclusion: MeeGo zones has fewer features than traditional workspaces, and it is also slower. But it is still bearable to most end users, while it would be cool if we re-design it to fit desktop usage model better.

Where are the shortcuts, folders, and files which should be shown on traditional desktop?

  • Default folders (Documents, Downloads, Music, Pictures, Videos, Trash) can be accessed from the Devices panel.
    • The Desktop folder and Documents folder are merged into one single Documents folder.
      • I like it. It is difficult for users to remember where a file is if it can be either in Documents folder or in Desktop folder. If one really want files and folders to be shown in the desktop, we can simply show the content of the Documents folder in the desktop, but the UX need to be re-designed to gave users good experience.
    • The Trash folder is put in a less important place.
  • No shortcut can be made by end user using MeeGO UX.
  • Conclusion: This is a big change, while it also make sense. So we can keep the current implementation.

Appendix 3: Investigation on kernel & graphics drivers

  • More kernel drivers need to be enabled.
  • Following non-intel video drivers/libraries need to be added:
    • Xorg X11 video drivers
    • Mesa dri drivers
    • libdrm libraries
    • kernel video drivers

See more details below.


Mesa DRI driver

Ubuntu Lucid

$ ls /usr/lib/dri
i810_dri.so  i915_dri.so  i965_dri.so  mach64_dri.so  mga_dri.so  r128_dri.so  r200_dri.so  r300_dri.so  r600_dri.so  radeon_dri.so  savage_dri.so  sis_dri.so  swrast_dri.so  tdfx_dri.so  unichrome_dri.so

$ dpkg -S /usr/lib/dri/*
libgl1-mesa-dri: /usr/lib/dri/i810_dri.so
libgl1-mesa-dri: /usr/lib/dri/i915_dri.so
libgl1-mesa-dri: /usr/lib/dri/i965_dri.so
libgl1-mesa-dri: /usr/lib/dri/mach64_dri.so
libgl1-mesa-dri: /usr/lib/dri/mga_dri.so
libgl1-mesa-dri: /usr/lib/dri/r128_dri.so
libgl1-mesa-dri: /usr/lib/dri/r200_dri.so
libgl1-mesa-dri: /usr/lib/dri/r300_dri.so
libgl1-mesa-dri: /usr/lib/dri/r600_dri.so
libgl1-mesa-dri: /usr/lib/dri/radeon_dri.so
libgl1-mesa-dri: /usr/lib/dri/savage_dri.so
libgl1-mesa-dri: /usr/lib/dri/sis_dri.so
libgl1-mesa-dri: /usr/lib/dri/swrast_dri.so
libgl1-mesa-dri: /usr/lib/dri/tdfx_dri.so
libgl1-mesa-dri: /usr/lib/dri/unichrome_dri.so

$ dpkg -L libgl1-mesa-dri
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libgl1-mesa-dri
/usr/share/doc/libgl1-mesa-dri/copyright
/usr/share/doc/libgl1-mesa-dri/changelog.Debian.gz
/usr/lib
/usr/lib/dri
/usr/lib/dri/i810_dri.so
/usr/lib/dri/i915_dri.so
/usr/lib/dri/i965_dri.so
/usr/lib/dri/mach64_dri.so
/usr/lib/dri/mga_dri.so
/usr/lib/dri/r128_dri.so
/usr/lib/dri/r200_dri.so
/usr/lib/dri/r300_dri.so
/usr/lib/dri/r600_dri.so
/usr/lib/dri/radeon_dri.so
/usr/lib/dri/savage_dri.so
/usr/lib/dri/sis_dri.so
/usr/lib/dri/swrast_dri.so
/usr/lib/dri/tdfx_dri.so
/usr/lib/dri/unichrome_dri.so

Fedora 12

[root@xyu9-dev dri]# ls /usr/lib/dri/
i810_dri.so  libdricore.so  r200_dri.so    savage_dri.so  tdfx_dri.so
i915_dri.so  mga_dri.so     r300_dri.so    sis_dri.so     unichrome_dri.so
i965_dri.so  r128_dri.so    radeon_dri.so  swrast_dri.so
[root@xyu9-dev dri]# rpm -qf /usr/lib/dri/*
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686
mesa-dri-drivers-7.6-0.13.fc12.i686


MeeGo

$ ls /usr/lib/dri
dummy_drv_video.so  i915_dri.so  i965_dri.so  swrast_dri.so

$ rpm -qf /usr/lib/dri/*
libva-1.0.1-3.4.i586
mesa-dri-i915-driver-7.8.1-4.2.i586
mesa-dri-i965-driver-7.8.1-4.2.i586
mesa-dri-swrast-driver-7.8.1-4.2.i586

$ rpm -qpl  mesa-dri-i915-driver-7.8.1-6.6.i586.rpm
/usr/lib/dri/i915_dri.so

While mesa is packaged into following rpms:

egl-utils-7.8.1-6.2.i586.rpm
glx-utils-7.8.1-6.2.i586.rpm
mesa-7.8.1-6.2.src.rpm
mesa-debuginfo-7.8.1-6.2.i586.rpm
mesa-dri-drivers-devel-7.8.1-6.2.i586.rpm
mesa-dri-i915-driver-7.8.1-6.2.i586.rpm
mesa-dri-i965-driver-7.8.1-6.2.i586.rpm
mesa-dri-swrast-driver-7.8.1-6.2.i586.rpm
mesa-libEGL-7.8.1-6.2.i586.rpm
mesa-libEGL-devel-7.8.1-6.2.i586.rpm
mesa-libGL-7.8.1-6.2.i586.rpm
mesa-libGL-devel-7.8.1-6.2.i586.rpm
mesa-libGLU-7.8.1-6.2.i586.rpm
mesa-libGLU-devel-7.8.1-6.2.i586.rpm
mesa-libGLUT-7.8.1-6.2.i586.rpm
mesa-libGLUT-devel-7.8.1-6.2.i586.rpm

Conclusion

Mesa dri driver for non-intel graphics chips need to be added.

Libdrm library

Fedora 12

[root@xyu9-dev dri]# rpm -ql libdrm
/etc/udev/rules.d/91-drm-modeset.rules
/usr/lib/libdrm.so.2
/usr/lib/libdrm.so.2.4.0
/usr/lib/libdrm_intel.so.1
/usr/lib/libdrm_intel.so.1.0.0
/usr/lib/libdrm_nouveau.so.1
/usr/lib/libdrm_nouveau.so.1.0.0
/usr/lib/libdrm_radeon.so.1
/usr/lib/libdrm_radeon.so.1.0.0
/usr/share/doc/libdrm-2.4.15
/usr/share/doc/libdrm-2.4.15/README

MeeGo

[root@localhost lib]# rpm -ql libdrm
/usr/lib/libdrm.so.2
/usr/lib/libdrm.so.2.4.0
/usr/lib/libdrm_intel.so.1
/usr/lib/libdrm_intel.so.1.0.0
/usr/lib/libdrm_radeon.so.1
/usr/lib/libdrm_radeon.so.1.0.0
/usr/lib/libkms.so.1
/usr/lib/libkms.so.1.0.0
/usr/share/doc/libdrm-2.4.20
/usr/share/doc/libdrm-2.4.20/README

Conclusion

Need to add a libdrm library for nVidia cards (libdrm_nouveau.so)

Xorg X11 video driver

MeeGo has:

xorg-x11-drv-intel-2.11.0-1.5.i586
xorg-x11-drv-vesa-2.3.0-2.5.i586

While Fedora 12 has:

xorg-x11-drv-apm-1.2.2-1.fc12.i686
xorg-x11-drv-ast-0.89.9-1.fc12.i686
xorg-x11-drv-ati-6.13.0-0.10.20091006git457646d73.fc12.i686
xorg-x11-drv-cirrus-1.3.2-1.fc12.i686
xorg-x11-drv-dummy-0.3.2-3.fc12.i686
xorg-x11-drv-fbdev-0.4.1-1.fc12.i686
xorg-x11-drv-geode-2.11.4.1-1.fc12.i686
xorg-x11-drv-glint-1.2.4-1.fc12.i686
xorg-x11-drv-i128-1.3.3-1.fc12.i686
xorg-x11-drv-i740-1.3.2-1.fc12.i686
xorg-x11-drv-intel-2.9.1-1.fc12.i686
xorg-x11-drv-mach64-6.8.2-1.fc12.i686
xorg-x11-drv-mga-1.4.11-1.fc12.i686
xorg-x11-drv-neomagic-1.2.4-2.fc12.i686
xorg-x11-drv-nouveau-0.0.15-17.20091105gite1c2efd.fc12.i686
xorg-x11-drv-nv-2.1.15-2.fc12.i686
xorg-x11-drv-openchrome-0.2.904-1.fc12.i686
xorg-x11-drv-r128-6.8.1-2.fc12.i686
xorg-x11-drv-rendition-4.2.2-4.fc12.i686
xorg-x11-drv-s3virge-1.10.4-1.fc12.i686
xorg-x11-drv-savage-2.3.1-1.fc12.i686
xorg-x11-drv-siliconmotion-1.7.3-1.fc12.i686
xorg-x11-drv-sis-0.10.2-1.fc12.i686
xorg-x11-drv-sisusb-0.9.3-1.fc12.i686
xorg-x11-drv-tdfx-1.4.3-1.fc12.i686
xorg-x11-drv-trident-1.3.3-1.fc12.i686
xorg-x11-drv-v4l-0.2.0-3.fc12.1.i686
xorg-x11-drv-vesa-2.2.1-1.fc12.i686
xorg-x11-drv-voodoo-1.2.3-1.fc12.i686

Conclusion: Xorg X11 video driver for non-intel video cards need to be added.

Kernel drivers for graphics

Fedora 12

[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/video/
aty          i810         metronomefb.ko  s3fb.ko     tdfxfb.ko     via
backlight    kyro         neofb.ko        savage      tridentfb.ko
cirrusfb.ko  macmodes.ko  nvidia          sm501fb.ko  vfb.ko
display      matrox       output.ko       sstfb.ko    vga16fb.ko
fb_ddc.ko    mb862xx      riva            svgalib.ko  vgastate.ko
[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/video/aty/
aty128fb.ko  atyfb.ko  radeonfb.ko
[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/video/i810/
i810fb.ko
[root@xyu9-dev kernel]# ls /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/gpu/drm/
drm_kms_helper.ko  i2c   i830  mga      r128    savage  tdfx  via
drm.ko             i810  i915  nouveau  radeon  sis     ttm

MeeGo

[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/video/
i810  vgastate.ko
[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/video/i810/
i810fb.ko
[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/gpu/drm/
mga
[root@localhost kernel]# ls /lib/modules/2.6.33.3-5.3-netbook/kernel/drivers/gpu/drm/mga/
mga.ko

Conclusion

Kernel video drivers for non-intel graphics chips need to be added.

General kernel drivers

  • There are 650~ files in MeeGo kernel, while there are 2600~ files in kernel of Fedora 13.
  • There are 1389 drivers enabled in MeeGo kernel, while there are 3261 drivers enabled in kenel of Fedora 12. (I checked /boot/config-2.6.33.3-5.3-netbook for MeeGo, and /boot/config-2.6.31.5-127.fc12.i686.PAE for Fedora 12)
  • Conclusion: more kernel drivers need to be enabled.


Example of system requirements

System Requirements of OpenSUSE 11.2

See http://www.novell.com/documentation/opensuse112/art_osuse_installquick_112/?page=/documentation/opensuse112/art_osuse_installquick_112/data/art_osuse_installquick_112.html

  • Pentium* III 500 MHz or higher processor (Pentium 4 2.4 GHz or higher or any AMD64 for Intel* EM64T processor recommended)
  • 512 MB physical RAM (1 GB recommended)
  • 3 GB available disk space (more recommended)
  • 800 x 600 display resolution (1024 x 768 or higher recommended)


System requirements of Ubuntu

Appendix 4: Investigation on development library and apps

Package number of MeeGo and main distros:

  • MeeGo has 1000+ packages.
  • Fedora 13 has 9000+ packages.
  • Ubuntu 10.04 has 34,000+ packages. Most of them came from Debian.

A method to figure out which app/library need to be added first

See http://otc-files.bj.intel.com/pub/MeeGo/desktop/solution_for_new_packages_by_max.html

Packages I recommend to add first

java
eclipse
OpenOffice.org
rdesktop

Packages others suggested

xchat

Appendix 5: Investigation on desktop development process of Ubuntu, Fedora, and OpenSUSE

In Ubuntu, contributors are fall into several categories.

In Fedora, external contributors are in the same role.

In OpenSUSE, OBS is used, and it is open to external developers.

Personal tools