Сборка КФС (она же rootfs, она же - корневая файловая система).
Когда мы скачивали ptxdist, мы скачивали также директорию с проектами.
Там была одна маленькая проблема:
проекты были немного другой версии
(я писал еще "обращаю внимание, что проекты под версию 1.0.0 !!!")
проекты - это как раз "заготовки" для КФС, т.е. в них нет ни исходников ни результирующих файлов, но есть информация, необходимая для скачивания нужных исходников и сборки всей КФС.
Делаем вот что:
timur-tion@timur-ibm:~/Proj$ ptxdist setup
|
появляется псевдографическое меню, в котором выбираем ProjectSearchPath
PTXdist v1.0.2 Configuration
──────────────────────────────────────────────────────────────────────────────
┌─── Powered by PTXdist - http://www.pengutronix.de/software/ptxdist/ ────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ --- PTXDIST Setup Menu │ │
│ │ Proxies ---> │ │
│ │ Project Searchpath ---> │ │
│ │ Source Directory ---> │ │
│ │ Mirrors ---> │ │
│ │ IPKG Repository ---> │ │
│ │ Java SDK ---> │ │
│ │ --- │ │
│ │ Load an Alternate Configuration File │ │
│ │ Save Configuration to an Alternate File │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > │
└─────────────────────────────────────────────────────────────────────────┘
|
видим там уже написано что-то типа {ptxdist top dir}/projects,выходим из setup-a с сохранением параметров.
Если в ответ на ptxdist setup компьютер ругнулся, значит вы не изменили переменную окружения PATH, для моей машины её надо модифицировать так export PATH=$PATH:/home/timur-tion/Proj/ptxdist/bin:
вводим:
timur-tion@timur-ibm:~/Proj$ ptxdist projects
|
получаем:
ptxdist: searching for projects:
ptxdist: scanning /home/timur-tion/Proj/ptxdist/lib/ptxdist-1.0.2/projects...
---------------------- Available PTXdist Projects: ----------------------------
OSELAS.BSP-Pengutronix-GenericPowerpcGlibc-3
OSELAS.BSP-Pengutronix-GenericArmGlibc-3
OSELAS.BSP-Pengutronix-GenericI586Glibc-3
-------------------------------------------------------------------------------
|
далее клонируем один из существующих проектов:
timur-tion@timur-ibm:~/Proj$ ptxdist clone OSELAS.BSP-Pengutronix-GenericArmGlibc-3 TionPro270_RootFS
ptxdist: scanning /home/timur-tion/Proj/ptxdist/lib/ptxdist-1.0.2/projects...
./
./patches/
./ptxconfig
./projectroot/
./projectroot/etc/
./projectroot/etc/network/
./projectroot/etc/network/interfaces
./rules/
./kernelconfig.native
ptxdist: done.
|
видим результат клонирования:
timur-tion@timur-ibm:~/Proj$ ls
hello linux OSELAS-toolchain1.1.1 ptxdist TionPro270_RootFS u-boot1.3.3
|
(появилась директория TionPro270_RootFS)
заходим в неё, смотрим список файлов, запускаем menuconfig:
timur-tion@timur-ibm:~/Proj$ cd TionPro270_RootFS/
timur-tion@timur-ibm:~/Proj/TionPro270_RootFS$ ls
kernelconfig.native patches projectroot ptxconfig rules
timur-tion@timur-ibm:~/Proj/TionPro270_RootFS$ ptxdist menuconfig
ptxdist: menuconfig...
|
появляется менюшка опять псевдографическая, где мы можем указать, какие компоненты ставить, а какие нет.
──────────────────────────────────────────────────────────────────────────────
┌─── Powered by PTXdist - http://www.pengutronix.de/software/ptxdist/ ────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ --- ------------------------------------ │ │
│ │ Project Name & Version ---> │ │
│ │ --- ------------------------------------ │ │
│ │ PTXdist Config, Architecture ---> │ │
│ │ Cross Compilation Tools ---> │ │
│ │ Host Side Tools ---> │ │
│ │ Debugging Tools ---> │ │
│ │ --- ------------------------------------ │ │
│ │ Image Creation Options ---> │ │
│ │ Root Filesystem ---> │ │
│ └────────────v(+)─────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > │
└─────────────────────────────────────────────────────────────────────────┘
|
-заходим в Image Creation Options, ставим * напротив Generate images/root.jffs2
-в пункте Erase Block Size (NEW) вводим число 262144
-заходим в Ptxdist Config, Architecture
видим:
PTXdist v1.0.2 Configuration
──────────────────────────────────────────────────────────────────────────────
┌──────────────────── PTXdist Config, Architecture ─────────────────────┐
│ Arrow keys navigate the menu. <Enter> selects submenus --->. │
│ Highlighted letters are hotkeys. Pressing <Y> includes, <N> excludes, │
│ <M> modularizes features. Press <Esc><Esc> to exit, <?> for Help, </> │
│ for Search. Legend: [*] built-in [ ] excluded <M> module < > │
│ ┌──────^(-)───────────────────────────────────────────────────────────┐ │
│ │ () Extra CFLAGS (c) │ │
│ │ () Extra CXXFLAGS (c++) │ │
│ │ () Extra LDFLAGS (ld) │ │
│ │ --- Paths & Directories │ │
│ │ (${PTXDIST_WORKSPACE}/local) Prefix for "install" stage │ │
│ │ --- GNU Toolchain Identification String │ │
│ │ (OSELAS.Toolchain-1.1.0) Check for specific toolchain vendor │ │
│ │ (4.1.2) Check for specific gcc version │ │
│ │ (arm-v4t-linux-gnueabi) GNU Target │ │
│ │ (${PTXCONF_GNU_TARGET}-) Compiler Prefix │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────┤
│ <Select> < Exit > < Help > │
└─────────────────────────────────────────────────────────────────────────┘
|
заменяем OSELAS.Toolchain-1.1.0 на ничего
заменяем arm-v4t-linux-gnueabi на arm-xscale-linux-gnu
заменяем 4.1.2 на 4.0.4
выходим из конфига с сохранением параметров.
timur-tion@timur-ibm:~/Proj/TionPro270_RootFS$ ptxdist toolchain /opt/OSELAS.Too
lchain-1.1.1/arm-xscale-linux-gnu/gcc-4.0.4-glibc-2.3.6-kernel-2.6.17/bin/
timur-tion@timur-ibm:~/Proj/TionPro270_RootFS$ ptxdist go
|
начнется процесс (в норме очень долгий и чреватый ошибками)
начал в 18.05, ошибка вылезла в 18.11:
--18:10:24-- http://www.tcpdump.org/release/libpcap-0.9.5.tar.gz
=> `/home/timur-tion/Proj/TionPro270_RootFS/src/libpcap-0.9.5.tar.gz'
Resolving www.tcpdump.org... 209.87.252.214
Connecting to www.tcpdump.org|209.87.252.214|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
18:10:25 ERROR 404: Not Found.
Could not get packet via http!
URL: http://www.tcpdump.org/release/libpcap-0.9.5.tar.gz
make: *** [/home/timur-tion/Proj/TionPro270_RootFS/src/libpcap-0.9.5.tar.gz] Error 255
error: a command in the pipe returned 2, bailing out
|
скачиваем с ftp://64.50.238.52/.1/gentoo/distfiles/libpcap-0.9.5.tar.gz
в /home/timur-tion/Proj/TionPro270_RootFS/src
и снова запускаем ptxdist go
запустили в 18.14, в 18.29 закончилась сборка
install_finish: creating package directory ... ~/Proj/TionPro270_RootFS/images/ut
elnetd/ipkg ~/Proj/TionPro270_RootFS
~/Proj/TionPro270_RootFS
install_finish: packaging ipkg packet ...
Packaged contents of /home/timur-tion/Proj/TionPro270_RootFS/images/utelnetd/ipkg
into /home/timur-tion/Proj/TionPro270_RootFS/images/utelnetd_0.1.9_arm.ipk
done.
Finished target utelnetd.targetinstall
Install 'dot' from graphviz packet if you want to have a nice dependency tree
Finished target dep_tree
timur-tion@timur-ibm:~/Proj/TionPro270_RootFS$
timur-tion@timur-ibm:~/Proj/TionPro270_RootFS$ ptxdist images
timur-tion@timur-ibm:~/Proj/TionPro270_RootFS$ ls images/
bing_1.0.5_arm.ipk gdbserver_6.6_arm.ipk ncurses_5.6_arm.ipk root.jffs2 zlib_1.2.3-ptx4_arm.ipk
busybox_1.4.2_arm.ipk glibc_1.0_arm.ipk netcat_0.7.1_arm.ipk sysfsutils_2.0.0_arm.ipk
coreutils_5.2.1_arm.ipk hotplug_20040329_arm.ipk permissions udev_106_arm.ipk
figlet_222_arm.ipk ipkg.conf rootfs_1.0.0_arm.ipk utelnetd_0.1.9_arm.ipk
|
теперь у нас есть собранное ядро и собранная КФС.
Если мы захотим что-нибудь в КФС добавить то просто заходим в menuconfig, добавляем и дальше как написано - go, images...
а если захотим что-то убрать, то придется делать ptxdist clean, а затем снова компилить пол-часа.
|