Talk:Customizing NAND images

From OLPC
Jump to: navigation, search

This is all useful information; it would be nice to collect a list of scripts people have written for parts of this customization that could turn into a config interface. 18.85.19.49 12:38, 3 July 2007 (EDT)


Patches gratefully accepted. --18.85.18.130 15:07, 3 July 2007 (EDT)

Article outdated

We here at Porto Alegre are using this procedure to create custom image files with local content. But we have notice the need of extras steps than those described in the article. For example, we have laptops with US keyboard and Brazilian keyboard, so we had to delete the /.olpc-configure file to ensure that the machine would run the olpc-configure script in the first boot. With the new crc verification, there is also the need to generate a new .crc file, since modification were made in the image. So, I think that this article needs to be updated. Juliano 19:50, 5 August 2007 (EDT)

To "customize" the XO

I thought this dialog from the devel list would be interesting to share, as it answers some FAQs:

> Because the general public can receive an XO laptop as a gift for their donation through the "Give 1 Get 1" program, is it possible to customize OLPC:
> 1. Disable internal Flash Drive, and boot from external USB hard disk / external CD-ROM drive.
> 2. Boot to console mode (svgalib).
> 3. Install Fedora, Mandriva or other Linux/BSD distro, FreeDOS. Use TWM / IceWM windows manager.
> Is the above ideas possible?

OLPC does not have a conventional BIOS, so any software that depends on one will not work.

3 is possible provided you replace the standard Linux kernel with one including the OLPC patch set. I've also been told that Minix works.

I doubt the BSDs already support our hardware, but wouldn't be hard. FreeDOS would be problematic because the OFW does not emulate BIOS services and does not provide 16bit support. But maybe you can get LinuxBIOS to boot from OFW and then you're done!

Several people booted regular Fedora 7 and Ubuntu Feisty off USB drives. I think the only change needed was installing the kernel package. The RPM is available from us, a dpkg should be easy to produce with the Debian kernel development tools.

When enough of our patches will be merged upstream, and the OLPC hardware gets more widely available, I'd expect the mainstream distros to offer out of the box OLPC support.

> Because OLPC is sold to general public using "Buy 2 Get 1" G1G1,

The answers below are unrelated to the fact that it is being sold.

> is it possible to customize OLPC:

XO-1 is the identifier for the hardware, OLPC is the identifier for the project.

> 1. Disable internal Flash Drive,

No. But if it did not contain the essential boot components (such as /boot/olpc.fth) it would be ignored, and so you would have the same net effect.

> and boot from external USB hard disk

Yes. The external USB storage would need to have the essential boot components (such as /boot/olpc.fth). This is how we load new versions at the moment.

> / external CD-ROM drive.

Don't know. A PC boot structure would not work, only the XO specific boot structure would work. I've not tested it, and I don't know if anyone has.

> 2. Boot to console mode (svgalib).

Not sure. I think not. Let us know how it goes, we're curious. The XO kernel has framebuffer support for the LCD. Suggest you use that instead. Try it in emulation now.

> 3. Install Fedora, Mandriva or other Linux/BSD distro, FreeDOS.

Only if those distributions add support for XO, or if you add the support yourself. For example we have a way to install Debian documented on the Wiki. As Bernardo has said, minimum capability would be the Linux kernel patched and built for XO. The kernel built for ordinary PC is not appropriate. Many services provided by a PC BIOS are not provided by the XO firmware.

> Use TWM / IceWM windows manager.

Yes, that works fine, once the barriers above are overcome.

> Is the above ideas possible?

Yes, with work. Let us know how you go. It isn't part of OLPC mission though, and now is not the time for us to concentrate on it.

Keyboard switching

On this page I finally found usable information about the files to use for changing the default keyboards, like this snippet below (other pages point to the xorg.conf file, and updating that file does not appear to have any effect whatsoever): Complex example (showing X's ability to support multiple layouts on a keyboard that can be switched during use):

XKB_MODEL="olpc"
XKB_LAYOUT="us,ru,kz"
XKB_VARIANT="olpc2,olpc,olpc"
KEYTABLE="us"

However, there is no information here about how to actually switch between the 3 keyboard layouts used in the example above. Is there a default key combo? The so-called "language key" definitely does not work. I also tried to add "xorg.conf style" toggle option in the keyboard file, but without results. The only thing I have been able to do is to get the first keyboard in the layout entry recognized, unable to toggle. So that info would be really useful to add.

Depending on what keyboard you have, the label on the keycap may vary, but using the "language" key (to the right of up arrow, above right arrow), you should toggle between your choices. (On US keyboards, this is the × ÷ key.) --18.85.46.175 18:26, 21 December 2007 (EST)
Could you point out the places where you found outdated information so that we can remove it? Thanks. --18.85.46.175 18:26, 21 December 2007 (EST)

OK, I though I already added this info once, but I don't see it - apologies if this is a duplicate: This page has info about needing to edit /etc/X11/xorg.conf in order to enable keyboard switching: http://wiki.laptop.org/go/Keyboard_layouts

Before I found this page I did try to edit xorg.conf, and to add a toggle key, but none of this had any effect whatsoever.

As to the "language" key: I have a US keyboard, where the keytop has the × ÷, but this key does absolutely nothing for me. With 2 keyboards defined in the keyboard config file, I get the first keyboard in the list, but using the language key has no effect.

Update: heureka! By updating the keymap files, and by getting the XKB_VARIANT entries right, I finally got this to work.