пятница, 12 февраля 2010 г.

Как установить кросскомпилятор для Popcorn (Sigma 86xx) на Ubuntu 9.10

Продолжение. Начало здесь

Данная заметка является вольным переводом статьи CrossCompiling for the NMT с небольшими дополнениями и уточнениями.

Для того, чтобы собрать программу под Networked Media Tank (а собирать мы будем midnight commander) нам нужно сначала установить кросскомпилятор.

Можно загрузить уже собраный Lundman, но, поскольку он был собран в другой конфигурации, программы, скомпилированные с его помощью, могут создавать "Floating point error"

Поэтому соберем кросскомпилятор самостоятельно.

Это не сложно.

Tребуется соединение с интернет.


  1. Определимся с корневым каталогом, где будет находится кросскомпилятор и проекты.
    Я создал каталог /home/akhromov/Staff и загрузил в него toolchain.

    $ mkdir /home/akhromov/Staff $ cd /home/akhromov/Staff $ wget http://www.networkedmediatank.com/download/firmware/nmt/gpl/smp86xx_toolchain.20080505.tar.bz2 $ tar -xjsf smp86xx_toolchain.20080505.tar.bz2 $ cd smp86xx_toolchain.20080505

  2. Установить следующие приложения:
    $ sudo apt-get install flex genromfs bison libncurses5-dev ncurses-base
    Если указанные пакеты или пакет присутствуют в системе, то никаких действий производиться не будет. Если какой либо пакет отсутствует, то он будет установлен.

  3. Установить GCC-3.4
    Меня предупреждал AntiHaos, что необходим компилятор GCC-3.4, но я по лени не проверил это. А Shtucer уже явно указал на мой косяк. Спасибо. Инструкцию поправил.
    $ wget http://ge.archive.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/gcc-3.4-base_3.4.6-6ubuntu5_i386.deb $ wget http://ge.archive.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/cpp-3.4_3.4.6-6ubuntu5_i386.deb $ wget http://ge.archive.ubuntu.com/ubuntu/pool/universe/g/gcc-3.4/gcc-3.4_3.4.6-6ubuntu5_i386.deb $ sudo dpkg -i gcc-3.4-base_3.4.6-6ubuntu5_i386.deb $ sudo dpkg -i cpp-3.4_3.4.6-6ubuntu5_i386.deb $ sudo dpkg -i gcc-3.4_3.4.6-6ubuntu5_i386.deb
    Порядок уствновки важен!

  4. Создать файл конфигурации.
    $ export CC=gcc-3.4 $ make menuconfig



    Ничего не менять, а сразу выбрать пункт < Exit >.
    Устанавливаем следующие параметры:
    Toolchain Options -> Kernel Headers -> (X) Linux 2.6.11.0 kernel headers
    Toolchain Options -> uClibc Version -> (X) uClibc 0.9.28.3
    Toolchain Options -> Binutils Version -> (X) binutils 2.15.91.0.2
    Toolchain Options -> GCC compiler version -> (X) gcc 4.0.4
    Остальные параметры я не менял.
    На вопрос: "Do you wish to save your new Buildroot configuration? "ответить < Yes >

  5. Запустить компиляцию toolchain
    $ make
    Система автоматически загрузит из интернет нужные пакеты и скомпилирует их.
    Весь процесс на Thinkpad x200s (процессор SL9400, RAM - 3GB) и 2-х мегабитным каналом в интернет занимает около получаса.


    Если все прошло правильно, то по завершении компиляции toolchain, Вы увидите в терминале следующее:
    . . . . . . . . . strip /home/akhromov/Staff/smp86xx_toolchain.20080505/toolchain_build_mipsel_nofpu/gdbclient-6.3/gdb/gdb install -c /home/akhromov/Staff/smp86xx_toolchain.20080505/toolchain_build_mipsel_nofpu/gdbclient-6.3/gdb/gdb /home/akhromov/Staff/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/bin/mipsel-linux-uclibc-gdb ln -s ../../bin/mipsel-linux-uclibc-gdb \ /home/akhromov/Staff/smp86xx_toolchain.20080505/build_mipsel_nofpu/staging_dir/mipsel-linux-uclibc/bin/gdb creating toolchain-path.env... akhromov@x200s:~/Staff/smp86xx_toolchain.20080505$
  6. Проверка кросскомпилятора
    Для этого создадим тестовый каталог
    $ cd .. $ mkdir test $ cd test
    и в нем тестовый файл hello.c следующего содержания.
    #include <stdio.h>
    int main()
    {
      printf ("Hello Popcorn!\nThis cool!\n");
      return 0;
    }
    компилируем его
    $ source ../smp86xx_toolchain.20080505/toolchain-path.env $ mipsel-linux-gcc -static hello.c -o hello
    загружаем на наш nmt и в терминале запускаем:
    # ./hello Hello Popcorn! This cool! #
Теперь наш кросскомпилятор готов для работы.

Если нет подходящей темы, открывайте новую.

четверг, 11 февраля 2010 г.

Как добавить новый раздел диска в Ubuntu 9.10

Изначально диск на x200s был разбит следующим образом:



Recovery partition - фишка от IBM для восстановления системы.

На разделе диска (/dev/sda5), куда я установил Ubuntu 9.10 заканчивается место.

К счастью на диске есть один незадействованный раздел (/dev/sda8) размером 83 Gib. Я смонтирую его в каталог /home и перенесу на него данные пользователя.

Пользователь (User): akhromov входит в группу (Group): akhromov.

Итак:

  1. Отформатировать /dev/sda8

    $ sudo mkfs -c -t ext4 /dev/sda8
  2. Скопировать данные на новую партицию

    $ sudo mkdir /mnt/tmp $ sudo mount /dev/sda8 /mnt/tmp $ sudo mkdir /mnt/tmp/akhromov $ sudo chown akhromov:akhromov /mnt/tmp/akhromov $ cp -r /home/akhromov/.* /mnt/tmp/akhromov $ sudo umount /dev/sda8 $ sudo mv /home/akhromov /mnt/tmp
  3. Отредактировать /etc/fstab
    Для этого запустить редактор

    $ sudo nano /etc/fstab
    и добавить в fstab следующие строчки:

    # Монтирование каталога /home
    /dev/sda8 /home ext4 defaults 1 2

  4. Перезагрузиться
    Если при старте Gnome появляется сообщение типа
    could not update ICEauthority file /home/tip/.ICEauthority
    то нужно поправить права доступа к корневому каталогу пользователя:
    $ chown akhromov:akhromov /home/akhromov
  5. Удалить старые данные
    Если все работает нормально, то через пару дней можно удалить старый home, сохраненный в каталоге /mnt/tmp:

    $ cd /mnt $ sudo rm -r tmp

Если нет подходящей темы, открывайте новую.