Olpc-utils: Difference between revisions

From OLPC
Jump to navigation Jump to search
m (related pages)
No edit summary
Line 13: Line 13:
=== /etc/init.d/olpc-configure ===
=== /etc/init.d/olpc-configure ===


As previously, it runs early at system boot to do some OLPC-specific
Runs early at system boot to do some OLPC-specific
initializations and the first-boot configuration.
initializations and the first-boot configuration.


For the first-boot configuration, it used to check for /.olpc-configured. Now
The first-boot configuration is conditionalized on the `/home/olpc/.olpc-configured` flag.
it uses /home/olpc/.olpc-configured instead.


olpc-configure used to rewrite /etc/sysconfig/i18n. Now it writes language
olpc-configure writes language and keyboard settings to `/home/olpc/.i18n`, overridable by users.
and keyboard settings to /home/olpc/.i18n, overridable by users.


`/etc/sysconfig/i18n` is only used by initscripts,
I switched to specify XKB keyboards with the "layout(variant)" syntax because
and should contain LANG=C for improved performance
it's more intuitive when you have two or more layouts than the separate
(cuts 5-6 seconds from the boot).
layout/variant keys. The old syntax is still supported.


We preferably specify XKB keyboards with the "layout(variant)"
For MP machines, I'll set the keyboard directly from mfg data, without a
syntax because it's more intuitive when you have two or multiple
hardcoded table to map KA tags to X11 keyboars.
layouts. The separate layout and variant syntax is still supported.


For MP machines, we set the keyboard directly from mfg data,
The Linux console keyboard is still not being set accordingly. Not sure if we
without a hardcoded table to map mfg tags to XKB layout names. (TODO)
really want to do it. Power users can run loadkeys themselves if they really

want to.
The Linux console keyboard is still not being set accordingly.
Not sure if we really want to do it. Power users can run loadkeys
themselves if they really want to.




=== /etc/X11/xorg.conf ===
=== /etc/X11/xorg.conf ===


This file is *no longer* hacked by olpc-configure
xorg.conf is now a symlink created by olpc-configure,
pointing to one of two possible fixed configuration files,
that don't need exceptional handling for the update process.


We still handle some differences between Geode+DCON and
actually, xorg.conf is not even a file: olpc-configure creates a symlink to
emulators. I'd like to get X to autodetect these things
one of two possible configuration files, which are read-only and can be
better so we could kill off the configuration files altogether.
upgraded normally


We're currently missing a way to allow user customizations in
We still handle some differences between Geode+DCON and emulators. I'd like
xorg.conf. In the future, we could make olpc-dm check for `/home/olpc/.xorg.conf` and use it if present.
to get X to autodetect these things better so we could kill off the
On the other hand, customizing xorg.conf is for power users
configuration files altogether.
who may also want to customize other `/etc` entries.

So if we really want to support these use cases, we'd be better
we're missing a way to allow user customizations in xorg.conf. In the future,
off finding a generic way to preserve user customizations.
I could make olpc-dm check for /home/olpc/.xorg.conf and use it if present.
But frankly, customizing xorg.conf is for power users who may also want to
customize other /etc entries. So if we really want to support these use
cases, we'd be better off finding a generic way to preserve user
customizations.


=== /usr/bin/olpc-dm ===
=== /usr/bin/olpc-dm ===


This is our "display manager". A streamlined version of what gdm and kdm are.
This is our "display manager", a streamlined version of what
So streamlined that it doesn't even have a UI. In the future, it could be
gdm and kdm are. So streamlined that it doesn't even have a UI.
extented to support multiple users, XDMCP and other fancy things. That day, I
It could be extented to support multiple users, XDMCP and other
fancy things.
hope to be at a safe distance.

olpc-dm currently spawns the X server and the session through
startx and xinit, but there are plans to make it do it directly.
This will also allow us to do something smarter than SysVinit's
once/respawn modes for restarting X.


olpc-dm spawns X and the session through startx and xinit. I'm planning to
BUG: olpc-dm still hogs the console and dies when you hit ^C.
The fix is not a one-liner, and it's not a critical bug, but
through them away shortly. This will also allow us to do something smarter
we're planning to fix it some day.
than sysvinit's once/respawn modes for restarting X.


