Для настройки и компиляции GNU/Linux Embedded под ARM процессор
потребуется скачать с сайта http://arm.cirrus.com/ Cirrus Logic
EDB93xx Development Kit:
arm-elf_gcc-3.2.1-full.tar.bz2
arm-linux-gcc-4.1.1-920t.tar.bz2
linux_1-0-0-src.tar.bz2
пакеты для построения системы.
Браузер взять здесь http://www.konqueror.org/embedded/:
konqueror-embedded-snapshot-20030705.tar.gz
UTF8 *.qpf шрифт - FreeSansFont_20031008_all.tgz
Вариантов внедрения Konq/Emb два - вручную и автоматически. Если
вручную, то потом будет нужно все необходимые файлы скопировать в
целевую систему. Если автоматически, то система соберётся практически
сама.
/*-----------Построение Linux Embedded--------------------*/
перейти в корневой каталог
# cd /
скопировать туда тулчейн (toolchain) из места, где лежат скачанные из
инета архивы
# cp <...>/arm-elf_gcc-3.2.1-full.tar.bz2 /
# cp <...>/arm-linux-gcc-4.1.1-920t.tar.bz2 /
и распаковать это дело
# tar jxvf arm-elf_gcc-3.2.1-full.tar.bz2
# tar jxvf arm-linux-gcc-4.1.1-920t.tar.bz2
переместить кросс-компилятор в нужную дерикторию, иначе оно работать
не будет
# mv 4.1.1-920t/ /usr/local/arm/
сделать себе какой-нибудь рабочий каталог и перейти туда
# mkdir /home/user/work
# cd /home/user/work
скопировать туда Buildroot целевой системы
# cp <...>/linux_1-0-0-src.tar.bz2 ./
и разархивировать здесь же
# tar jxvf linux_1-0-0-src.tar.bz2
если есть уже скачанные пакеты, то создать каталог, куда будут
положены пакеты, необходимые для построения системы
# mkdir linux-crater_1-0-0/dl
и скопировать туда эти пакеты
# cp <...>/dl/* /home/user/work/linux-crater_1-0-0/dl/
в противном случае эти пакеты будут автоматически загружены по сети.
Для этого должен быть настроен инет.
Теперь можно приступить к построению системы
# cd linux-crater_1-0-0
определить путь к тулчейну
# export PATH=/usr/local/arm/4.1.1-920t/bin/:$PATH
сконфигурировть требуемую систему, для этого могут понадобиться (если
они не установлены) пакеты ncurses(curses), bison, flex.
# make menuconfig
тут необходимо выбрать платформу 9312
опционально здесь так же можно добавить размер ramdisk'a (мах 32768) и
кол-во inod'ов (2048), для того, чтобы в дальнейшем можно было
добавлять файлы непосредственно в образ ramdisk'a
сохранить конфигурацию.
/* опционально
//---добавить в OPIE например игрушку MineSweeper
в /home/user/work/linux-crater_1-0-0/packages/opie.config - добавить
MINESWEEP
в /home/user/work/linux-crater_1-0-0/packages/opie.mk - добавить к "...
$(TARGET_STRIP)..." и к "...cp-..." - minesweep
$(TARGET_STRIP) minesweep advancedfm kbill opie-eye \
opieplayer qpe sysinfo drawpad networksettings \
opie-eye_slave opie-sheet opierec \
ubrowser addressbook opie-console \
opie-update-symlinks patience sound; \
cp -dpf minesweep advancedfm kbill opie-eye opie-sh-howto.sh \
opieplayer qpe sysinfo drawpad
networksettings \
opie-eye_slave opie-sheet opierec qpe-
reorgfiles \
ubrowser addressbook getprofile opie-
console \
opie-reorgfiles opie-update-symlinks
patience sound \
$(TARGET_DIR)/opt/QtPalmtop/bin/ \
из /home/user/work/linux-crater_1-0-0/dl/opie-1.2.2.tar.bz2
скопировать в /home/user/work/linux-crater_1-0-0/packages/opie-base/
opt/QtPalmtop/apps/Games файл minesweep.desktop
из /home/user/work/linux-crater_1-0-0/dl/opie-1.2.2.tar.bz2
скопировать в /home/user/work/linux-crater_1-0-0/packages/opie-base/
opt/QtPalmtop/pics/ каталог minesweep/
//---назначить вместо динамического статический IP-адрес
отредактировать файл /home/user/work/linux-crater_1-0-0/packages/
rootfs/generic/target_skeleton/etc/rc.sysinit, в котором
закомментировать
# if [ "x`grep ip= /proc/cmdline`" = "x" ]
# then
# udhcpc -i eth0 -b -p /var/run/udhcpc.eth0.pid >/dev/null 2>&1
# fi
и вставить после этого
ifconfig eth0 192.168.10.10 up
//---добавить запуск по загрузке системы своей проги
в том же файле rc.sysinit дописать в конце строку
programm >/null &
при этом свою прогу положить потом в целевую систему в каталог /sbin и
присвоить ей атрибуты
# chmod a+x programm
//---тарировка тачскрина
если имеется несколько однотипно подключеных девайсов, имеет смысл
провести тарировку сенсорной панели на одном девайсе, а потом списать
оттуда файл /etc/pointercal и скопировать его в /home/user/work/linux-
crater_1-0-0/packages/rootfs/generic/target_skeleton/etc/pointercal
*/
Теперь надо собрать образ системы.
(тут возможны три варианта.
Первый - ставить браузер вручную. Сейчас просто запустить мэйк и потом
скомпилировав Konq/Emd скопировать его и другие необходимые файлы в
готовую систему.
Второй - ставить браузер автоматически. Сейчас перейти к компиляции
Konq/Emd, настроить там пути для инсталляции непосредственно в образ
собираемой системы, а так же шрифтов, а потом вернуться к этой точке.
Третий - вообще не ставить браузер и просто выполнить мэйк)
# make
можно пойти покурить в районе минут 40-60, получили в images/9312 три
файла: ramdisk.gz, zImage, redboot.bin
На этом сборка системы закончена.
/*--------------------Как поставить в систему веб браузер konqueror
embedded:---------------------*/
скачать из инета архив konqueror-embedded-snapshot-20030705.tar.gz
скопировать его в домашнюю директорию
# cp <...>/konqueror-embedded-snapshot-20030705.tar.gz /home/user/work
разархивировать его
# tar zxvf konqueror-embedded-snapshot-20030705.tar.gz
перейти в распакованный каталог
# cd konqueror-embedded-snapshot-20030705
установить переменные окружения
# export PATH=/usr/local/arm/4.1.1-920t/bin:$PATH
# export QTDIR=/home/user/work/linux-crater_1-0-0/build/qt-2.3.10
# export PATH=$QTDIR/bin:$PATH
# export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
# export QPEDIR=${QTDIR}
# export QPEINC=${QTDIR}/include
# export QPELIB=${QTDIR}/lib
# export QTINC=${QTDIR}/include
# export QTLIB=${QTDIR}/lib
можно создать текстовый файл, обозвать его например env.sh такого
содержания:
#! /bin/bash
export PATH=/usr/local/arm/4.1.1-920t/bin:$PATH
export QTDIR=/home/user/work/linux-crater_1-0-0/build/qt-2.3.10
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QPEDIR=${QTDIR}
export QPEINC=${QTDIR}/include
export QPELIB=${QTDIR}/lib
export QTINC=${QTDIR}/include
export QTLIB=${QTDIR}/lib
и запускать его потом командой (обязательно с точкой с пробелом
впереди)
# . ./env.sh
теперь надо сконфигурировать построение пакета
# CC=arm-linux-gcc CXX=arm-linux-g++ CXXFLAGS=-ldl ./configure --
target=arm-linux --host=i386-gnu --enable-embedded --enable-qt-
embedded --with-extra-libs=/home/user/work/linux-crater_1-0-0/build/
root/lib --with-extra-includes=/home/user/work/linux-crater_1-0-0/host/
include:/home/user/work/linux-crater_1-0-0/build/qt-2.3.10/include --
with-qt-dir=/home/user/work/linux-crater_1-0-0/build/qt-2.3.10 --with-
qt-include=/home/user/work/linux-crater_1-0-0/build/qt-2.3.10/include
--with-qt-libraries=/home/user/work/linux-crater_1-0-0/build/qt-2.3.10/
lib --without-ssl --enable-mt --prefix=<ROOT> --enable-large-icons
или опять же вбить эту команду в файл, например conf.sh, который
выполнить командой
# . ./conf.sh
(Вручную)
Если внедрение браузера в систему делать вручную, то можно вообще не
указывать префикс, тогда понадобится скопировать необходимые файлы как
будет указано ниже. Или же в ключ --prefix=<...> нужно вбить корневой
каталог целевой системы, куда будет инсталлироваться браузер.
Например, это может быть путь к предварительно расжатому и
смонтированному рамдиску, допустим --prefix=/mnt/cf, если потом
копировать файлы вручную;
(Автоматически)
в ключ --prefix=<...> нужно вбить путь к корневому каталогу в crater
buildroot'e - тогда это будет --prefix=/home/user/work/linux-
crater_1-0-0/build/root.
запустить компиляцию
# make
тут будет вываливаться тонны ошибок, которые надо пофиксить, поудаляв
в исходниках точки с запятой, и запуская мэйк снова.
(может быть потребуется в src/Makefile убрать в строке "all_libraries
= бла-бла-бла..." ключ " -L${exec_prefix}/lib ", иначе оно лезло не в
те библтотеки, почему так случалось не разбирался.
кроме этого записать в /usr/lib/libjpeg* нужные библиотеки от
тулчейна, предварительно сохранив куда-нить системные, с тем, чтобы
потом вернуть их на старое место)
когда компиляция наконец-то закончится успешно, выполнить
# make install
(Автоматически)
,который установит браузер и другие нужные ему файлы в корневой
каталог, заданный ключом --prefix.
(Вручную)
или если --prefix=<ROOT> не был указан, то надо ручками скопировать
следующие файлы (которые получились в результате компиляции) в целевую
систему (где <ROOT> - корень целевой системы):
<ROOT>/opt/QtPalmtop/apps/Applications/konqueror.desktop
<ROOT>/opt/QtPalmtop/bin/arm-linux-konqueror
<ROOT>/opt/QtPalmtop/pics/konqueror.png
<ROOT>/opt/QtPalmtop/share/apps/khtml/css/html4.css
<ROOT>/opt/QtPalmtop/share/apps/konq-embed/actions/big/
<ROOT>/opt/QtPalmtop/share/apps/kssl/caroot/ca-bundle.crt
<ROOT>/opt/QtPalmtop/share/config/charsets
переименовать исполняемый файл
# mv <ROOT>/opt/QtPalmtop/bin/arm-linux-konqueror <ROOT>/opt/QtPalmtop/
bin/konqueror
//---Добавить пути к KDE
(Вручную)
в файле <ROOT>/sbin/start-opie добавить после export OPIEDIR=...
строку
export KDEDIR=$OPIEDIR
(Автоматически)
в файле /home/user/work/linux-crater_1-0-0/packages/rootfs/generic/
target_skeleton/sbin/start-opie добавить после export OPIEDIR=...
строку
export KDEDIR=$OPIEDIR
//---Добавить UTF8 шрифт
(Вручную)
Для отображения русских букв (в данном случае только UTF8) надо из
архива FreeSansFont_20031008_all.tgz скопировать шрифты без буквы "t"
в названии в каталог <ROOT>/usr/qt/lib/fonts/
(Автоматически)
из архива FreeSansFont_20031008_all.tgz скопировать шрифты без буквы
"t" в названии в каталог /home/user/work/linux-crater_1-0-0/build/
qt-2.310/lib/fonts
в файле /home/user/work/linux-crater_1-0-0/packages/qt.mk добавить
строку копирования шрифтов, так же как и *fixed*, только *freesans*
Если всё делалось автоматически, то надо перейти в crater и там
запустить мэйк. Браузер Konq/Emb будет встроен в систему аж бегом.
Если всё копировалось вручную, то и всё, типа браузер установился и
можно запускаться.
//---Сохранить закладку странички
В запущеной системе набрать адрес страницы и в меню сохранить её.
Скопировать в систему разработки файл /.kde/share/qpps/konq-embed/
bookmarks.xml
В целевой системе добавить этот файл с полным путём в образ рамдиска.
/*--------------Редактирование образа ramdisk'а--------------*/
создать каталог куда будет монтироваться образ
# mkdir /mnt/cf
скопировать в /mnt из crater/images/<платформа>/ramdisk.gz упакованный
образ диска и распаковать его
# gunzip ramdisk.gz
замаунтитить его на каталог
# mount -o loop ramdisk /mnt/cf
Теперь можно копировать и редактировать файлы. Отредактировать /etc/
rc.sysinit на предмет статического айпишника и запуска
пользовательской проги, скопировать на диск пользовательскую прогу,
файлы для браузера.
Если при сборке не был явно указан объём рамдиска, то он делается
минимально возможным, и дописать новых файлов в существующий рамдиск
не удастся. Только удаление и редактирование существующих.
После этого размонтировать диск
# umount ramdisk
сжать его обратно
# gzip -9 ramdisk
Другой вариант состоит в том, что можно сначала построить систему,
затем перейти в каталог crater/build/root, там отредактировать
необходимые файлы, скопировать в этот каталог что нужно, и потом опять
запустить crater/make (или выполнить # genext2fs -d build/root -U -b
32768 images/9312/ramdisk), который и создаст новый crater/images/
<платформа>/ramdisk.gz
/*-----------------Калибровка сенсорной панели------------------*/
Подключить USB клавиатуру. Загрузить систему в рабочем режиме,
переключиться во второй терминал Ctrl+Alt+F2. Запустить ts_calibrate,
откалиброваться. Переключиться в первый терминал Ctrl+Alt+F1.
(С) Edw@rd