tc@box:~$ cat opt/eth0.sh
tc@box:~$ ifconfig- покажет текущее состояние eth0 интерфейса
tc@box:~$ ping 8.8.8.8- если все настройки верны то начнется обмен пакетами
tc@box:~$ filetool.sh -b(если спросит то укажите путь /sda1/tce где будет находится mydata.tgz)
Ниже приведены ссылки на базе которых родился данный материал.
Из WBAR запускаем APP Browser и находим нижеперечисленые модули.
Из WBAR запускаем Terminal и загружаем необходимые модули командой:
tc@box:~$ tce-load -wi app_name.tcz
загружать модули предпочтительней из Terminal так как при возникновении ошибок будет отображена причина!
В Terminal для вызова предыдущей команды нажмите на клавиатуре клавишу стрелку вверх, для скорости набора команд и путей пользуйтесь кнопкой tab (например пишите tce-l нажимаете tab получаете tce-load)
Для удобства дальнейшей работы, первым модулем, рекомендую установить браузер FireFox и открыть в нем данный материал, копируйте из браузера команды выделенные синим (клавишами "CTRL" + "С") и вставляйте в Terminal просто нажав на колесико на мышке
tc@box:~$ tce-load -wi firefox.tcz
Нам потребуются следующие модули:
mc.tcz - файловый менеджер
tar.tcz - новая версия архиватора для работы с "xz" архивами и не только
kmaps.tcz - надо почитать что это
compiletc.tcz - набор необходимых библиотек и инструментов для компиляции
perl5.tcz - язык програмирования
ncurses-dev.tcz - набор библиотек используемых menuconfig
perl_xml_parser.tcz - необходимость непроверенна
bc.tcz - требуется в ходе выполнения компиляции ядра
bash.tcz - требуется для создания bzImage на финальной стадии компиляции ядра
Для удобства работы запускаем два окна Terminal (для новичков), а для бывалых достаточно одного Terminal с командной строкой :-)
В одном работаем с командной строкой
В другом работаем с файлами и папка при помощи mc для наглядности! запускаем mc от имени суперпользователя root командой - sudo mc
tc@box:~$ sudo mc
В ходе ремастеринга требуется заменить папку с загружаемыми модулями старого ядра на папку с загружаемыми модулями нового ядра: /lib/modules/
В Первой Части подготовим структуру папок для новых модулей вновь скомпилированного Ядра, взяв за основу существующую из core.gz
tc@box:~$ sudo mkdir /tmp/extract
tc@box:~$ cp /mnt/sda1/boot/core.gz /tmp
tc@box:~$ cd /tmp/extract
tc@box:/tmp/extract$ zcat /tmp/core.gz | sudo cpio -i -H newc -d
tc@box:~$ sudo mkdir /usr/src
tc@box:~$ sudo chmod -R 777 /usr/src
tc@box:~$ cd /usr/src
tc@box:/usr/src$ wget ftp://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.tar.xz tc@box:/usr/src$ wget ftp://www.kernel.org/pub/linux/kernel/projects/rt/3.14/patch-3.14.0-rt1.patch.gz tc@box:/usr/src$ wget http://www.tinycorelinux.net/5.x/x86/release/src/kernel/config-3.8.13-tinycore
если какие-то проблемы поиграйтесь ftp://www.kernel ftp://ftp.kernel ftp://kernel http://www.kernel
Ссылки действительны на момент написания статьи - для загрузки актуальных версий воспользуйтесь браузером
www.kernel.org
напротив строки stable 3.14.x прочтите изменения changelog в текущей версии x
www.kernel.org/pub/linux/kernel/projects/rt/3.14/ - посмотрите к какой версии есть rt patch, ранние версии лежат в папке older
www.kernel.org/pub/linux/kernel/v3.x/ - качайте именно ту версию ядра к которой есть rt patch
www.tinycorelinux.net/5.x/x86/release/src/kernel/ - скачиваем актуальный config к текущему ядру tinycore
tc@box:/usr/src$ sudo tar -xvf linux-3.14.tar.xz
tc@box:/usr/src$ cd /usr/src/linux-3.14
tc@box:/usr/src/linux-3.14$ sudo zcat ../patch-3.14.0-rt1.patch.gz | sudo patch -p1
tc@box:/usr/src/linux-3.14$ cp /usr/src/config-3.8.13-tinycore /usr/src/linux-3.14/.config
Приступаем к конфигурированию того, как и с чем будет работать новое ядро
tc@box:/usr/src/linux-3.14$ sudo make oldconfig
- запускаем процесс создания конфигурационного файла для нового ядра на базе конфигурационного файла от старого ядра.
отвечаем на все вопросы Y-использовать N - не использовать M - создать в виде подгружаемого модуля (рекомендую для всех используемых модулей где есть возможность ставить M)
В одном из пунктов выберите пункт Fully Preemptible Kernel (RT)
tc@box:/usr/src/linux-3.14$ sudo make menuconfig
- запускается графическая оболочка для процесса внесения изменения в конфигурационный файл ".config" для нового ядра. После завершения внесения изменений обязательно сохраните.
Если впервые сталкиваетесь с конфигурирование ядра то пока оставьте все по умолчанию, но после первого удачного запуска готовой системы обязательно вернитесь к этому пункту со знанием дела!
Вдумчивый процесс с прочтением описательной части что означает тот или иной параметр займет около 3 часов!
Определитесь 32bit или 64bit ядро вам нужно,
General setup - оставил по умолчанию,
в Processor type включите многоядерность процесора SMP, укажите максимальное количество ядер NR_CPUS, выберите ваше семейство процессора Processor Family, поддержку оперативной памяти больше 4Gb High Memory Support 64Gb,включите RT в Preemption Mode - Fully Preemption Kernel,
Power management and ACPI - CPU frequency sacling - CPUFreq governor - ondemand энергосбережение, в ACPI можно отключить все кроме управления кнопкой PWR,
BUS Optins - Pci Express ASPM control
Networking Options - большой вопрос нужен ли QoS, GVRP VLAN - врятли кому пригодится,
Device Drivers - отдельная тема: отключите все неиспользуемые вами устройства, но будте аккуратны, например определенная опция SCSI нужна для монтирования USB Flash Drive, Squashfs - нужна для работы всей структуры TinyCoreLinux, проверьте какие драйвера для сетевого адаптера и звуковых устройств вам нужны
В качестве примера выложен .config от данного ознакомительного труда
tc@box:/usr/src/linux-3.14$ sudo make bzImage
- запускаем процесс компиляции (создания) нового ядра согласно настройкам файла ".config" (на процессоре 2GHz примерно 20 минут)
если система многоядерная то добавьте -jx где x количество ядер +1, для друхядерного процессора:
tc@box:/usr/src/linux-3.14$ sudo make -j3 bzImage
- существенно сократит время сборки ядра
tc@box:/usr/src/linux-3.14$ sudo make modules
- запускаем процесс компиляции (создания) загружаемых модулей
tc@box:/usr/src/linux-3.14$ sudo make INSTALL_MOD_PATH=/tmp/extract modules_install firmware_install
- процесс копирования загружаемых модулей в папку для ремастеринга core.gz (добавляет в /tmp/extract/lib/modules/ загружаемые модули для нового ядра )
Проверяем наличие новых модулей 3.14-tinycore в папке /tmp/extract/lib/modules (для удобства пользуем mc)
tc@box:~$ sudo mkdir /tmp/extract/usr/local/lib/modules/3.14.0-rt1-tinycore tc@box:~$ sudo mkdir /tmp/extract/usr/local/lib/modules/3.14.0-rt1-tinycore/kernel tc@box:~$ sudo mkdir /usr/local/lib/modules/3.14.0-rt1-tinycore tc@box:~$ sudo mkdir /usr/local/lib/modules/3.14.0-rt1-tinycore/kernel
tc@box:~$ cd /tmp/extract/lib/modules/3.14.0-rt1-tinycore
tc@box:/tmp/extract/lib/modules/3.14.0-rt1-tinycore$ sudo ln -s /usr/local/lib/modules/3.14.0-rt1-tinycore/kernel kernel.tclocal
cd /tmp/extract/lib/modules/3.8.13-tinycore ls –l drwxr-xr-x root root kernel lrwxrwxrwx root root kernel.tclocal cd /tmp/extract/lib/modules/3.14.0-rt1-tinycore ls –l drwxr-xr-x root root kernel lrwxrwxrwx root root kernel.tclocal cd /lib/modules/3.8.13-tinycore ls –l drwxr-xr-x root root kernel lrwxrwxrwx root root kernel.tclocal cd /usr/local/lib/modules/3.8.13-tinycore ls –l drwxr-xr-x root root kernel/ cd /usr/local/lib/modules/3.14.0-rt1-tinycore ls –l drwxr-xr-x root root kernel/ cd /tmp/extract/usr/local/lib/modules/3.8.13-tinycore ls –l drwxr-xr-x root root kernel/ cd /tmp/extract/usr/local/lib/modules/3.14.0-rt1-tinycore ls –l drwxr-xr-x root root kernel/
Переходим в папку /tmp/extract
tc@box:~$ cd /tmp/extract
Запаковываем новый мастер newcore.gz
tc@box:/tmp/extract$ sudo find | sudo cpio -o -H newc | gzip -2 > ../newcore.gz
Проверяем наличие файла newcore.gz в папке /tmp (для удобства пользуем mc)
Копируем bzImage и newcore.gz на загрузочную USB Flash Drive (для удобства пользуем mc)
файл bzImage из папки /usr/src/linux-3.14/arch/x86/boot/bzImage в папку /mnt/sda1/boot
файл newcore.gz из папки /tmp в папку /mnt/sda1/boot
Правим файл меню загрузки isolinux.cfg в папке /mnt/sda1/boot/isolinux (для удобства пользуем mc)
Пример кусочка содержимого файла isolinux.cfg для загрузки старого (если что не так то можно вернуться к рабочему ядру) и нового (для проверки работоспособности) ядра:
LABEL tc MENU LABEL Boot TinyCore New 3.14 TEXT HELP Boot TinyCore with Embedded X/GUI extensions. Boot media is removable. Use TAB to edit options for specific needs. ENDTEXT KERNEL /boot/bzImage INITRD /boot/newcore.gz APPEND loglevel=3 cde waitusb=5 LABEL tcw MENU LABEL Boot TinyCore Old 3.8 TEXT HELP Boot TinyCore with Embedded X/GUI extensions, if using a slow device. Boot media is removable. Use TAB to edit options for specific needs. ENDTEXT KERNEL /boot/vmlinuz INITRD /boot/core.gz APPEND loglevel=3 cde waitusb=5
В строчке APPEND находятся параметры запуска ядра
waitusb=5 - время в секундах ожидания usb успройств, для быстрых 3 для медленых 5
clocksource=hpet - выбираем timer hpet или tsc
Сохраняем изменения в файле isolinux.cfg и перегружаем систему!
Для вывода звука будем использовать ALSA - Advanced Linux Sound Architecture
Потребуется создать модуль с драйверами звуковых устройств для нового недавно созданного ядра 3.14.0-rt1
Нам понадобится набор инструментов squashfs-tools (на момент написания данного материала - 4 версия)
tc@box:~$ tce-load -wi squashfs-tools-4.x.tcz
tc@box:~$ tce-load -w alsa-modules-3.8.13-tinycore.tcz
tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore
tc@box:~$ mv /mnt/sda1/tce/optinal/alsa-modules-3.8.13-tinycore.tcz /tmp
tc@box:~$ cd /tmp
tc@box:/tmp$ unsquashfs -d alsa-modules-3.8.13 alsa-modules-3.8.13-tinycore.tcz
При помощи MC ознакомьтесь со структурой дерева каталогов в папке /tmp/alsa-modules-3.8.13 нам нужно ее повторить для нашего ядра 3.14.0-rt1
Возможно есть простой способ, например переименовать папку 3.8.13 в 3.14.0-rt1 но опишу путь по которому создавал сам
tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore/usr tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore/usr/local tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore/usr/local/lib tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore/usr/local/lib/modules tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore/usr/local/lib/modules/3.14.0-rt1-tinycore tc@box:~$ sudo mkdir /tmp/alsa-modules-3.14.0-rt1-tinycore/usr/local/lib/modules/3.14.0-rt1-tinycore/kernel
Напоминаю что команды в терминале не нужно набирать все время заново, достаточно вызвать предыдущую, нажав в терминале клавишу на клавиатуре стрелка вверх
tc@box:~$ mv /tmp/extract/lib/modules/3.14.0-rt1-tinycore/kernel/sound /tmp/alsa-modules-3.14.0-rt1-tinycore/usr/local/lib/modules/3.14.0-rt1-tinycore/kernel/
tc@box:~$ cd /tmp
tc@box:/tmp$ mksquashfs alsa-modules-3.14.0-rt1-tinycore alsa-modules-3.14.0-rt1-tinycore.tcz
tc@box:/tmp$ sudo bash tc@box:/tmp# md5sum alsa-modules-3.14.0-rt1-tinycore.tcz > alsa-modules-3.14.0-rt1-tinycore.tcz.md5.txt tc@box:/tmp# exit
tc@box:/tmp$ mv /tmp/alsa-modules-3.14.0-rt1-tinycore.tcz /mnt/sda1/tce/optional tc@box:/tmp$ mv /tmp/alsa-modules-3.14.0-rt1-tinycore.tcz.md5.txt /mnt/sda1/tce/optional
ALSA-Modules с новыми звуковыми драйверами создан возвращаемся - Создание нового мастера newcore.gz
tc@box:~$ tce-load -wi alsa.tcz
tc@box:~$ alsamixer
В появившемся окне вы увидите ваше звуковое устройство
Проверьте отключен ли MUTE - под звуковыми градусниками должны отображаться цифры 00, если нет то нажмите на клавиатуре кнопку "m"
Соберем из исходников собственный MPD выбрав требуемый нами функционал.
tc@box:~$ tce-load -wi glib2.tcz tc@box:~$ tce-load -wi glib2-dev.tcz tc@box:~$ tce-load -wi glibmm.tcz tc@box:~$ tce-load -wi automake.tcz
tc@box:~$ cd /tmp
RT Patch for Music Player Daemon (MPD)
tc@box:/tmp$ wget http://www.musicpd.org/download/mpd/0.18/mpd-0.18.9.tar.xz
tc@box:/tmp$ tar -xf mpd-0.18.9.tar.xz
tc@box:/tmp$ cd /tmp/mpd-0.18.9
tc@box:/tmp/mpd-0.18.9$ cat ../mpd-0.18.9-rtopt20140327.patch | sudo patch -p1
tc@box:/tmp/mpd-0.18.9$ cat INSTALL
tc@box:/tmp/mpd-0.18.9$ tce-load -wi alsa-dev.tcz tc@box:/tmp/mpd-0.18.9$ tce-load -wi sqlite3-dev.tcz tc@box:/tmp/mpd-0.18.9$ tce-load -wi libid3tag-dev.tcz tc@box:/tmp/mpd-0.18.9$ tce-load -wi flac-dev.tcz tc@box:/tmp/mpd-0.18.9$ tce-load -wi curl-dev.tcz
tc@box:/tmp/mpd-0.18.9$ sudo ./autogen.sh
tc@box:/tmp/mpd-0.18.9$ sudo ./configure --enable-rtopt --disable-oss --disable-fifo --disable-pulse --disable-jack --disable-ipv6 --disable-inotify --disable-mms --disable-recorder-output --disable-httpd-output --disable-libmpdclient --disable-bzip2 --disable-opus
tc@box:/tmp/mpd-0.18.9$ tce-load -wi mpg123-dev.tcz
########### MPD CONFIGURATION ############ Archive support: (-bzip2) (-ISO9660) (-ZIP) Client support: (-IPv6) (+TCP) (+UNIX Domain Sockets) File format support: (-AAC) (-AdPlug) (-C64 SID) (-FFMPEG) (+FLAC) (-FluidSynth) (-GME) (-libsndfile) (-MikMod) (-MODPLUG) (-MAD) (+MPG123) (-Musepack) (-Opus) (-OggTremor) (-OggVorbis) (-WAVE) (-WavPack) (-WildMidi) Other features: (+libsamplerate) (-libmpdclient) (-inotify) (+SQLite) (+rtopt) Metadata support: (+ID3) Playback support: (+ALSA) (-FIFO) (-File Recorder) (-HTTP Daemon) (-JACK) (-libao) (-OSS) (-OpenAL) (-OS X) (-Pipeline) (-PulseAudio) (-ROAR) (-SHOUTcast) (-Solaris) (-WinMM) Streaming support: (-CDIO_PARANOIA) (+CURL) (-Despotify) (-Soundcloud) (-MMS) ##########################################
tc@box:/tmp/mpd-0.18.9$ sudo make tc@box:/tmp/mpd-0.18.9$ sudo make install
tc@box:~$ sudo strip --strip-all /usr/local/bin/mpd
tc@box:~$ sudo mkdir /home/tc/mpd tc@box:~$ sudo mkdir /home/tc/music tc@box:~$ sudo mkdir /home/tc/playlists tc@box:~$ sudo mkdir /home/tc/log
tc@box:~$ sudo mv /usr/local/bin/mpd /home/tc/mpd/
tc@box:~$ sudo mv /usr/local/share/doc/mpd/mpdconf.example /home/tc/mpd/mpdrt.conf
music_directory "/home/tc/music" playlist_directory "/home/tc/playlists" db_file "/home/tc/mpd/tag_cache" log_file "/home/tc/log/mpd.log" pid_file "/home/tc/mpd/pid" state_file "/home/tc/mpd/state" ##################### General music daemon options ############################ user "root" port "6600" log_level "default" auto_update "no" #################### Audio Output ############################################# audio_output { type "alsa" name "USB DAC" device "hw:0,0" # optional # format "96000:24:2" priority "FIFO:80" auto_resample "no" # no - MPD, yes - alsa# } #samplerate_converter "internal" #################### Volume control mixer ##################################### mixer_type "disabled" #################### MPD Internal Buffering ################################### audio_buffer_size "10240" buffer_before_play "30%" #################### Character Encoding ####################################### filesystem_charset "UTF-8" id3v1_encoding "UTF-8" ############################################################################### follow_outside_symlinks "yes" follow_inside_symlinks "yes" bind_to_address "0.0.0.0" realtime_option { memlock "yes" stack_reserve "1024" heap_reserve "10240" main_priority "OTHER:48" player_priority "FIFO:50" decoder_priority "FIFO:49" update_priority "OTHER:0" } ###############################################################################
tc@box:~$ cd /home/tc/music tc@box:~/music$ sudo ln -s /mnt/sda1/music Tiny
tc@box:~$ sudo /home/tc/mpd/mpd /home/tc/mpd/mpdrt.conf
#!/bin/sh # put other system startup commands here /opt/eth0.sh & sudo /home/tc/mpd/mpd /home/tc/mpd/mpdrt.conf
Для удаленного доступа к нашим файлам и папкам воспользуемся SAMBA.
tc@box:~$ tce-load -wi samba3.tcz
#======================= Global Settings ===================================== [global] # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH workgroup = MYGROUP # server string is the equivalent of the NT Description field server string = Samba Server # Security mode. Defines in which mode Samba will operate. Possible # values are share, user, server, domain and ads. Most people will want # user level security. See the Samba-HOWTO-Collection for details. security = user # If you want to automatically load your printer list rather # than setting them up individually then you'll need this ; load printers = yes # this tells Samba to use a separate log file for each machine # that connects log file = /usr/local/samba/var/log.%m # Put a capping on the size of the log files (in Kb). max log size = 50 # DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names # via DNS nslookups. The default is NO. dns proxy = no #============================ Share Definitions ============================== ;[homes] ; comment = Home Directories ; browseable = no ; writable = yes # NOTE: If you have a BSD-style print system there is no need to # specifically define each individual printer ;[printers] ; comment = All Printers ; path = /usr/spool/samba ; browseable = no # Set public = yes to allow user 'guest account' to print ; guest ok = no ; writable = no ; printable = yes # A publicly accessible directory, read/write to all users. [public] path = /mnt/sda1/music public = yes ; only guest = yes writable = yes printable = no
tc@box:~$ sudo smbpasswd -a tc
tc@box:~$ sudo /usr/local/etc/init.d/samba start
opt home opt/eth0.sh usr/local/etc/samba
#!/bin/sh # put other system startup commands here /opt/eth0.sh & sudo /home/tc/mpd/mpd /home/tc/mpd/mpdrt.conf sudo /usr/local/etc/init.d/samba start
c:/>net use (показывает открытые сетевые сессии) c:/>net use * /delete (закрывает все сетевые сессии)
RT Patch for Music Player Daemon (MPD)
Успехов в этом интересном, увлекательном и полезном деле!!!