olpc-dm still hogs the console and dies when you hit ^C. The fix is not a
one-liner, and it's not a critical bug, but I'm planning to fix it some day.


=== /usr/bin/olpc-session ===
=== /usr/bin/olpc-session ===


This script replaces /home/olpc/.xinitrc . It sources /home/olpc/.i18n for
This script replaces `/home/olpc/.xinitrc`. It sources
$LANG, $XKB_LAYOUT and, optionally, $XKB_VARIANT.
`/home/olpc/.i18n` for $LANG, $XKB_LAYOUT and, optionally,
$XKB_VARIANT.


The last action olpc-session does is spawning the Sugar shell.
olpc-session also replaces /usr/bin/sugar, which will shortly go away, thus
simplifying our boot process even more.


=== /home/olpc/.xsession ===
=== /home/olpc/.xsession ===


This is an "extensibility hook" for customizing your session. It gets sourced
This is an "extensibility hook" for customizing your session.
near the end of /usr/bin/olpc-session. A default is provided as
It gets sourced near the end of `/usr/bin/olpc-session`.
.xsession-example, with some tips you may want to review.
A default is provided as .xsession-example, with some tips
you may want to review.


This file also replaces the /home/olpc/.sugar.debug
This file also replaces the old `/home/olpc/.sugar.debug`


== Related pages ==
== Related pages ==

Revision as of 18:34, 8 November 2007

olpc-utils localization and configuration subsystem

The current configuration scheme is implemented in olpc-utils (before, it was scattered through initscripts, sugar and pilgrim).

We strive to minimize the number of system files we write to, and keep our deviations from Linux as backwards compatible as possible. User controlled files are kept in /home/olpc, so they get automatically preserved on updates.


/etc/init.d/olpc-configure

Runs early at system boot to do some OLPC-specific initializations and the first-boot configuration.

The first-boot configuration is conditionalized on the `/home/olpc/.olpc-configured` flag.

olpc-configure writes language and keyboard settings to `/home/olpc/.i18n`, overridable by users.

`/etc/sysconfig/i18n` is only used by initscripts, and should contain LANG=C for improved performance (cuts 5-6 seconds from the boot).

We preferably specify XKB keyboards with the "layout(variant)" syntax because it's more intuitive when you have two or multiple layouts. The separate layout and variant syntax is still supported.

For MP machines, we set the keyboard directly from mfg data, without a hardcoded table to map mfg tags to XKB layout names. (TODO)

The Linux console keyboard is still not being set accordingly. Not sure if we really want to do it. Power users can run loadkeys themselves if they really want to.


/etc/X11/xorg.conf

xorg.conf is now a symlink created by olpc-configure, pointing to one of two possible fixed configuration files, that don't need exceptional handling for the update process.

We still handle some differences between Geode+DCON and emulators. I'd like to get X to autodetect these things better so we could kill off the configuration files altogether.

We're currently missing a way to allow user customizations in xorg.conf. In the future, we could make olpc-dm check for `/home/olpc/.xorg.conf` and use it if present. On the other hand, customizing xorg.conf is for power users who may also want to customize other `/etc` entries. So if we really want to support these use cases, we'd be better off finding a generic way to preserve user customizations.

/usr/bin/olpc-dm

This is our "display manager", a streamlined version of what gdm and kdm are. So streamlined that it doesn't even have a UI. It could be extented to support multiple users, XDMCP and other fancy things.

olpc-dm currently spawns the X server and the session through startx and xinit, but there are plans to make it do it directly. This will also allow us to do something smarter than SysVinit's once/respawn modes for restarting X.

BUG: olpc-dm still hogs the console and dies when you hit ^C. The fix is not a one-liner, and it's not a critical bug, but we're planning to fix it some day.


/usr/bin/olpc-session

This script replaces `/home/olpc/.xinitrc`. It sources `/home/olpc/.i18n` for $LANG, $XKB_LAYOUT and, optionally, $XKB_VARIANT.

The last action olpc-session does is spawning the Sugar shell.

/home/olpc/.xsession

This is an "extensibility hook" for customizing your session. It gets sourced near the end of `/usr/bin/olpc-session`. A default is provided as .xsession-example, with some tips you may want to review.

This file also replaces the old `/home/olpc/.sugar.debug`

Related pages