<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2929304365727562596</id><updated>2024-09-21T03:02:39.269+03:00</updated><category term="Linux"/><category term="HowTo"/><category term="свободное ПО"/><category term="Debian"/><category term="UNIX"/><category term="программирование"/><category term="разное"/><category term="Mono"/><category term="embedded"/><category term="данные"/><category term="открытое ПО"/><category term="C#"/><category term="Microsoft"/><category term="uClinux"/><category term="корпорация"/><category term="политика"/><category term="C"/><category term="Framework"/><category term="GNU"/><category term="IBM"/><category term="Java"/><category term="Novell"/><category term="ThinkPad"/><category term="XML"/><category term="accounting"/><category term="bluetooth"/><category term="gcc"/><category term="glibc"/><category term="kernel"/><category term="posix"/><category term="жизнь"/><category term="стандарты"/><category term="учет"/><category term="ACPI"/><category term="Audio"/><category term="C++"/><category term="ERP"/><category term="Fun"/><category term="GTK#"/><category term="Glade#"/><category term="Google"/><category term="HTML"/><category term="ILM"/><category term="IPC"/><category term="JDeveloper"/><category term="LAN"/><category term="Locale"/><category term="Middleware"/><category term="Nokia"/><category term="Oracle"/><category term="SuSE"/><category term="VPN"/><category term="WLST"/><category term="WebLogic"/><category term="XGL"/><category term="binutils"/><category term="blogger"/><category term="boost"/><category term="crosstool"/><category term="crypt"/><category term="gprs"/><category term="jython"/><category term="logger"/><category term="patch"/><category term="python"/><category term="smtp"/><category term="toolchain"/><category term="vi"/><category term="безопасность"/><category term="безысходный"/><category term="восстановление"/><category term="конференция"/><category term="проект"/><category term="процессы"/><category term="ресурсы"/><category term="сигналы"/><category term="тест"/><category term="файлы"/><category term="шпаргалка"/><title type='text'>Tuxedo Live</title><subtitle type='html'>[Transactions for Unix, Extended for Distributed Operations lĭv]</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-5882265185671433966</id><published>2012-01-30T16:53:00.002+04:00</published><updated>2012-01-30T23:30:04.841+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="jython"/><category scheme="http://www.blogger.com/atom/ns#" term="Locale"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="smtp"/><category scheme="http://www.blogger.com/atom/ns#" term="WebLogic"/><category scheme="http://www.blogger.com/atom/ns#" term="WLST"/><title type='text'>WLST jython: smtplib ImportError: no module named locale</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;$ cat /etc/redhat-release&lt;br /&gt;
Red Hat Enterprise Linux Server release 5.6 (Tikanga)&lt;br /&gt;
&lt;br /&gt;
Python 2.4.3 (#1, Apr 14 2011, 20:41:59)&lt;br /&gt;
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;import smtplib&lt;br /&gt;
from email.MIMEText import MIMEText&lt;br /&gt;
..&lt;br /&gt;
s.sendmail(&#39;email@email.com&#39;, [&#39;email@email.com&#39;], msg.as_string())&lt;/blockquote&gt;&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;File &quot;/home/user/scripts/script.py&quot;, line 75, in ?&lt;br /&gt;
File &quot;$WL_HOME/common/wlst/modules/jython-modules.jar/Lib/email/Message.py&quot;, line 127, in as_string&lt;br /&gt;
File &quot;$WL_HOME/common/wlst/modules/jython-modules.jar/Lib/email/Generator.py&quot;, line 10, in ?&lt;br /&gt;
ImportError: no module named locale&lt;/blockquote&gt;&lt;br /&gt;
I&#39;ve modified $WL_HOME/common/wlst/modules/jython-modules.jar/Lib/email/Generator.py. Just replaced one line &quot;import locale&quot; with &quot;import java.util.Locale&quot; and now my script works!&lt;/div&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/5882265185671433966/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/5882265185671433966' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/5882265185671433966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/5882265185671433966'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2012/01/jython-smtplib-importerror-no-module.html' title='WLST jython: smtplib ImportError: no module named locale'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-6694558034896494544</id><published>2011-08-11T11:30:00.002+04:00</published><updated>2011-08-24T10:21:40.071+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="JDeveloper"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Middleware"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>JDeveloper - java.lang.UnsatisfiedLinkError libX11.so.6</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;$ uname -a&lt;br /&gt;
Linux localhost.localdomain 2.6.32-71.29.1.el6.x86_64 #1 SMP Mon Jun 27 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
$ cat /etc/redhat-release &lt;br /&gt;
CentOS Linux release 6.0 (Final)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Installation done with instructions on &lt;a href=&quot;http://download.oracle.com/docs/cd/E16162_01/install.1112/e17074/ojdig.htm#BDCEDIAB&quot;&gt;Installation Guide for Oracle JDeveloper&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
But when I run /home/oracle/Middleware/jdeveloper/jdev/bin/jdev&lt;br /&gt;
&lt;br /&gt;
it gives me lines&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;Oracle JDeveloper 11g Release 2 (11.1.2.0.0)&lt;br /&gt;
Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. &lt;br /&gt;
&lt;br /&gt;
Exception in thread &quot;main&quot; java.lang.UnsatisfiedLinkError: /home/oracle/Middleware/jdk160_24/jre/lib/i386/libsplashscreen.so: libX11.so.6: cannot open shared object file: No such file or directory&lt;br /&gt;
at java.lang.ClassLoader$NativeLibrary.load(Native Method)&lt;br /&gt;
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1806)&lt;br /&gt;
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1723)&lt;br /&gt;
at java.lang.Runtime.loadLibrary0(Runtime.java:823)&lt;br /&gt;
at java.lang.System.loadLibrary(System.java:1028)&lt;br /&gt;
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)&lt;br /&gt;
at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;
at java.awt.SplashScreen.getSplashScreen(SplashScreen.java:91)&lt;br /&gt;
at oracle.ide.osgi.boot.OracleIdeLauncher.getSimpleSplashImage(OracleIdeLauncher.java:539)&lt;br /&gt;
at oracle.ide.osgi.boot.OracleIdeLauncher.main(OracleIdeLauncher.java:82)&lt;br /&gt;
at oracle.ide.osgi.boot.JDeveloper.main(JDeveloper.java:14)&lt;/blockquote&gt;&lt;br /&gt;
&lt;b&gt;SOLUTION&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
# rpm --query --whatprovides &#39;libX11.so.6&#39;&lt;br /&gt;
# yum install libX11-1.3-2.el6.i686&lt;br /&gt;
# rpm --query --whatprovides &#39;libXext.so.6&#39;&lt;br /&gt;
# yum install libXext-1.1-3.el6.i686&lt;br /&gt;
# rpm --query --whatprovides &#39;libXtst.so.6&#39; &lt;br /&gt;
# yum install libXtst-1.0.99.2-3.el6.i686&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Done!&lt;/i&gt;&lt;br /&gt;
And here you run JDeveloper $/home/oracle/Middleware/jdeveloper/jdev/bin/jdev&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/6694558034896494544/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/6694558034896494544' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6694558034896494544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6694558034896494544'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2011/08/jdeveloper-javalangunsatisfiedlinkerror.html' title='JDeveloper - java.lang.UnsatisfiedLinkError libX11.so.6'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-7871485965371937861</id><published>2011-05-20T12:47:00.001+04:00</published><updated>2011-05-20T12:47:46.628+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="конференция"/><category scheme="http://www.blogger.com/atom/ns#" term="свободное ПО"/><title type='text'>Мероприятия по СПО и Linux</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;В ближайшее время пройдет два мероприятия по СПО и Linux&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1. Конференция по разработке игр в OC GNU/Linux&lt;/b&gt; &quot;Linux GameDev Conference&quot; пройдет 18-го (или 19-го) июня в Москве на территории ГУ ВШЭ.&lt;br /&gt;
&lt;a href=&quot;http://млуг.рф/go/url=http://mlug.ru/gamedevconf&quot;&gt;Подробнее..&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2. Конференция-семинар по СПО&lt;/b&gt; (PingWin, Mandriva, MLUG)&lt;br /&gt;
&lt;a href=&quot;http://млуг.рф/blogs/meroprijatija/vystuplenie-na-konferenci-s-dokladom.html&quot;&gt;Подробнее..&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Также напоминаю, что мы собираемся &lt;a href=&quot;http://млуг.рф/meroprijatija&quot;&gt;каждую последнюю субботу месяца&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Следите за новостями на сайте Млуг.РФ&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/7871485965371937861/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/7871485965371937861' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/7871485965371937861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/7871485965371937861'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2011/05/linux.html' title='Мероприятия по СПО и Linux'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-6948894633241325884</id><published>2010-11-28T00:14:00.007+03:00</published><updated>2011-05-20T12:48:20.751+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>МЛУГ встреча, 27 ноября 2010</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;Сегодня прошла встреча МЛУГ.&lt;br /&gt;
Во встрече приняли участие 10 человек:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Мороз Олег (qmor)&lt;/li&gt;
&lt;li&gt;Сорокин Максим (maxt)&lt;/li&gt;
&lt;li&gt;Валентин Голубев (vig)&lt;/li&gt;
&lt;li&gt;Шельдешев Сергей (beluga-ice)&lt;/li&gt;
&lt;li&gt;Иноземцев Александр (shikari)&lt;/li&gt;
&lt;li&gt;Курдюков Сергей (xou)&lt;/li&gt;
&lt;li&gt;Шатров Григорий (mister-fog)&lt;/li&gt;
&lt;li&gt;Кабанова Инна (mama-sun)&lt;/li&gt;
&lt;li&gt;Гудо Александр (sanb)&lt;/li&gt;
&lt;li&gt;Андрей Кононов (zloykaban)&lt;/li&gt;
&lt;/ol&gt;У нас был гость из &lt;a href=&quot;http://lug-mgn.ru/&quot;&gt;Магнитогорской группы пользователей Linux&lt;/a&gt;, maxt, который пригласил желающих поучаствовать в &lt;a href=&quot;http://lug-mgn.ru/news/iv-opensource-seminar&quot;&gt;IV магнитогорском семинаре по Open Source&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Во время встречи обсуждались организационные вопросы и подготовка к следующему &lt;b&gt;Linux Install Fest&lt;/b&gt;&#39;у (фестиваль, посвященный установке операционной системе Линукс).  Место и время проведения будет известно в ближайшее время. У нас будет 6 докладчиков и 8 мастер-классов (докладов) по 15-30 минут. Далее вопросы-ответы, неформальное общение и помощь новичкам в установке Linux.&lt;br /&gt;
&lt;br /&gt;
По результатам опроса &lt;b&gt;ежемесячные встречи MLUG&lt;/b&gt; будут проходить в &lt;b&gt;последнюю субботу месяца в 17:00&lt;/b&gt;. Отметьте в календарях ;) Это значит, что следующая встреча пройдет &lt;b&gt;25 декабря в 17:00 в ТЦ Аркадия&lt;/b&gt; в зоне фастфуда на 3ем этаже. &lt;br /&gt;
&lt;br /&gt;
Следите за новостями &lt;a href=&quot;http://млуг.рф/&quot;&gt;млуг.рф&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Кстати, мы ищём спонсоров для проведения мероприятий!&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/6948894633241325884/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/6948894633241325884' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6948894633241325884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6948894633241325884'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2010/11/mlug-27-2010.html' title='МЛУГ встреча, 27 ноября 2010'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-8951058361741947167</id><published>2010-11-09T16:12:00.001+03:00</published><updated>2010-11-09T16:14:08.357+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="разное"/><title type='text'>MLUG - встреча</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;На &lt;b&gt;форуме&lt;/b&gt; MLUG.RU открылся &lt;a href=&quot;http://forum.mlug.ru/viewtopic.php?f=25&amp;amp;t=53&quot;&gt;тред с обсуждением ежемесячных встреч участников MLUG&lt;/a&gt;. Добро пожаловать в обсуждение.&lt;br /&gt;
&lt;br /&gt;
По предварительным результатам опроса встречи будут проходить в &lt;b&gt;последнюю субботу месяца в 16:00&lt;/b&gt;, то есть следующая встреча будет 27 ноября в 16:00 в ТЦ &lt;a href=&quot;http://maps.google.ru/maps?q=%D0%A2%D0%A6+%D0%90%D1%80%D0%BA%D0%B0%D0%B4%D0%B8%D1%8F&amp;hl=ru&quot;&gt;Аркадия&lt;/a&gt; в зоне фастфуда на 3ем этаже.&lt;br /&gt;
Во время встреч как всегда мозговой штурм, поедание еды, распитие напитков и прочее..&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://spreadsheets.google.com/viewform?formkey=dGo2UHFfdndTTE9DN291VGZCa1luOVE6MQ&quot;&gt;Опрос&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/8951058361741947167/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/8951058361741947167' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/8951058361741947167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/8951058361741947167'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2010/11/mlug.html' title='MLUG - встреча'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-1240445394302776555</id><published>2010-03-04T13:34:00.001+03:00</published><updated>2010-03-04T13:35:03.061+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>on emdebian (glibc6-eabi)</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;
There are no packages for &lt;i&gt;Crush&lt;/i&gt; other than for ARM - that does not&lt;br /&gt;
include armel so there cannot be -eabi anything in &lt;i&gt;Crush&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
http://www.emdebian.org/crush/&lt;br /&gt;
Currently only available for ARM&lt;br /&gt;
&lt;br /&gt;
Only &lt;i&gt;Grip&lt;/i&gt; has support for architectures other than ARM (and &lt;i&gt;Grip&lt;/i&gt; has&lt;br /&gt;
replaced ARM support - lenny - with armel support - squeeze and sid.)&lt;br /&gt;
&lt;br /&gt;
http://www.emdebian.org/grip/search.php?arch=arm&amp;distro=lenny&amp;package=coreutils&lt;br /&gt;
http://www.emdebian.org/grip/search.php?arch=armel&amp;distro=squeeze&amp;package=coreutils&lt;br /&gt;
&lt;br /&gt;
Neil Williams&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/1240445394302776555/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/1240445394302776555' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/1240445394302776555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/1240445394302776555'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2010/03/on-emdebian-glibc6-eabi.html' title='on emdebian (glibc6-eabi)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-6522563419402615440</id><published>2009-11-18T21:10:00.004+03:00</published><updated>2009-11-19T13:05:45.827+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Audio"/><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>Как разбить FLAC по CUE</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Первый способ.&lt;br /&gt;Устанавливаем shntool, flac, cuetools:&lt;br /&gt;&lt;blockquote&gt;# aptitude install shntool flac cuetools&lt;/blockquote&gt;&lt;br /&gt;Далее выполняем подобные инструкции:&lt;br /&gt;&lt;blockquote&gt;$ cuebreakpoints CannedWheat.cue | shnsplit -o flac CannedWheat.flac &lt;br /&gt;$ cuetag CannedWheat.cue split-track*.flac &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Второй способ.&lt;br /&gt;Используем скрипт, предложенный Александром: &lt;a href=&quot;http://tuxedo.live.googlepages.com/split2flac.tar&quot;&gt;split2flac&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;$ ./split2flac.sh CannedWheat.flac -cue CannedWheat.cue -o .&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/6522563419402615440/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/6522563419402615440' title='Комментарии: 6'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6522563419402615440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6522563419402615440'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2009/11/flac-cue.html' title='Как разбить FLAC по CUE'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-5102503084916387301</id><published>2009-10-07T23:09:00.004+04:00</published><updated>2009-10-07T23:24:47.695+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="posix"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><category scheme="http://www.blogger.com/atom/ns#" term="стандарты"/><title type='text'>susv4</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;a href=&quot;http://www.opengroup.org/onlinepubs/9699919799/toc.htm&quot;&gt;Обновиться&lt;/a&gt; и &lt;a href=&quot;http://www.opengroup.org/onlinepubs/9699919799/download/susv4.tar.bz2&quot;&gt;скачать&lt;/a&gt;..&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/5102503084916387301/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/5102503084916387301' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/5102503084916387301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/5102503084916387301'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2009/10/susv4.html' title='susv4'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-7478709877593783139</id><published>2009-09-24T17:06:00.005+04:00</published><updated>2009-09-24T17:15:11.278+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="accounting"/><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="ERP"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="корпорация"/><category scheme="http://www.blogger.com/atom/ns#" term="учет"/><title type='text'>Tryton Server ERP на Debian</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Долго мучался с установкой &lt;a href=&quot;http://www.tryton.org/&quot;&gt;Тритона&lt;/a&gt; (&lt;a href=&quot;http://en.wikipedia.org/wiki/Tryton&quot;&gt;wikipedia&lt;/a&gt;)&lt;br /&gt;оказалось всё до ужаса просто&lt;br /&gt;$ less /usr/share/doc/tryton-server/README.Debian&lt;br /&gt;&lt;blockquote&gt;tryton-server for Debian&lt;br /&gt;------------------------&lt;br /&gt;&lt;br /&gt;Tryton in its first generation uses a PostgreSQL database to store data.&lt;br /&gt;You have to setup this database manually. Here is a short explanation&lt;br /&gt;how to achieve this (you need to execute all commands as root):&lt;br /&gt;&lt;br /&gt;  0. Making sure, PostgreSQL is running&lt;br /&gt;&lt;br /&gt;     # /etc/init.d/postgresql* restart&lt;br /&gt;&lt;br /&gt;     Note: Make sure you have setup database password authentication.&lt;br /&gt;     Please refer to the PostgreSQL manual how to do this.&lt;br /&gt;&lt;br /&gt;  1. Creating the database user&lt;br /&gt;&lt;br /&gt;     # su - postgres -c &quot;createuser -q --createdb --no-createrole \&lt;br /&gt;          --no-superuser --pwprompt tryton&quot;&lt;br /&gt;&lt;br /&gt;     You have to enter a password for the future database user, confirm it (to&lt;br /&gt;     be used later in the setup of /etc/trytond.conf as db_password) and finally&lt;br /&gt;     enter the password of the postgres superuser.&lt;br /&gt;&lt;br /&gt;     Note: If you want to run the database as another user than &#39;tryton&#39;, you&lt;br /&gt;     need to replace &#39;tryton&#39; above with the user you want to use instead, and&lt;br /&gt;     you need to adjust &#39;db_user = tryton&#39; in /etc/trytond.conf, too.&lt;br /&gt;&lt;br /&gt;  2. Setting up the server&lt;br /&gt;&lt;br /&gt;     Adjust /etc/trytond.conf to reflect the setup of your system&lt;br /&gt;     and use the database user and password from step 1 for db_user and&lt;br /&gt;     db_password.&lt;br /&gt;&lt;br /&gt;     Also edit db_host and db_port to point to your PostgreSQL database server,&lt;br /&gt;     if not running on localhost and/or on non standard port (5432).&lt;br /&gt;&lt;br /&gt;  3. Restarting trytond&lt;br /&gt;&lt;br /&gt;     # /etc/init.d/trytond restart&lt;br /&gt;&lt;br /&gt;     Note: The following steps can also be performed easily from the Tryton&lt;br /&gt;     Client and are not mandatory to do here.&lt;br /&gt;&lt;br /&gt;  4. Creating the database&lt;br /&gt;&lt;br /&gt;     # su - postgres -c &quot;createdb -q --encoding=UNICODE --owner=tryton tryton&quot;&lt;br /&gt;&lt;br /&gt;     Note: Use your database user for tryton as owner of the database, and enter&lt;br /&gt;     a name for the database (here as default: tryton).&lt;br /&gt;&lt;br /&gt;  5. Initialize the database&lt;br /&gt;&lt;br /&gt;     # /usr/bin/trytond -i all -d tryton&lt;br /&gt;&lt;br /&gt;     Note: Use the database name you chose in step 4 (here as default: tryton).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, you&#39;re finished. Please be aware of the following things:&lt;br /&gt;&lt;br /&gt;  * trytond has one default account:&lt;br /&gt;    - User: admin; password: admin (or the one you have set)&lt;br /&gt;&lt;br /&gt;  * trytond must have read access to its configuration file, otherwise it will&lt;br /&gt;    start with internal defaults. The postinst script will (re)set correct&lt;br /&gt;    permissions on the standard configuration file (0644 on /etc/tyond.conf).&lt;br /&gt;&lt;br /&gt;  * trytond listens by default on port 8070 (netrpc). If you need to change&lt;br /&gt;    this, edit /etc/trytond.conf and replace &#39;port = 8070&#39; with&lt;br /&gt;    &#39;port = &lt;your port&gt;&#39;.&lt;br /&gt;&lt;br /&gt;  * trytond in its upstream configuration listens by default to *all*&lt;br /&gt;    interfaces. For security reasons, we do restrict it in the Debian packages&lt;br /&gt;    to listen only on localhost. If you need to change this, edit&lt;br /&gt;    /etc/trytond.conf and replace &#39;interface = localhost&#39; with&lt;br /&gt;    &#39;interface = &lt;your ip&gt;&#39; or just comment it out to listen to all.&lt;br /&gt;&lt;br /&gt;  * Installation of modules into the database can be done from the&lt;br /&gt;    Administration Panel of the client. Under Modules you can select from the&lt;br /&gt;    modules packages (trytond-modules*) you have installed on your system.&lt;br /&gt;&lt;br /&gt;    To install just all, run a second time&lt;br /&gt;&lt;br /&gt;    # /usr/bin/trytond -i all -d tryton&lt;br /&gt;&lt;br /&gt;    Remember to replace tryton with the name of your database.&lt;br /&gt;&lt;br /&gt;  * Once you have upgraded to a new major version you have to update your&lt;br /&gt;    database(s). After the categorically recommended backup do&lt;br /&gt;&lt;br /&gt;    # /usr/bin/trytond -u all -d tryton&lt;br /&gt;&lt;br /&gt;    Remember to replace tryton with the name of your database.&lt;br /&gt;&lt;br /&gt; -- Mathias Behrle &lt;mathiasb@mbsolutions.selfip.biz&gt;  Sat,  28 Mar 2009 12:00:00 +0200&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/7478709877593783139/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/7478709877593783139' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/7478709877593783139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/7478709877593783139'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2009/09/tryton-server-erp-debian.html' title='Tryton Server ERP на Debian'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-2713586064226241268</id><published>2009-06-01T22:07:00.004+04:00</published><updated>2009-07-12T01:06:00.259+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="boost"/><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="gcc"/><category scheme="http://www.blogger.com/atom/ns#" term="glibc"/><category scheme="http://www.blogger.com/atom/ns#" term="программирование"/><title type='text'>Компиляция Boost C++ Libraries со статической компоновкой</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;a href=&quot;http://cc.byexamples.com/20080816/static-linking-compilation-for-boost-c-libraries/&quot;&gt;Original&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Введение&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Программируя на C++, нам приходиться многое писать с нуля, например, нам нужно создать класс сокетов, класс потоков, класс журналирования, функцию регулярных выражений и т.д. Разработка таких библиотек порой занимает слишком много времени, и заставляет программистов страдать.&lt;br /&gt;&lt;br /&gt;Boost предоставляет набор библиотек, которые помогут сократить стоимость разработки. Но использовать эти библиотеки надо с осторожностью. Надо помнить о некоторых вещах при внедрении boost в свой код.&lt;br /&gt;&lt;br /&gt;1. Некоторые библиотеки требуют динамической компоновки по умолчанию&lt;br /&gt;2. Различные версии динамических библиотек не совместимы&lt;br /&gt;3. Различные версии glibc могут иметь разные наборы библиотек для одной версии Boost&lt;br /&gt;&lt;br /&gt;Что касается первого, такие библиотеки как &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Boost.Thread&lt;/span&gt;&lt;/span&gt; и &lt;span style=&quot;font-style:italic;&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Boost.Regex&lt;/span&gt;&lt;/span&gt; используют динамическую компоновку по умолчанию. К счастью Boost умеет статическую компоновку для этих библиотек.&lt;br /&gt;&lt;br /&gt;Второе, приложение, которое требуют динамически скомпилированную библиотеку Boost версии A, не может быть запущено с динамически откомпилированой Boost версии B, поэтому я предпочитаю статическую компиляцию библиотек.&lt;br /&gt;&lt;br /&gt;И третье, в окружении Linux код, который компилируется GCC-4.1, может не запуститься с GCC-3.4, потому что они испольуют разное окружение glibc. Но при компиляции Boost можно указать версию gcc, так что библиотеки могут быть основаны на требуемой версии glibc.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Компиляция Boost Library со статической компоновкой и требуемой версии GCC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. скачайте &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=7586&amp;package_id=8041&quot;&gt;Boost&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. &lt;span style=&quot;font-style:italic;&quot;&gt;./configure&lt;/span&gt;&lt;br /&gt;(по умолчанию билиотеки и заголовочные файлы будут установлены в /usr/local, запуская ./configure, Вы можете указать целевое расположение: –prefix,) например, &lt;span style=&quot;font-style:italic;&quot;&gt;./configure –prefix=/usr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. Правьте конфигурационные файлы если Вы хотите исользовать свою версию GCC при компиляции Boost.&lt;br /&gt;Например изменить&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;using gcc ;&lt;/span&gt;&lt;br /&gt;на&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;using gcc : 3.4 : g++34 ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Если мы хотим статическую компоновку библиотек для boost, потребуется полная компиляция. Изменим Makefile после запуска ./configure &lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;BJAM_CONFIG=–build-type=complete&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. make; sudo make install&lt;br /&gt;&lt;br /&gt;Библиотеки Boost установятся в &lt;span style=&quot;font-style:italic;&quot;&gt;/usr/local/lib/libboost_*&lt;/span&gt;&lt;br /&gt;Заголовочные файлы, etc.. (Boost includes) установятся в &lt;span style=&quot;font-style:italic;&quot;&gt;/usr/local/include/boost-1_35&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Откомпилируем код используя статическую библиотеку &lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;Boost.Thread&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;g++34 -o myApp{,.cc} -I/usr/local/include/boost-1_35/ -L/usr/local/lib -lboost_thread-gcc34-mt-s -lpthread&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;(Помните, что при использовании статической компоновки, Вам потребуется указать флаг &lt;span style=&quot;font-style:italic;&quot;&gt;-lpthread&lt;/span&gt;, если же Вы используете динамическую компоновку, Вы можете пропустить флаг &lt;span style=&quot;font-style:italic;&quot;&gt;-lpthread&lt;/span&gt;.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy hacking with boost!&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/2713586064226241268/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/2713586064226241268' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/2713586064226241268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/2713586064226241268'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2009/06/boost-c-libraries.html' title='Компиляция Boost C++ Libraries со статической компоновкой'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-4791695582492845717</id><published>2008-11-18T16:12:00.005+03:00</published><updated>2008-11-18T18:02:55.492+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><category scheme="http://www.blogger.com/atom/ns#" term="vi"/><title type='text'>vi основные команды</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;vi основные команды&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Оригинал: &lt;a href=&quot;http://free-electrons.com/doc/vi_memento.pdf&quot;&gt;.pdf&lt;/a&gt; &lt;a href=&quot;http://free-electrons.com/doc/vi_memento.odt&quot;&gt;.odt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Перевод: &lt;a href=&quot;http://tuxedo.live.googlepages.com/vi_memento_ru.pdf&quot;&gt;.pdf&lt;/a&gt; &lt;a href=&quot;http://tuxedo.live.googlepages.com/vi_memento_ru.odt&quot;&gt;.odt&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Условия распространения &lt;a href=&quot;http://creativecommons.org/licenses/by-sa/2.5/&quot;&gt;Creative Commons Attribution-ShareAlike 2.5 license&lt;/a&gt;&lt;br /&gt;©Copyright 2006-2005, &lt;a href=&quot;http://free-electrons.com/&quot;&gt;Free Electrons&lt;/a&gt;.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/4791695582492845717/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/4791695582492845717' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4791695582492845717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4791695582492845717'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/11/vi.html' title='vi основные команды'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-3806032732397152914</id><published>2008-11-16T00:01:00.002+03:00</published><updated>2008-11-16T04:06:22.830+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="patch"/><title type='text'>Как пропатчить Linux - Linux patch</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;Делается это очень просто. Допустим, Вы уже имеете исходники ядра, скачанные с kernel.org. Теперь будем накладывать патч на ядро.&lt;br /&gt;&lt;br /&gt;Определите нужную версию ядра и патча с помощью браузера на kernel.org.&lt;br /&gt;&lt;pre&gt;http://kernel.org/pub/linux/kernel/v2.6/patch­2.6.27.bz2 (с 2.6.&lt;span style=&quot;color: rgb(102, 0, 0);&quot;&gt;26&lt;/span&gt; на 2.6.&lt;span style=&quot;color: rgb(102, 0, 0);&quot;&gt;27&lt;/span&gt;)&lt;br /&gt;http://kernel.org/pub/linux/kernel/v2.6/patch­2.6.27.6.bz2 (с 2.6.&lt;span style=&quot;color: rgb(102, 0, 0);&quot;&gt;27&lt;/span&gt; на 2.6.&lt;span style=&quot;color: rgb(102, 0, 0);&quot;&gt;27.6&lt;/span&gt;)&lt;/pre&gt;&lt;br /&gt;Далее скачиваем патч, сверяем подпись:&lt;br /&gt;&lt;pre&gt;wget http://kernel.org/pub/linux/kernel/v2.6/patch-­2.6.27.6.bz2&lt;br /&gt;wget http://kernel.org/pub/linux/kernel/v2.6/patch-­2.6.27.6.bz2.sign&lt;br /&gt;gpg ­­--verify patch-­2.6.27.6.bz2.sign&lt;/pre&gt;&lt;br /&gt;Накладываем патч:&lt;br /&gt;&lt;pre&gt;bzcat patch­-2.6.27.6.bz2 | patch ­p1&lt;/pre&gt;&lt;br /&gt;Патч наложен.&lt;br /&gt;Откатить патч можно с помощью &lt;span style=&quot;font-style:italic;&quot;&gt;patch&lt;/span&gt; с параметром -R.&lt;br /&gt;Файл patch-2.6.27.6 - это вывод комманды &lt;span style=&quot;font-style:italic;&quot;&gt;diff&lt;/span&gt;. Вот так он выглядит:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;diff --git a/Makefile b/Makefile&lt;br /&gt;index 16e3fbb..1ea4453 100644&lt;br /&gt;--- a/Makefile&lt;br /&gt;+++ b/Makefile&lt;br /&gt;@@ -1,8 +1,8 @@ &lt;-номера строк в файле&lt;br /&gt; VERSION = 2&lt;br /&gt; PATCHLEVEL = 6&lt;br /&gt; SUBLEVEL = 27&lt;br /&gt;-EXTRAVERSION = &lt;- удаленная строку&lt;br /&gt;-NAME = Rotary Wombat &lt;- удаленная строка&lt;br /&gt;+EXTRAVERSION = .6 &lt;- добавленная строка&lt;br /&gt;+NAME = Trembling Tortoise &lt;- добавленная строка&lt;br /&gt;&lt;br /&gt; # *DOCUMENTATION*&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Спасибо.&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/3806032732397152914/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/3806032732397152914' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/3806032732397152914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/3806032732397152914'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/11/linux-linux-patch.html' title='Как пропатчить Linux - Linux patch'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-3024844400679274783</id><published>2008-11-15T04:51:00.008+03:00</published><updated>2008-11-19T20:46:51.072+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="binutils"/><category scheme="http://www.blogger.com/atom/ns#" term="crosstool"/><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="gcc"/><category scheme="http://www.blogger.com/atom/ns#" term="glibc"/><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="kernel"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="toolchain"/><category scheme="http://www.blogger.com/atom/ns#" term="uClinux"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><title type='text'>Crosstool - сборка и тестирование Toolchains</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsSO3MTcWotlw94eGrhJOFkl2py5scsGETi8-HykNq5hS0YmxcpPRnfz3AVlrVkQS3ShZP4CEKryHs7Rvzi6AehVbSLks-1frxafkUps9TW3_RkV_3unlW2JAlpznfrO-KuKQqvm0UkTk/s1600-h/cross.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 218px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsSO3MTcWotlw94eGrhJOFkl2py5scsGETi8-HykNq5hS0YmxcpPRnfz3AVlrVkQS3ShZP4CEKryHs7Rvzi6AehVbSLks-1frxafkUps9TW3_RkV_3unlW2JAlpznfrO-KuKQqvm0UkTk/s400/cross.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5268697590772774578&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Вот такую матрицу-отчет сгенерила crosstool, полная её версия &lt;a href=&quot;http://kegel.com/crosstool/crosstool-0.43/buildlogs/&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Сборка кросс-toolchain&#39;а gcc/glibc для встраеваемых систем есть пэйнфул процесс. Программа (набор скриптов) Crosstool, написанная Dan Kegel, поможет найти рабочие комбинации различных версий gcc, glibc, binutils и заголовочных файлов ядра(см. рисунок выше).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Домашняя страница проекта: http://kegel.com/crosstool/&lt;/li&gt;&lt;li&gt;Также смотреть: uClibc chaintools http://free-electrons.com/community/tools/uclibc&lt;/li&gt;&lt;li&gt;Have fun! http://www.aleph1.co.uk/armlinux/docs/toolchain/toolchHOWTO.pdf&lt;/li&gt;&lt;!--&lt;li&gt;ELC 2008 Presentations http://www.celinux.org/elc08_presentations/&lt;/li&gt;--&gt;&lt;/ul&gt;&lt;br /&gt;Под ARM:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://www.codesourcery.com/gnu_toolchains/arm/&lt;/li&gt;&lt;li&gt;ftp://ftp.handhelds.org/projects/toolchain/&lt;/li&gt;&lt;/ul&gt;Под MIPS:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;http://www.linux-mips.org/wiki/Toolchains&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Tools list:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Crosstool­-ng&lt;/li&gt;&lt;li&gt;Buildroot&lt;/li&gt;&lt;li&gt;Scratchbox&lt;/li&gt;&lt;li&gt;OpenEmbedded&lt;/li&gt;&lt;li&gt;PTXdist&lt;/li&gt;&lt;li&gt;LTIB&lt;/li&gt;&lt;li&gt;Home made tools&lt;/li&gt;&lt;li&gt;Firmware Linux&lt;/li&gt;&lt;li&gt;Gentoo embedded&lt;/li&gt;&lt;li&gt;ELDK&lt;/li&gt;&lt;li&gt;другие? коммент.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Спасибо.&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/3024844400679274783/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/3024844400679274783' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/3024844400679274783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/3024844400679274783'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/11/crosstool-toolchains.html' title='Crosstool - сборка и тестирование Toolchains'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsSO3MTcWotlw94eGrhJOFkl2py5scsGETi8-HykNq5hS0YmxcpPRnfz3AVlrVkQS3ShZP4CEKryHs7Rvzi6AehVbSLks-1frxafkUps9TW3_RkV_3unlW2JAlpznfrO-KuKQqvm0UkTk/s72-c/cross.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-1625033494995982091</id><published>2008-11-02T21:41:00.009+03:00</published><updated>2008-11-02T22:16:28.113+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><title type='text'>Архитектура ядра UNIX</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;&lt;p&gt;На диаграмме ниже показаны различные модули ядра и их свзяи. Два главных компонента ядра: файловая подсистема (&lt;i&gt;file subsystem&lt;/i&gt;) и подсистема управления процессами (&lt;i&gt;process control subsystem&lt;/i&gt;). Также здесь видно три уровня: user, kernel и hardware levels. Интерфейс системных вызовов (&lt;i&gt;system call interface&lt;/i&gt;) и библиотеки(&lt;i&gt;libraries&lt;/i&gt;) разделяют пользовательский уровень и уровень ядра. &lt;a href=&quot;http://tuxedo-live.blogspot.com/2008/07/unix.html&quot;&gt;Системные вызовы&lt;/a&gt; обычно представлены в виде вызовов функций в С программах, библиотеки собирают эти вызовы в примитивы, необходимые для работы ОС.&lt;/p&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh42ijxVyerhEissPiyKTUQwGIXg_aBrnCobRHxAx8gpf6shkUK6Lb5dlbhA412NeZ4JUPTSJeJgd5Tfd-RCtDR2mg7KoOaGmk_o12REnVFTVtciXDzSakAjwqKr7CBdcjVm4MA8plbPmA/s1600-h/Unix_kernel.jpg&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 350px; height: 392px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh42ijxVyerhEissPiyKTUQwGIXg_aBrnCobRHxAx8gpf6shkUK6Lb5dlbhA412NeZ4JUPTSJeJgd5Tfd-RCtDR2mg7KoOaGmk_o12REnVFTVtciXDzSakAjwqKr7CBdcjVm4MA8plbPmA/s400/Unix_kernel.jpg&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5264133276226062706&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Блочная диаграмма ядра UNIX&lt;/b&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;p&gt;&lt;i&gt;Файловая подсистема&lt;/i&gt; управляет файлами, выделяет место под них, управляет свободным пространством, контролирует доступ к файлам, получает данные для пользователей. Процессы взаимодействуют с файловой подсистемой через специфический набор системных вызовов:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;i&gt;open&lt;/i&gt; открывает &lt;a href=&quot;http://tuxedo-live.blogspot.com/2008/03/unix-bsd-linux-solaris-mach-hurd.html&quot;&gt;файл&lt;/a&gt; для чтения и записи&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;close&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;read&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;write&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;stat&lt;/i&gt; запрашивает атрибуты файла&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;chown&lt;/i&gt; изменяет запись о том, кто владеет файлом&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;chmod&lt;/i&gt; управляет доступов к файлу &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;i&gt;Файловая подсистема&lt;/i&gt; получает доступ к файлам, используя механизм буферизации (&lt;i&gt;buffering mechanism&lt;/i&gt;), который устанавливает канал между ядром (&lt;i&gt;kernel&lt;/i&gt;) и устройством хранения (&lt;i&gt;storage device&lt;/i&gt;). Механизм буферизации взаимодействует с драйвером устройства блочного ввода/вывода (&lt;i&gt;block I/O device&lt;/i&gt;) для того, чтобы инициировать перемещение данных в/из ядра. Драйвер устройства - это модуль ядра, который контролирует работу периферийных устройств.&lt;br /&gt;Файловая подсистема также может напрямую взаимодействовать с &quot;сырыми&quot; (&quot;&lt;i&gt;raw&lt;/i&gt;&quot;) драйверами ввода/вывода без привлечения механизма буферизации. Raw устройства также называют символьными (&lt;i&gt;character&lt;/i&gt;). Это все устройства, которые нельзя отнести к блочным.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Подсистема управления процессами &lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;i&gt;Подсистема управления процессами&lt;/i&gt; отвечает за синхронизацию процессов (&lt;i&gt;process synchronization&lt;/i&gt;), межпроцессорное взаимодействие (&lt;i&gt;interprocess communication&lt;/i&gt;), управление памятью (&lt;i&gt;memory managment&lt;/i&gt;) и планировкой процессов (&lt;i&gt;process sheduling&lt;/i&gt;). Файловая подсистема и подсистема управления процессами взаимодействуют при загрузке файла в память для его запуска (подсистема процессов прочитывает исполняемый файл в память перед его исполнения).&lt;br /&gt;Некоторые системные вызовы для управления процессами:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;i&gt;fork&lt;/i&gt; создает новый процесс&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;exec&lt;/i&gt; накладывает образ программы на текущий процесс&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;exit&lt;/i&gt; заканчивает запущенный процесс&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;wait&lt;/i&gt; синхронизирует исполнение процесса с &lt;i&gt;exit&lt;/i&gt; предыдущего &lt;i&gt;fork&lt;/i&gt;-нутого процесса&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;brk&lt;/i&gt; контролирует размер выделенной на процесс памяти&lt;br /&gt;&lt;/li&gt;&lt;li&gt; &lt;i&gt;signal&lt;/i&gt; управляет откликом процесса на экстраординарные события&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Модуль управления памятью (&lt;i&gt;memory managment module&lt;/i&gt;) управляет выделением памяти. Если системе не хватает физической памяти для всех процессов, ядро перемещает их между основной и вторичной памятью, и так все процессы имеют возможность быть запущенными. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;Планировщик (&lt;i&gt;sheduler&lt;/i&gt;) выделяет CPU под процессы. Он распределяет запуск процессов пока они добровольно (произвольно) не освободят CPU на/во время ожидания ресурса, либо пока ядро не выгрузит их по истечении кванта времени. После планировщик выбирает процесс с наибольщим приоритетов для его запуска; первичный процесс будет запущен опять тогда, когда он будет являться процессом с наивысшим приоритетом.&lt;br /&gt;Существует несколько видов межпроцессорного взаимодействия, начиная с асинхронной передачи событий (&lt;i&gt;asynchronous signaling of events&lt;/i&gt;), заканчивая синхронной передачей сообщений между процессами.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Управление аппаратным обеспечением&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;И наконец, управление аппаратным обеспечением (&lt;i&gt;hardware control&lt;/i&gt;) ответственно за обработку прерываний (&lt;i&gt;handling interrupts&lt;/i&gt;) и общения с машиной. Такие устройства как диски или терминалы могут прерывать CPU во время выполнения процесса. В таком случае ядро может продолжить исполнение прерванного процесса после обслуживания прерывания. Прерывания не обслуживаются специальными процессами, а специальными функциями ядра, вызываемыми в контексте текущего запущенного процесса.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Литература:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; The Design Of the Unix Operating System by Maurice J. Bach, 1986&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/1625033494995982091/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/1625033494995982091' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/1625033494995982091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/1625033494995982091'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/11/unix.html' title='Архитектура ядра UNIX'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh42ijxVyerhEissPiyKTUQwGIXg_aBrnCobRHxAx8gpf6shkUK6Lb5dlbhA412NeZ4JUPTSJeJgd5Tfd-RCtDR2mg7KoOaGmk_o12REnVFTVtciXDzSakAjwqKr7CBdcjVm4MA8plbPmA/s72-c/Unix_kernel.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-4988040411737540410</id><published>2008-08-04T16:12:00.003+04:00</published><updated>2008-08-05T10:57:35.761+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="uClinux"/><title type='text'>uClinux - инструменты сборки</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;a href=&quot;http://www.beyondlogic.org/uClinux/builduC.htm&quot;&gt;original&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Итак, Вы теперь имеете систему разработки uClinux. Вкратце об &lt;small&gt;&amp;lt;&lt;/small&gt;&lt;a href=&quot;http://tuxedo-live.blogspot.com/2008/07/uclinux.html&quot;&gt;установке&lt;/a&gt;&lt;small&gt;&amp;gt;&lt;/small&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;набор программ разработки uClinux должен быть установлен в /opt/uClinux&lt;/li&gt;&lt;br /&gt;&lt;li&gt;m68k-coff использовался для компиляции ядра. Он не связан со стандартной С библиотекой uC-libc.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;ядро uClinux установленно в /opt/uClinux/linux&lt;/li&gt;&lt;br /&gt;&lt;li&gt;m68k-pic-coff - это PIC компилятор, который использовался для сборки бинарников пользовательского пространства.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;стандартная С библиотека uC-libc должна быть скомпилирована как libc.a и crt0.o и скопирована в /opt/uClinux/m68k-pic-coff/lib, а их include файлы в /opt/uClinux/m68k-pic-coff/include&lt;/li&gt;&lt;br /&gt;&lt;li&gt;стандартная математическая библиотека uC-libm дложна быть скомпилирована как libm.a и math.h, включенные в /opt/uClinux/m68k-pic-coff/lib и /opt/uClinux/m68k-pic-coff/include соответственно.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;m68k-pic-coffs’ LD заменен скриптом, который вызывает линковщик LD, затем COFF2FLT создает плоский бинарный модуль (Flat Binary Image) из coff файла&lt;/li&gt;&lt;br /&gt;&lt;li&gt;утилита genromfs должна быть собрана и установлена, и добавлена в path&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Romdisk извлечен в /opt/uClinux/romdisk&lt;/li&gt;&lt;br /&gt;&lt;li&gt;коды пользовательского пространства uClinux установлены в /opt/uClinux/src&lt;/li&gt;&lt;br /&gt;&lt;li&gt;скрипт deftemplate.sh должен быть помещен в /opt/uClinux/&lt;/li&gt;&lt;br /&gt;&lt;li&gt;скрипт buildenv.sh должен быть помещен в /opt/uClinux/bin/ и добавлен в path&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Есть две области разработки: средства ядра uClinux и средства пользовательского пространства. Так как ядро представлено для множества платформ, основным местом разработки будет пользовательское пространство. Как бы там ни было, ядро uClinux должно быть установлено первым.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Сборка ядра uClinux&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Ядро должно быть сконфигурировано перед сборкой. Для тех, кто конфигурировал ядро для настольных ПК, эта процедура будет знакома, кроме конечно того, что uClinux не поддерживает загружаемые модули. Для других это будет испытанием. &lt;br /&gt;Для начала перейдите в /opt/uClinux/linux и запустите конфигурационную утилиту&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       cd /opt/uClinux/linux&lt;br /&gt;       make menuconfig&lt;/blockquote&gt;&lt;br /&gt;Время конфигурации ядра. Так как Вы будете ссылаться на различные архитектуры и платформы, здесь нет особо выбора. Выберите Ваш процессор и плату из Platform Dependent Setup, и пропустите конфигурацию дополнительных параметров.&lt;br /&gt;&lt;br /&gt;Как только вы закончили с конфигурационными дилемами, пришло время сборки. Просто запустите следующие команды, откиньтесь на спинку кресла и следите. Это может занять некоторое время, в зависимости от скорости Вашей системы.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       make dep&lt;br /&gt;       make clean&lt;br /&gt;       make linux.bin&lt;/blockquote&gt;&lt;br /&gt;Make dep говорит make об установке зависимостей. Clean очистит все старые компоненты предыдущих сборок, а linux.bin соберет образ linux.bin, что является ядром в чистом бинарном виде.&lt;br /&gt;&lt;br /&gt;По завершении Вы должны иметь парочку файлов в директории linux (/opt/uClinux/linux). Это будут linux.text, linux.data, linux.bin и карта системы (system map).&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Процедура сборки ядра&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Сбоорка ядра начнется со сборки отдельных компонентов/подсистем ядра. Как только это будет сделано, все объектные файлы подсистемы будут связаны (linked) используя секцию компоновочного файла (.LD), который будет находится в &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;arch/$(ARCH)/platform/$(PLATFORM)/$(BOARD)/$(MODEL).ld&lt;/span&gt;, и запускать C asm код (crt0_rom.S) для создания файла linux.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       LD -T (MODEL).ld  crt0_$(MODEL).o [objs] -o linux&lt;/blockquote&gt;&lt;br /&gt;Компоновщик определяет секцию памяти, он сообщает компилятору сколько памяти доступно и где разместить разные куски кода. Загрузочный asm код - это код, который запускается прямо после reset vector или загрузчика (bootloader), который поднимает различные части микроконтроллера, такие как clock dividers, serial port, DRAM, SRAM, memory banks, watchdogs и т.д., которые должны быть установлены перед тем как микроконтроллер сможет запустить ядро linux. Также он поднимает стэк, обнуляет .bss сегмент, копирует .data сегмент в RAM и переходит к start_kernel() который является входной точкой в C Код.&lt;br /&gt;&lt;br /&gt;Символьная/системная карта (symbol/system map) генерируется из файла linux. Это удобно для показа отладки, где каждая функция размещена в памяти.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       NM $(LINUX) | grep -v &#39;\(compiled\)\|\(\.o$$\)\|\( a \)&#39; | sort &amp;gt; System.map&lt;/blockquote&gt;&lt;br /&gt;Linux.data, файл содержащий весь код сегмента данных, создан linux, удаляя все сегменты только-для-чтения и другие ненужные сегменты.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       objcopy -O binary --remove-section=.romvec --remove-section=.text \&lt;br /&gt;                                --remove-section=.ramvec --remove-section=.bss  \&lt;br /&gt;                                --remove-section=.eram linux linux.data&lt;/blockquote&gt;&lt;br /&gt;Файл Linux.text также содержит весь text segment код (fixed code и переменные/строки)&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       objcopy -O binary --remove-section=.ramvec --remove-section=.bss \&lt;br /&gt;                                --remove-section=.data --remove-section=.eram  \&lt;br /&gt;                                --set-section-flags=.romvec=CONTENTS,ALLOC,LOAD,READONLY,CODE linux linux.text&lt;/blockquote&gt;&lt;br /&gt;Сегменты .Text и .Data конкатенируются для синтеза linux.bin&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       cat linux.text linux.data &amp;gt; linux.bin&lt;/blockquote&gt;&lt;br /&gt;Мы закончили с linux.bin, что является бинарным кодом ядра. Теперь он может быть загружен в память и запущен. Однако будет сбой после попытки распаковки ROM filesystem и монтирования нодов устройства (device nodes), содержащихся внутри romfs.&lt;br /&gt;&lt;br /&gt;Сборка ядра потребуется единожды до приминения каких-либо модификаций ядра. На каждой сборке системы romfs будет конкатенироваться с linux.bin. &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;ФС постоянной памяти (ROM filesystem)&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Так как есть одна общая исходая директория для ядра linux, Вы можете сложить проекты ФСы rom и бинарников пространства пользователя. Вы можете иметь одно общее ядро на главном сервере, но иметь множество разработчиков, работающих над одной системой и использующих их собственные rom ФС.&lt;br /&gt;&lt;br /&gt;Для установки рабочей среды всего лишь нужно создать директорию в подходящем месте, обычно /home/&amp;lt;username&amp;gt;/ для многопользовательской системы и запустить buildenv&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       cd /home/cpeacock/&lt;br /&gt;       mkdir ucsimm&lt;br /&gt;       buildenv&lt;/blockquote&gt;&lt;br /&gt;buildenv соберет среду разработки uClinux, создавая вначале Makefile в Вашей директории. Теперь если Вы наберете make, среда разработки будет скопирована из директории /opt/uClinux/, и создастся файл image.bin.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       make&lt;/blockquote&gt;&lt;br /&gt;Теперь директория должна иметь такую структуру&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       Makefile  deftemplate.sh  image.bin  linux  romdisk  romdisk.img  romdisk.map  src&lt;/blockquote&gt;&lt;br /&gt;Эта среда содержит бинарники пользовательского пространства в ФС ROM, которая монтирована ядром во время заргузки. Каждый исполняемый файл описанный в /src/makefile скомпилирован и его плоский бинарнкик помещен в /src/bin. Файл deftemplate.sh запущен для копирования конкретных бинарников в дерево виртуального диска постоянной памяти (romdisk), который будет представлять базу нашего romfs образа. Заметим, что скрипт deftemplate только копирует бинаркники в дерево romdisk. Он не удаляет их(бинарники), поэтому чтобы сделать это Вы должны раскамментировать соответствующую строку в скрипте deftemplate и вручную удалить файл из дерева rom диска.&lt;br /&gt;&lt;br /&gt;Дерево rom диска также включает конфигурационные файлы и структуру директорий ФС rom&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       /bin  /dev  /etc  /htdocs  /lib  /proc  ramfs.img  /sbin  /tmp  /usr  /var&lt;/blockquote&gt;&lt;br /&gt;ФС romdisk.img автоматически генерируется из дерева используя&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       genromfs -v -V &quot;ROM Disk&quot; -f romdisk.img -d romdisk 2&amp;gt; romdisk.map&lt;/blockquote&gt;&lt;br /&gt;romdisk.img затем конкатенируется с /linux/linux.bin (бинарник ядра мы собирали ранее) для создания&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       cat linux/linux.bin romdisk.img &amp;gt; image.bin&lt;/blockquote&gt;&lt;br /&gt;image.bin - файл, который содержит ядро linux плюс ROM FS. Этот образ укомплектован и готов для закачки в Вашу uClinux Систему. Для лучшего представления процесса сборки, типичная карта памяти 2.0.38 uCsimm показана на рисунке ниже.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.beyondlogic.org/uClinux/flash.gif&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Память загрузчика (bootloader flash) уже присутствует в системе разработки, которую мы используем (в нашем случае uCsimm). Это модуль dragonball от Lineo. Сегменты ROM Vectors, .TEXT и .DATA созданы как часть компиляции ядра. Эти три секции составляют файл linux.bin, который может быть найдет в /opt/uClinux/linux.&lt;br /&gt;&lt;br /&gt;Бинарники скомпилированы как плоские исполняемые и помещены в директорию rom диска. Затем Genromfs пакует это в romfs.img, который конкатенирован с linux.bin для предоставления файла image.bin. Это повысит или понизит размер, в зависимости от того какие файлы Вы включили в ФС ROM. Единственное ограничение накладывается на максимальное пространство вашей системы.&lt;br /&gt;&lt;br /&gt;image.bin - это бинарный файл, который загружается в систему разработки через загрузчик (bootloader).&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Настройка romfs&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;В настоящий момент мы собрали достаточно для загрузки image.bin и благополучно зарегистрировались в целевую систему uClinux. Однако мы используем стандартный IP адрес и другие параметры прямо из коробки.&lt;br /&gt;&lt;br /&gt;Войдите в директорию с Вашим диском rom (romdisk). Вы должны иметь структуру, похожую на эту:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; /bin  /dev  /etc  /htdocs  /lib  /proc  ramfs.img  /sbin  /tmp  /usr  /var&lt;/blockquote&gt;&lt;br /&gt;Как в любой системе linux, критические конфигурационные файлы могут быть найдены в /etc&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; inetd.conf  inittab  issue  passwd  rc  resolv.conf  services&lt;/blockquote&gt;&lt;br /&gt;Стандартный rc файл выглядит так:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; #!/bin/sh&lt;br /&gt; #&lt;br /&gt; # system startup.&lt;br /&gt;&lt;br /&gt; # set up the hostname&lt;br /&gt; /bin/hostname uCsimm&lt;br /&gt;&lt;br /&gt; # attach the interfaces&lt;br /&gt; /sbin/ifattach&lt;br /&gt; /sbin/ifattach \&lt;br /&gt; --addr 192.168.1.200 \&lt;br /&gt; --mask 255.255.255.0 \&lt;br /&gt; --net 192.168.1.0 \&lt;br /&gt; --gw 192.168.1.100 eth0&lt;br /&gt;&lt;br /&gt; # expand the ramdisk&lt;br /&gt; /sbin/expand /ramfs.img /dev/ram0&lt;br /&gt;&lt;br /&gt; # mount ramdisk, proc and nfs&lt;br /&gt; /bin/mount -t ext2 /dev/ram0 /var&lt;br /&gt; /bin/mount -t proc proc /proc&lt;br /&gt; /bin/mount -t nfs 192.168.1.11:/home/jeff/kit /usr&lt;br /&gt;&lt;br /&gt; # start up the internet superserver&lt;br /&gt; /sbin/inetd &amp;&lt;br /&gt;&lt;br /&gt; # that&#39;s it... success&lt;br /&gt; exit 0&lt;/blockquote&gt;&lt;br /&gt;Вам нужно будет изменить имя хоста (hostname), IP адрес, маску, сетевые параметры и параметры шлюза. Также нужно изменить монтирование nfs, /bin/mount -t nfs 192.168.1.11:/home/jeff/kit /usr &lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Монтирование NFS тома для Разработки&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;NFS или Network File System - это путь экспортирования и монтирования директорий в UNIX системах. Это может быть очень удобно во время разработки, позволяя легко выводить Вашу рабочую директорию на uClinux платформу. Это дает возможность компилировать код в linux системе и запускать его на сетевом диске embedded системы без копирования flat бинарников или прошивки новой ROMFS. Можете представить себе какое огромное количество времени Вы экономите.&lt;br /&gt;&lt;br /&gt;С утилитой флэш-загзузки/сетевой загрузки для целевой платформы Вы можете производить обновления флэша через кабель. Это также ускорит разработку. Пересылка 1MB image.bin файла через 115,200 serial link не так быстро.&lt;br /&gt;&lt;br /&gt;Перед использованием NFS потребуется установить песочницу для разработки, чтобы извлечь нужные Вам директории. Рекомендуется провести некоторое время без внешнего подключения к интернет. NFS exports определены в файле /etc/exports. Надо редактировать от рута.&lt;br /&gt;&lt;br /&gt;Типичная запись вывода имеет такой вид&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       /home (ro)&lt;/blockquote&gt;&lt;br /&gt;Это выведет домашнии директории (home) для всех с правами только чтение. Если Вы имеете чувствительную информацию в домашней директории, Вы можете явно указать на среду разработки или уточнить, какие машины имеют доступ к директории вывода, а именно:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       /home/cpeacock/ucsimm uCSimm(ro)&lt;/blockquote&gt;&lt;br /&gt;где uCsimm - имя хоста uClinux системы. Оно должно быть включено в /etc/hosts, или же должен быть указан явный IP адрес.&lt;br /&gt;&lt;br /&gt;После замены директории вывода нужно перезагрузить компьютер (windows way :) ) или перезапустить NFS демоны. Вот так:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       /etc/rc.d/init.d/nfs stop&lt;br /&gt;       /etc/rc.d/init.d/nfs start&lt;/blockquote&gt;&lt;br /&gt;(на многих linux системах)&lt;br /&gt;&lt;br /&gt;Как только это сделано, модифицирйуте файл rc и включите сюда данные о монтировании, в моем случае&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       mount -t nfs 192.168.0.1:/home/cpeacock/ucsimm /usr&lt;/blockquote&gt;&lt;br /&gt;Вы также можете зарегистрироваться в вашу uClinux систему и запустить это в коммандной строке. Это удобно после того, как uClinux система приведена в порядок, и теперь нужно быстро сделать некоторые вещи или reimage.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;ФС оперативной памяти (RAM FileSystem)&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;uClinux имеет RAM ФС (ramdisk) для временных областей /tmp и /var в отсутствии жесткого диска (hard disk drive, HDD). romdisk текущиего дистрибутива uClinux идет с ramfs на 256кбайт. /tmp в корне - это символическая ссылка на /var/tmp. var - это точка монтирования RAM ФС.&lt;br /&gt;&lt;br /&gt;ramfs распакована и монтирована через скрипт запуска rc,&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # expand the ramdisk&lt;br /&gt;       /sbin/expand /ramfs.img /dev/ram0&lt;br /&gt;&lt;br /&gt;       # mount ramdisk, proc and nfs&lt;br /&gt;       /bin/mount -t ext2 /dev/ram0 /var&lt;/blockquote&gt;&lt;br /&gt;Она содержит ext2 ФС, которая сжата при помощи алгоритма Zero Run Length Encoding (ZRTE). Она распаковывается при помощи утилиты распаковки в блочное RAM устройство /dev/ram0. Как только этот процесс завершен, она монтирована как ext2 ФС с точкой монтирования /var.&lt;br /&gt;&lt;br /&gt;Если нужно исправить ссылку на tmp, мы можем просто добавить команду в rc скрипте для создания директории tmp в var после монтирования ramfs. Как бы то ни было, увеличить размер ramdisk будет не так легко. Для этого нужно создать новый ramfs.img. Для некоторых приложений даже необходим больший размер ramdisk. Вы возможно захотите журналировать данные в файл, который затем будет скачан, используя анонимный FTP, HTTP, или другое.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Создаем новую ramfs&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Создание новой ramfs - достаточно простая задача. Одна проблема, на которую следует обратить внимание - это порядок следования байт в вашей системы (endianness).&lt;br /&gt;&lt;br /&gt;Начнем с обнуления блочного устройства ram. Позже мы будем использовать утилиту сжатия в целях получения более сжатого образа. Вам также нужно выбрать размер диска ramdisk. Большой ramdisk позволит Вам записывать большие журналы и временные файлы, но с затратами на системной RAM. Это зависит от того, какие приложения Вы используете на uClinux системе.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # dd if=/dev/zero of=/dev/ram0 bs=1k count=1024&lt;br /&gt;       1024+0 records in&lt;br /&gt;       1024+0 records out&lt;/blockquote&gt;&lt;br /&gt;Далее сделаем ext2fs. Флаг -v включает вербальный режим, так что мы сможем увидеть некоторую статистику. По умолчанию 5% блоков зарезервировано для суперпользователя. Мы это выключим, используя -m0. Мы также отключим любые другие дополнительные возможности ФС ext2, используя -Onone. На пост 2.2 ядерных системах, опции sparse_super и filetype автоматически включены при создании ext2fs. Однако обе эти возможности некорректно поддерживаются ядром pre 2.2, и как результат mount сообщает о проблеме при монтировании ФС на системе 2.0.38 uClinux.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # mke2fs -vm0 -Onone /dev/ram0 1024&lt;br /&gt;       mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09&lt;br /&gt;       Filesystem label=&lt;br /&gt;       OS type: Linux&lt;br /&gt;       Block size=1024 (log=0)&lt;br /&gt;       Fragment size=1024 (log=0)&lt;br /&gt;       128 inodes, 1024 blocks&lt;br /&gt;       0 blocks (0.00%) reserved for the super user&lt;br /&gt;       First data block=1&lt;br /&gt;       1 block group&lt;br /&gt;       8192 blocks per group, 8192 fragments per group&lt;br /&gt;       128 inodes per group&lt;br /&gt;       &lt;br /&gt;       Writing inode tables: done&lt;br /&gt;       Writing superblocks and filesystem accounting information: done&lt;/blockquote&gt;&lt;br /&gt;На следующем шаге мы добавим дополнительные папки и файлы к ramdisk. Это необязательная процедура, поэтому Вы можете ее пропустить. По умолчанию при создании ФС ext2 добавляется директория lost+found. Она появится в /var/lost+found. Также рекоммендуется создать папку tmp. Чтобы добавить файлы и папки, для начала монтируйте ФС как ext2.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # mount -t ext2 /dev/ram0 /mnt/ramdisk&lt;br /&gt;       # cd /mnt/ramdisk&lt;br /&gt;       # mkdir tmp&lt;/blockquote&gt;&lt;br /&gt;Как только Вы закончили, отмонтируйте ФС для обеспечения чистоты монтирования в будущем&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # umount /mnt/ramdisk&lt;/blockquote&gt;&lt;br /&gt;Теперь время переместить ФС из блочного ram устройства в локальный файл. Копируем ФС байт-к-байту в ramfsraw.img. Для 1MB ramfs, этот файл будет размером в 1MB.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # dd if=/dev/ram of=ramfsraw.img bs=1k count=1024&lt;br /&gt;       1024+0 records in&lt;br /&gt;       1024+0 records out&lt;/blockquote&gt;&lt;br /&gt;Будет очень неэффективно добавлять файл размером 1Mb к romdisk в его текущей форме, и так как большая часть ФС свободна, мы можем очень эффективно сжать, используя ZRLE (Zero Run Length Encoding). Вы можете поискать документ, описывающий процесс “making a file with holes”.&lt;br /&gt;&lt;br /&gt;ZRLE записывает блоки с ненулевыми данными, прибавляя к ним длину блока и ее позицию в файле. Так как в основном файл состоит из нулей, утилита обрезает их. Утилита распаковки просто обнулит всю длину распаковываемого файла, и затем скопирует блоки данных обратно в подходящие ячейки.&lt;br /&gt;&lt;br /&gt;Сжатие может быть выполнено при помощи утилиты, называемой holes. Существует пара версий, в зависимости от порядка байт (endian) и/или размера блоков. Вы можете скачать исходные коды с &lt;a href=&quot;ftp://ftp.beyondlogic.org/uClinux/ramfsutils.tar.gz&quot;&gt;ftp://ftp.beyondlogic.org/uClinux/ramfsutils.tar.gz&lt;/a&gt; и скомпилировать их. Эти бинарники запустятся на Linux платформе с обратным следованием байт (little endian platforms).&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # /holes/holes ramfsraw.img &amp;gt;ramfs.img&lt;br /&gt;       Length of original file 1048576&lt;/blockquote&gt;&lt;br /&gt;Листинг двух файлов покажет длину сжатия. Теперь мы можем добавить его на наш romdisk, не затрачивая пространства.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       # ls ram* -l&lt;br /&gt;       -rw-r--r--    1 root     root         2639 Mar  4 16:00 ramfs.img&lt;br /&gt;       -rw-r--r--    1 root     root      1048576 Mar  4 15:59 ramfsraw.img &lt;/blockquote&gt;&lt;br /&gt;Вы также можете заметить что сгенерированный ramfs.img меньше, чем uClinux ramfs.img (3340). Еще одна причина почему Вы должны обновлять и генерировать самостоятельно. (По некоторым причинам, размер блока run length на запасной ramfs не должна быть больше 200-300 байт даже если expand.c размещает буфер в 2048 байт при распаковке образа). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Тестируем RAM filesystem&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Можно протестировать новую ramfs на Вашей uClinux платформе, сначала отмонтируя существующую ramfs, а затем распаковывая и монтируя новую ramfs.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt; /bin/umount /var&lt;br /&gt; /sbin/expand /ramfs.img /dev/ram0&lt;br /&gt; /bin/mount -t ext2 /dev/ram0 /var&lt;/blockquote&gt;&lt;br /&gt;Также Вы возможно захотите протестировать ее на Вашем настольном linux. Копирование файла expand.c из /src/init/ и перекомпиляция для x86 linux приведет к endianness проблеме. Исправьте define в ntohl(), или используйте прекомпилированный бинарник для x86 &lt;a href=&quot;ftp://ftp.beyondlogic.org/uClinux/ramfsutils.tar.gz&quot;&gt;отсюда&lt;/a&gt; (ramfsutils.tar.gz).&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Корневая ФС на NFS&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Монтирование директории разработки uClinux в /usr поможет Вам ускорить процесс разработки. Это позволит разработчику компилировать бинарники m68k в linux системе и мгновенно иметь их через монтированный NFS том.&lt;br /&gt;&lt;br /&gt;Может случится ситуация когда Вы захотите модифицировать другие файлы на FLASH, например, конфигурационные файлы /etc для инетрнет демонов, http web servers. One option is the flash and burn method - изменить файл, пересобрать образ, закачать образ в uClinux систему, задержать воздух и надеяться на то, что изменения верны.&lt;br /&gt;&lt;br /&gt;Наиболее скоростной подход и, таким образом, лучший вариант решения проблемы заключается в монтировании корневой директории uClinux как NFS том, которая вытягивается с машины разработки. Это позволит модифицировать любой файл в ФС и иметь их быстродоступными на uClinux системе. Ясно, что это сохранит львинную долю времени.&lt;br /&gt;&lt;br /&gt;Установка корневой ФС NFS заставляет немного подумать над ядром. Для начала редактируем файл setup.c в &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;/arch/{arch}/kernel/&lt;/span&gt; и добавляем следующие строки для установки деталей о NFS сервере и хосте в буффер командной строки ядра.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       ROOT_DEV = MKDEV(BLKMEM_MAJOR,0);&lt;br /&gt;&lt;br /&gt;      + #ifdef CONFIG_ROOT_NFS&lt;br /&gt;      +  strcpy(command_line,&lt;br /&gt;      +           &quot;root=/dev/nfs &quot;&lt;br /&gt;      +           &quot;nfsroot=192.168.0.2:/ucsimm/romdisk &quot;&lt;br /&gt;      +           &quot;nfsaddrs=192.168.0.200:192.168.0.2:192.168.0.1:255.255.255.0:&quot;&lt;br /&gt;      +           &quot;ucsimm:eth0:none&quot;);&lt;br /&gt;      + #endif&lt;br /&gt;       &lt;br /&gt;       /* Keep a copy of command line */&lt;br /&gt;       *cmdline_p = &amp;command_line[0];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       memcpy(saved_command_line, command_line, sizeof(saved_command_line));&lt;br /&gt;&lt;br /&gt;       saved_command_line[sizeof(saved_command_line)-1] = 0;&lt;/blockquote&gt;&lt;br /&gt;Формат этих параметров&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       root=/dev/nfs&lt;/blockquote&gt;&lt;br /&gt;Используется для доступа к корню NFS. Это не настоящий том, а псевдо-NFS-том.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       nfsroot=[&amp;lt;server-ip&amp;gt;:]&amp;lt;root-dir&amp;gt;[,&amp;lt;nfs-options&amp;gt;] &lt;/blockquote&gt;&lt;br /&gt;server-ip - это IP адрес NFS сервера, от которого Вы хотите монтировать ФС. Диретория root конкретизирует имя директории на NFS сервере для монтирования корня. Дальше идет запятая и другие страндартные параметры NFS. Парамерты необязательны. Дополнительные параметры могут быть найдены в файле nfsroot.txt как часть документации, которую Вы получаете с ядром.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       nfsaddrs=&amp;lt;client-ip&amp;gt;:&amp;lt;server-ip&amp;gt;:&amp;lt;gw-ip&amp;gt;:&amp;lt;netmask&amp;gt;:&amp;lt;hostname&amp;gt;:&amp;lt;device&amp;gt;:&amp;lt;autoconf&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;client IP - это IP адрес, который вы хотите присвоить embedded системе uClinux. Обычно присваивается ifattach в rc файле, но это не будет больше доступно локально, Вы должны предоставить эти подробности здесь. server-ip опять конкретизирует IP адрес NFS сервера - шлюз и маска должны быть self explanatory, hostname - это имя Вашей локальной машины, device указывает какой интерфейс устанавливать, тогда как autoconf указывает должны ли BOOTP либо rarp быть использованы.&lt;br /&gt;&lt;br /&gt;Эти три параметра связаны вместе. Отделите пробелами каждую команду.&lt;br /&gt;&lt;br /&gt;Как только изменения сделаны, и сохранены, начните конфигурировать ядро uClinux для поддержки корневой NFS. Опции можно найти в меню Filesystems - выбрать &quot;NFS filesystem support&quot; и &quot;Root file system on NFS&quot; обе. Затем пересобрать ядро. Как только ФС rom будет монтирована с сервера NFS, уже не нужно генерировать ROM ФС и конкатенировать ее с файлом linux.bin. Просто заргузите файл linux.bin как есть.&lt;br /&gt;&lt;br /&gt;Убедитесь что директория, которую Вы указали в exported корректна и сбросьте uClinux. Если все пройдет успешно, загрузка должна быть похожа на&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       eth0: Attempting TP&lt;br /&gt;&lt;br /&gt;       eth0: using 10Base-T (RJ-45)&lt;br /&gt;&lt;br /&gt;       Root-NFS: Got file handle for /ucsimm/romdisk via RPC&lt;br /&gt;&lt;br /&gt;       VFS: Mounted root (nfs filesystem).&lt;/blockquote&gt;&lt;br /&gt;и дать пользователю зарегистироваться в системе как обычно. Если NFS сервер отсутствует, последует следующее сообщение (uClinux будет пытаться соединиться бесконечное количество раз, пока NFS сервер не появится в сети)&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       eth0: Attempting TP&lt;br /&gt;       eth0: using 10Base-T (RJ-45)&lt;br /&gt;       NFS server 192.168.0.2 not responding, still trying.&lt;/blockquote&gt;&lt;br /&gt;Вы также можете получить сообщение ниже, если exports некорректен или Вы пытаетесь получить директории с другого сервера. В этом случае проверьте файл exports и перезапустите NFS демон. После kernel panic Вам потребуется перезапустить uClinux перед попыткой соединиться снова.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;       eth0: Attempting TP&lt;br /&gt;       eth0: using 10Base-T (RJ-45)&lt;br /&gt;       Root-NFS: Server returned error 13 while mounting /ucsimm/romdisk&lt;br /&gt;       VFS: Unable to mount root fs via NFS, trying floppy.&lt;br /&gt;       VFS: Cannot open root device 02:00&lt;br /&gt;       Kernel panic: VFS: Unable to mount root fs on 02:00&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/4988040411737540410/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/4988040411737540410' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4988040411737540410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4988040411737540410'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/08/uclinux.html' title='uClinux - инструменты сборки'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-6747129080533477182</id><published>2008-07-31T01:12:00.007+04:00</published><updated>2008-08-01T00:04:56.123+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="HowTo"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="uClinux"/><title type='text'>uClinux - установка среды программирования</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;a href=&quot;http://www.beyondlogic.org/uClinux/uClinux.htm&quot;&gt;original&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Почему встраивать Linux?&lt;/h2&gt;&lt;br /&gt;&lt;br /&gt;Linux быстро набирает популярность как ОС для встраиваемых устройств&lt;br /&gt;Вот несколько преимуществ такой ОС:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;свободное от цены лицензирование&lt;/span&gt;&lt;br /&gt;Для традиционных встраиваемых платформ сумма на лицензии будет внушительная. Включенные в поставку устройств, сторонние ОС способствуют повышению цены на устройства. Linux же свободна.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;надежный IP стэк и TCP/IP приложения&lt;/span&gt;&lt;br /&gt;Годами Linux может работать на серверах и рабочих станциях. Также Linux будет работать и на встаиваемых устройствах.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;исходный код ОС открыт&lt;/span&gt;&lt;br /&gt;Сколько раз Вы, разрабатывая ПО, которое опирается на сторонний код, натыкались на баги? При консультации с вендором он даже не заинтересован в этом, тем более не будет отлаживать код неделями или месяцами для того, чтобы выпустить патч. С Linux Вы имеете исходный код на руках. Вы можете отладить баг и отдать код обратно сообществу. Это придаст ядру больше стабильности, и от этого выиграют все участники Linux сообщества.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;исходные коды средств разработки открыты&lt;/span&gt;&lt;br /&gt;Средства разработки - это набор необходимых пакетов программ для компиляции и генерации выполняемого кода из исходных текстов программ. Они также открыты.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;время, необходимое на рынке&lt;/span&gt;&lt;br /&gt;В изобилии открытого исходного кода и приложений, нацеленных на Linux, вы заметите, что &quot;время на рынок&quot; сократилось. Возьмем в качестве примера продукты Memory Fax/Modem, которые появились на рынке несколько лет назад. Это факс/модемы со встроенной памятью, которые позволяют получать факсимильные сообщения, когда компьютер выключен. Для размещения такого продукта на рынок будет необходимой разумный объем работы. Вместе с uClinux, разработчик может основывать свои продукты на продуктах с открытым исходным кодом, таких как efax. Она также позволяет включать IP маскарад (с небольшими усилиями), тем самым добавив больше функциональности продукту. Linux также поддерживает широкий спектр периферийных устройств и файловых систем.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Вдобавок, имеется множество целевых платформ и со временем их количество возрастает. Сейчас uClinux поддерживает серию 68328 dragonball, Coldfire, ARM7TDMI, ETRAX, I960.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Дистрибутив uClinux&lt;/h2&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;uClinux&lt;/span&gt; - самая распространенная форма встаиваемого linux. uClinux (&lt;span style=&quot;font-style: italic;&quot;&gt;MicroController Linux&lt;/span&gt;) впервые был портирован на серию процессоров Dragonball 68k в 1998. uClinux отличается от mainstream linux тем, что не имеет поддержки MMU (&lt;span style=&quot;font-style: italic;&quot;&gt;noMMU&lt;/span&gt;). Также uClinux имеет малую базовую основу, что важно для микроконтроллеров с малыми ресурсами и BFLT (Binary Flat) Executable Format.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Linux 2.0.38&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.kernel.org/pub/linux/kernel/v2.0/linux-2.0.38.tar.gz&quot;&gt;linux-2.0.38.tar.gz&lt;/a&gt; (7.5MB)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/uClinux-2.0.x/uClinux-2.0.38.1pre7.diff.gz&quot;&gt;uClinux-2.0.38.1pre7.diff.gz&lt;/a&gt; (1.3MB)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Ядро uClinux - это то место, где будет производится вся возня. Оно основано на ядре Linux 2.0.38. Оригинальное ядро Вы должны использовать на вашем настольном ПК. Патч uClinux применяется для работы с микроконтроллерами. Обычно патч включает поддержку устройств и убирает опору на MMU. Скачайте тарболы и поместите их в /opt/uClinux. Распакуйте и пропатчите ядро. Делается это так:&lt;br /&gt;&lt;blockquote&gt; mkdir /opt/uClinux&lt;br /&gt; cd /opt/uClinux&lt;br /&gt; tar –xzf linux-2.0.38.tar.gz&lt;br /&gt; gzip –d uClinux-2.0.38.1pre7.diff.gz&lt;br /&gt; cd linux&lt;br /&gt; patch -p1 &amp;lt; ../uClinux-2.0.38.1pre7.diff&lt;/blockquote&gt;&lt;br /&gt;Как только Вы это сделаете, то получите основу ядра uClinux. Теперь Вам нужно собрать компилятор, который сможет компилировать код в M68k. Позже, в сборке uC-libc, попробуем включить файлы из linux/include/asm. &quot;asm&quot; - это символическая ссылка, указывающая на папку asm-, где arch - архитектура ядра. Например, если конфигурировать uClinux для m68k с noMMU, папка asm будет указывать на asm-m68knommu. Посему, это хорошее место для начала конфигурирования ядра, которое может быть сделано без компилятора m68k-coff.&lt;blockquote&gt;&lt;br /&gt; make menuconfig &lt;/blockquote&gt;По дефолту конфигурация для uCSimm, поэтому если Вы имеете другие платы необходимо их переконфигурировать ядро. Нет нужды собирать ядро, фактически Вы не можете собрать его из-за отсутствия средств разработки. make config установит ссылку на asm, которая будет необходима позже для сборки стандартной библиотеки с, uC-libc. &lt;br /&gt;&lt;h2&gt;Средства разработки (Toolchains)&lt;/h2&gt;Имеется два разных набора необходимых пакетов программ для компиляции и генерации исполняемого кода (&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;a href=&quot;http://ru.wikipedia.org/wiki/GNU_toolchain&quot;&gt;Toolchains&lt;/a&gt;&lt;/span&gt;) для uClinux. Один используется для компиляции ядра и производит 32бит M68k фиксированный двоичный объектный код. Другой используется для компиляции кода пользовательского пространства и производит 32бит M68k PIC код (&lt;span style=&quot;font-style: italic;&quot;&gt;position independent code&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Toolchains ядра - ничего больше как запуск фабрики gcc 2.7.2.3. diff ядра делает одну маленькую модификацию в файле /config/m68k/t-m68kbare, вставляя &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc&lt;/span&gt; для предотвращения нужды в libc.&lt;br /&gt;&lt;br /&gt;Toolchains пользовательского пространства другой предмет обсуждения. Он имеет весьма обширные изменения. Эти изменения лежат в требовании иметь разрядо-независимый объектный код (&lt;span style=&quot;font-style: italic;&quot;&gt;PIC&lt;/span&gt;). Нет прямых переходов, но взамен они заменены родственными ветвями. Глобальные данные возвращаются родственно в регистр A5.&lt;br /&gt;&lt;br /&gt;Есть два варианта для cборки tool chains. Можно скачать uClinuxgcc-kit-160899.tar.gz, который содержит все патчи и makefile для автоматической сборки binutils и gcc для среды ядра и пользвателя. Другой вариант: пропатчить и собрать средства самостоятельно и изучить, что происходит в процессе. Мы рассмотрим оба способы здесь.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Простая сборка Tool Chains &lt;/h2&gt;Скачиваем следующее:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/binutils/binutils-2.9.1.tar.gz&quot;&gt;binutils-2.9.1.tar.gz&lt;/a&gt; (5.6MB) &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/gcc/gcc-2.7.2.3.tar.gz&quot;&gt;gcc-2.7.2.3.tar.gz&lt;/a&gt; (6.9MB)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/utilities/uClinuxgcc-kit-160899.tar.gz&quot;&gt;uClinuxgcc-kit-160899.tar.gz&lt;/a&gt; (40KB)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Извлекаем uClinuxgcc-kit-160899.tar.gz. Можно собрать в любой директории, не зависимо от, /opt/uClinux&lt;blockquote&gt;&lt;br /&gt; tar -xzf uClinuxgcc-kit-160899.tar.gz&lt;br /&gt;   cd uclinuxgcc-kit-160899  &lt;/blockquote&gt;&lt;br /&gt;Правим Makefile (первая строка). Изменяем &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;INSTALLDIR&lt;/span&gt; на подходящее место - лучше в /opt/uClinux. Соберем m68k-coff и m68k-pic-coff tool chains набрав   make  Комманда создаст исполняемые файлы в /opt/uClinux/bin. Можно добавить /opt/uClinux/bin в path, или связать новые бинарники с /usr/bin: &lt;blockquote&gt;&lt;br /&gt; cd /opt/uClinux/bin&lt;br /&gt; ln -f * /usr/bin&lt;/blockquote&gt;&lt;br /&gt;Это было не сложно. Теперь посмотрим что происходит при ручной сборке.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Ручная сборка Tool Chains - m68k-coff&lt;/h2&gt;Начнем со сборки инструментов m68k фиксированной разрядности, m68k-coff. Скачаиваем:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/binutils/binutils-2.9.1.tar.gz&quot;&gt;binutils-2.9.1.tar.gz&lt;/a&gt; (5.6MB)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/gcc/gcc-2.7.2.3.tar.gz&quot;&gt;gcc-2.7.2.3.tar.gz&lt;/a&gt; (6.9MB)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/gcc-2.7.2.3.kernel.diff.gz&quot;&gt;gcc-2.7.2.3.kernel.diff.gz (1KB)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Извлекаем binutils из тарболов в подходящую директорию и входим туда:&lt;blockquote&gt;&lt;br /&gt; tar -xzf binutils-2.9.1.tar.gz&lt;br /&gt; cd binutil-2.9.1&lt;/blockquote&gt;&lt;br /&gt;Конфигурируем binutils под свою аритектуру. Начнем сначала с m68k-coff так как этот подход не требует патчей.&lt;blockquote&gt;&lt;br /&gt; ./configure --prefix=/opt/uClinux --target=m68k-coff&lt;/blockquote&gt;&lt;br /&gt;Собираем m68k-coff bin устилиты: &lt;blockquote&gt;&lt;br /&gt; make&lt;br /&gt; make install&lt;/blockquote&gt;&lt;br /&gt;make создаст директорию /opt/uClinux/m68k-coff которая будет содержать 5 поддиректорий, включая bin, include, libs, m68k-coff и man. Они будут содержать хэдеры, которые нужны для создания gcc. Вернитесь обратно в директорию с gcc-2.7.2.3.tar.gz.&lt;br /&gt;&lt;br /&gt;Извлеките gcc тарбол, пропатчите и войдите в директорию с исходниками gcc:&lt;blockquote&gt;&lt;br /&gt; tar -xzf gcc-2.7.2.3.tar.g&lt;br /&gt; gzip -d gcc-2.7.2.3.kernel.diff.gz&lt;br /&gt; cd gcc-2.7.2.3  patch -p1 &amp;lt; ../gcc-2.7.2.3.kernel.diff&lt;/blockquote&gt;&lt;br /&gt;Сконфигурируйте gcc для своей архитектуры. Префикс должен быть таким же как для binutils, так gcc будет искать хэдеры предварительно созданные при установке binutils.&lt;blockquote&gt;&lt;br /&gt; ./configure --prefix=/opt/uClinux --target=m68k-coff&lt;/blockquote&gt;&lt;br /&gt;Теперь скомпилирйуте C кросс компилятор для m68k-coff. LANGUAGES=c говорит make файлу собрать только С компилятор, а не C++, что может повлечет за собой некоторые излишние проблемы.&lt;blockquote&gt;&lt;br /&gt; make LANGUAGES=c&lt;br /&gt; make LANGUAGES=c install&lt;/blockquote&gt;&lt;br /&gt;Сейчас вы должны иметь компилятор m68k-pic-gcc для сборки ядра. Исполняемый файлы должны лежать в /opt/uClinux/m68k-coff/bin. Чтобы продолжить и собрать инструментальные средства pic-coff мы должны удалить рабочие директории или переименовать их. Лучше переименовать их, потому как Вы собираете исходники с нуля, не скачивая RPM, поэтому Вы можете позже исправить ошибки и применить патчи. Переименуйте binutil-2.9.1 в binutil-2.9.1.kernel и gcc-2.7.2.3 в gcc-2.7.2.3.kernel&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Ручная сборка Tool Chains - m68k-pic-coff (разрядно-независимый код, Position Independent Code)&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/binutils/binutils-2.9.1.tar.gz&quot;&gt;binutils-2.9.1.tar.gz&lt;/a&gt; (5.6MB) &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.blogger.com/%20ftp://ftp.gnu.org/gnu/gcc/gcc-2.7.2.3.tar.gz&quot;&gt;gcc-2.7.2.3.tar.gz&lt;/a&gt; (6.9MB)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/gcc-2.7.2.3.pic.diff.gz&quot;&gt;gcc-2.7.2.3.pic.diff.gz&lt;/a&gt; (32KB) &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/binutils-2.9.1.pic.diff.gz&quot;&gt;binutils-2.9.1.pic.diff.gz&lt;/a&gt; (8KB) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Теперь повторим те же процедуры для компилятора m68k-pic-coff. В этот раз binutils должны быть пропатчены&lt;blockquote&gt;&lt;br /&gt; tar -xzf binutils-2.9.1.tar.gz&lt;br /&gt; gzip -d binutils-2.9.1.pic.diff.gz&lt;br /&gt; cd binutils-2.9.1&lt;br /&gt; patch -p1 &amp;lt; ../binutils-2.9.1.pic.diff&lt;/blockquote&gt;&lt;br /&gt;в этот раз конфигурируем средства разработки для m68k-pic-coff&lt;blockquote&gt;&lt;br /&gt; ./configure --prefix=/opt/uClinux --target=m68k-pic-coff&lt;/blockquote&gt;&lt;br /&gt;затем делаем бинарные утилиты m68k-coff.&lt;blockquote&gt;&lt;br /&gt; make&lt;br /&gt; make install&lt;/blockquote&gt;&lt;br /&gt;Теперь мы готовы собрать gcc компилятор. Извлекаем тарболы с исходными кодами, патчим и входим в директорию с gcc&lt;blockquote&gt;&lt;br /&gt; tar -xzf gcc-2.7.2.3.tar.gz&lt;br /&gt; gzip -d gcc-2.7.2.3.pic.diff.gz&lt;br /&gt; cd gcc-2.7.2.3  patch -p1 &amp;lt; ../gcc-2.7.2.3.pic.diff&lt;/blockquote&gt;&lt;br /&gt;Конфигурируем gcc для своей архитектуры. Префикс должен быть таким же как и для binutils, так как gcc будет просматривать те хэдеры с которыми создавались binutils&lt;blockquote&gt;&lt;br /&gt; ./configure --prefix=/opt/uClinux --target=m68k-pic-coff&lt;/blockquote&gt;&lt;br /&gt;Делаем m68k-coff C кросс компилятор&lt;blockquote&gt;&lt;br /&gt; make LANGUAGES=c&lt;br /&gt; make LANGUAGES=c install&lt;/blockquote&gt;&lt;br /&gt;m68k-pic-coff и m68k-coff можно поместить в path, или создать жесткую ссылку в /usr/bin.&lt;blockquote&gt;&lt;br /&gt; cd /opt/uClinux/bin&lt;br /&gt; ln -f * /usr/bin&lt;/blockquote&gt;&lt;br /&gt;Жесткие ссылки созданы взамен мягким. Если была попытка создать мягкую ссылку, gcc/evecvp пожалуется на большое количество символических ссылок (&quot;too many levels of symbolic links&quot;). /opt/uClinux/bin содержит мягкие ссылки, которые указывают на директории bin отдельного компилятора.&lt;br /&gt;&lt;br /&gt;На данной ступени мы имеем С компилятор, который делает разрядно-независимые COFF бинарники. Чего у нас пока что нет, это стандартной С и стандартных математических библиотек. uClinux также зависит от плоских бинарников (flat binaries), а не только coff (Common Object File Format). Поэтому мы должны добавть конвертер из coff во flat (coff2flt), который конвертирует модули coff, которые генерирует компилятор, во flat бинарники, которые мы сможем запускать на uClinux.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;coff2flt (COFF - Common Object File Format to Flat Binary конвертер)&lt;/h2&gt;В порядке  создавать плоские бинарники одной коммандой, линковщик (LD) заменен скриптом, который сначала запускает линковщик, который генерирует .coff файл, затем запускает утилиту coff2flt для генерации плоского бинарника.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/coff2flt-0.5.tar.gz&quot;&gt;coff2flt-0.5.tar.gz&lt;/a&gt; (6KB)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Скачиваем и распаковываем утилиту&lt;blockquote&gt;&lt;br /&gt;      tar -xzf coff2flt-0.5.tar.gz&lt;br /&gt;      cd coff2flt-0.5&lt;br /&gt;      make&lt;/blockquote&gt;&lt;br /&gt;make соберет coff2flt. В тарболе скрипт, линковщик. Мы должны заменить pic-coff-ld этим скриптом, в который возвращаются вызовы coff2flt для создания flat бинарника из coff бинарника. Однако перед тем как мы это сделаем, отредактируем строку в LD для установки %prefix% в /opt/uClinux/m68k-pic-coff&lt;blockquote&gt;&lt;br /&gt;     mv /opt/uClinux/m68k-pic-coff/bin/ld /opt/uClinux/m68k-pic-coff/bin/gld&lt;br /&gt;      install -m 755 coff2flt /opt/uClinux/m68k-pic-coff/bin&lt;br /&gt;      cp ld /opt/uClinux/m68k-pic-coff/bin&lt;br /&gt;      chmod 755 /opt/uClinux/m68k-pic-coff/bin/ld&lt;/blockquote&gt;&lt;br /&gt;&lt;h2&gt;Стандартная Библиотека C&lt;br /&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/libraries/uC-libc-310899.tar.gz&quot;&gt;uC-libc-310899.tar.gz&lt;/a&gt; (233KB)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;При компиляции бинарников пользовательского пространства используются две библиотеки. Это стандартная библитека С и стандартная математическая библиотека. Это статические библиотеки, которые линукются во время компиляции.&lt;br /&gt;&lt;br /&gt;Стандартная С библиотека uC всегда имела беду с ошибками. В частности они имеют плохую манеру утечки памяти из-за их функций выделения памяти. Некоторые индивидуумы имеют патчи для malloc функций, которые можно вручную применить и собрать.&lt;br /&gt;&lt;br /&gt;uC-libc испытавает очень радикальные изменения в данный момент. Эти экспериментальные изменения доступны через uClinux CVS хранилище. Стабильная библиотека должна быть доступна скоро, она заменит старые версии uC-libc и предоставит наиболее стабильную платформу. На позитивной ноте, должен сказать, что математическая библиотека имеет маленькие проблемы.&lt;br /&gt;&lt;br /&gt;Извлекаем тарбол uC-libc в /opt/uClinux&lt;blockquote&gt;&lt;br /&gt; tar -xzf uC-libc-310899.tar.gz&lt;/blockquote&gt;&lt;br /&gt;Библиотека uC-libc имеет две символические ссылки (include/linux и include/net), которые должны указывать на хэдеры ядра uClinux. Эти ссылки требуют, чтобы директория linux находилась в том же дереве, что и директория uC-libc. Если одной не существует из-за различных мест инсталляции, Вы можете создать ссылку.&lt;br /&gt;&lt;br /&gt;Библиотека uC-libc в нынешнем состоянии не имеет функций setjmp и longjmp, которые позже потребуются sh. Простейший путь поправить это, переместить uC-libc/machine/setjmp.S в uC-libc/sysdeps/ и включить это (setjmp.o) в &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;uC-libc/sysdeps/makefile.objs&lt;/span&gt;&lt;blockquote&gt;&lt;br /&gt; cd uC-libc&lt;br /&gt; make&lt;/blockquote&gt;&lt;br /&gt;Если Вы получите сообщения об ошибках о пропавших файлах(скорее всего в директориях asm, linux или net) такую как &quot;/asm/types.h - No such file or directory,&quot; тогда проверьте сконфигурировали ли Вы ядро (/include/asm ссылки на месте) и что здесь находятся исходный код ядра linux и ссылка на linux в той же директории что и uC-libc оба.&lt;br /&gt;&lt;br /&gt;make скомпилирует библиотеку uC-libc (libc.a) и оставит ее в директории uClibc. Теперь мы должны сделать ее доступной для средств m68k-pic-coff. Каждая ссылка может быть создана, а файлы скопированы&lt;blockquote&gt;&lt;br /&gt; cp libc.a /opt/uClinux/m68k-pic-coff/lib/libc.a&lt;br /&gt; cp crt0.o /opt/uClinux/m68k-pic-coff/lib/crt0.o&lt;/blockquote&gt;&lt;br /&gt;Хэдеры также должны быть доступны. Chaintool уже поместил assert.h в /opt/uClinux/m68k-pic-coff/include, поэтому можно переименовать текущую директорию&lt;blockquote&gt;&lt;br /&gt; mv /opt/uClinux/m68k-pic-coff/include /opt/uClinux/m68k-pic-coff/include.old&lt;br /&gt; ln -sf include /opt/uClinux/m68k-pic-coff/include&lt;/blockquote&gt;&lt;br /&gt;&lt;h2&gt;Стандартные математические библиотеки&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/uC-libm-0.9.1.tar.gz&quot;&gt;uC-libm-0.9.1.tar.gz&lt;/a&gt; (101KB)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Стандартные математические библиотеки не такие проблематичные как С библиотеки. Просто извлеките их в /opt/uClinux и соберите&lt;blockquote&gt;&lt;br /&gt; tar -xzf uC-libm-0.9.1.tar.gz&lt;br /&gt; cd uC-libm&lt;br /&gt; make&lt;/blockquote&gt;&lt;br /&gt;затем создайте ссылки в m68k-pic-coff/lib для указания на библиотечные файлы и хэдеры. Эти хэдеры будут обычно находится по их пути в директорию uC-libc/include символической ссылкой.&lt;blockquote&gt;&lt;br /&gt; ln -f libmf.a /opt/uClinux/m68k-pic-coff/lib/libmf.a&lt;br /&gt; ln -f libmf.a /opt/uClinux/m68k-pic-coff/lib/libm.a&lt;br /&gt; ln -f mathf.h /opt/uClinux/m68k-pic-coff/include/mathf.h&lt;br /&gt; ln -f mathf.h /opt/uClinux/m68k-pic-coff/include/math.h&lt;/blockquote&gt;&lt;br /&gt;&lt;h2&gt;genromfs - ROM FileSystem Generation Utility&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/genromfs-0.3.tar.gz&quot;&gt;genromfs-0.3.tar.gz&lt;/a&gt; (17KB)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/genromfs-0.3.diff.gz&quot;&gt;genromfs-0.3.diff.gz&lt;/a&gt; (1KB) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Genromfs генерирует ФС с постоянной памятью (&lt;span style=&quot;font-style: italic;&quot;&gt;ROM Filesystem&lt;/span&gt;). Извлеките, пропатчите и соберите так:&lt;blockquote&gt;&lt;br /&gt;      tar -xzf genromfs-0.3.tar.gz&lt;br /&gt;      gzip -d genromfs-0.3.diff.gz&lt;br /&gt;&lt;br /&gt;      cd genromfs-0.3&lt;br /&gt;      patch -p1 &amp;lt;../genromfs-0.3.diff&lt;br /&gt;      make&lt;br /&gt;      make install&lt;/blockquote&gt;&lt;br /&gt;make install инсталирует genromfs в /usr/bin + положит свою документацию в usr/man/man8  Genromfs теперь может быть вызвана из коммандной строки для генерации своей romfs.&lt;blockquote&gt;&lt;br /&gt;       genromfs -v -V &quot;ROM Disk&quot; -f romdisk.img -d romdisk 2&amp;gt; romdisk.map&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Genromfs имеет несколько багов относительно нодов устройства (&lt;span style=&quot;font-style: italic;&quot;&gt;device nodes&lt;/span&gt;). Если Ваша romfs не корректна, ядро сообщит об этом (can&#39;t open the device node) и тогда запаникует (&lt;span style=&quot;font-style: italic;&quot;&gt;panics&lt;/span&gt;). Чаще всего полезней монтировать Вашу снова сгенерированную romfs чтобы посмотреть все ли корректно. Делается это так:&lt;blockquote&gt;&lt;br /&gt;    mount -r -o loop -t romfs romdisk.img /mnt/romfs&lt;/blockquote&gt;&lt;br /&gt;&lt;h2&gt;Диск с ROM ФС и бинарники пользовательского пространства&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/romdisk-0.9.1.tar.gz&quot;&gt;romdisk-0.9.1.tar.gz&lt;/a&gt; (184KB) &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/uC-src-0.9.1.tar.gz&quot;&gt;uC-src-0.9.1.tar.gz&lt;/a&gt; (526KB) &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/deftemplate.sh&quot;&gt;deftemplate.sh&lt;/a&gt; (1KB) &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.uclinux.org/pub/uClinux/misc/CD-130999/buildenv.sh&quot;&gt;buildenv.sh&lt;/a&gt; (1KB) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Диск с постоянной памятью (romdisk-0.9.1.tar.gz) - сжатый тарбол, который содержит ноды устройства (&lt;span style=&quot;font-style: italic;&quot;&gt;device nodes&lt;/span&gt;). В итоге файл должен быть распакован (от root&#39;а) в /opt/uClinux&lt;blockquote&gt;&lt;br /&gt;    tar -xzf romdisk-0.9.1.tar.gz&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Диски romdisk образуют базис ФС встаиваемых (&lt;span style=&quot;font-style: italic;&quot;&gt;embedded&lt;/span&gt;) систем. Утслита genromfs создаст romfs.img из данного дерева, таким образом любые изменения в дереве будут отображены в ФС uClinux. Диск romdisk имеет следующие директории и файлы:&lt;blockquote&gt;&lt;br /&gt;    bin  dev  etc  htdocs  lib  proc  ramfs.img  sbin  tmp  usr  var&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Вы заметите, что при входе в каталог bin предварительно скомпилированные бинарники будут видны. Их исходные коды устанавливаются так:&lt;blockquote&gt;&lt;br /&gt;    tar -xzf uC-src-0.9.2.tar.gz&lt;br /&gt;    cd src&lt;br /&gt;    make&lt;/blockquote&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Если Вы испытываете проблемы со сборкой из sh - неопределенный указатель на &#39;setjmp&#39; или &#39;longjmp&#39;, проверьте включили ли Вы setjmp.S в сборку uC-libc.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Запуск make соберет все исходные коды перечисленные в &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;SUBDIR&lt;/span&gt; определенные Makefile. Поэтому если вы добавляете экстра код сюда, то должны влкючить их в Makefile. По завершении процедуры сборки, бинарники будут в находится в директориях src/bin. Скрипт deftemplate.sh скопирует необходимые бинарники из /src в /romdisk/bin или sbin.&lt;blockquote&gt;&lt;br /&gt;    cp deftemplate.sh /opt/uClinux/&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Нужен еще последний файл. buildenv.sh установит среду сборки из чистой директории, копируя необходимый код устанавливая Makefile. Скопируйте buildenv.sh в /opt/uClinux/bin и создайте ссылку на /usr/bin.&lt;blockquote&gt;&lt;br /&gt;    cp buildenv.sh /opt/uClinux/bin/&lt;br /&gt;    ln /opt/uClinux/bin/buildenv.sh /usr/bin/buildenv&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;и всё. Теперь если Вы создадите пустую директорию где-либо и введете buildenv, таинственно появится Makefile. Затем введите make, чтобы увидеть исходные коды пространства пользователя, romdisk etc копируется поверх и соберется.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;PIC32 патч - 32-битный PIC патч для m68k-pic-coff 2.7.2.3&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://home.at/uclinux/pic32/gcc-2.7.2.3-pic-32bit.diff&quot;&gt;gcc-2.7.2.3-pic-32bit.diff&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://home.at/uclinux/pic32/crt0.S&quot;&gt;crt0.S&lt;/a&gt;&lt;/li&gt;&lt;li&gt;или . . . &lt;a href=&quot;ftp://ftp.beyondlogic.org/uClinux/gcc-2.7.2.3-pic-32bit.tar.gz&quot;&gt;gcc-2.7.2.3-pic-32bit.tar.gz&lt;/a&gt;  (Gzip архив двух файлов выше)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;С текущим компилятором m68k-pic-coff, будет ограничение на сборку исполняемого кода размером свыше 32k. Размер исходит из использования 16-битного знакового сдвига. Эрвин Отрайд (&lt;span style=&quot;font-style: italic;&quot;&gt;Erwin Authried&lt;/span&gt;) выпустил некоторые патчи для m68k-pic-coff-gcc для генерации 32-битных сдвигов, которые снимают эти ограничения. Код может ббыть собран нормально с 16-битными сдвигами без указания дополнительных специфик. Если Ваша программа превышает 32k, тогда можно вызвать компилятор с флагами -fPIC, которые генерируют 32-битные сдвиги.&lt;br /&gt;&lt;br /&gt;Код скомпилированный с -fPIC больше размером. В дополнении к патчу компилятора, нужен новый файл запуска C (&lt;span style=&quot;font-style: italic;&quot;&gt;C startup file, crt0.S&lt;/span&gt;). Он дожен быть скомпилирован и добавлен в m68k-pic-coff/lib. Файл запуска не содержит функции &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;_cleanup()&lt;/span&gt;, поэтому должен быть включЕн из другого места.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Отладка&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.gnu.org/gnu/gdb/gdb-4.18.tar.gz&quot;&gt;gdb-4.18.tar.gz&lt;/a&gt; (11.3MB)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;ftp://ftp.beyondlogic.org/uClinux/gdb-4.18-gdbserver.diff.gz&quot;&gt;gdb-4.18-gdbserver.diff.gz&lt;/a&gt; (2KB)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Отладка является необязательным дополнением для &quot;башковитых&quot; uClinux программистов. Состоит она из двух компонентов: gdb-4.18, запускаемый на хост машине, сконфигурированной для m68k-coff, и gdbserver, запускаемый на uClinux платформе. Вместе они общаются через сеть (IP). Пока gdb клиент компилирует с небольшими усилиями, gdb сервер нуждается не только в пропатчивании, но также из библиотеки uClibc, библиотеке отладки uClibc и поддержку из ядра uClinux - но это еще не всё.&lt;br /&gt;&lt;br /&gt;gdbserver требует прерывание в ядре uClinux для работы. Хорошие новости в том, что это было включено в поздние ядра, и поэтому не требует внимания. Ядро uClinux-2.0.38.1pre7, описанное здесь, уже имеет эту поддержку.&lt;br /&gt;&lt;br /&gt;Скачайте и распакуйте gdb-4.18&lt;blockquote&gt;&lt;br /&gt;    tar -xzf gdb-4.18.tar.gz&lt;br /&gt;    gzip -d gdb-4.18-gdbserver.diff.gz&lt;br /&gt;    cd gdb-4.18&lt;br /&gt;    patch -p1 &amp;lt;../gdb-4.18-gdbserver.diff&lt;/blockquote&gt;&lt;br /&gt;Сконфигурируйте gdb клиент запустив на хосте для отладки m68k-coff кода и соберите&lt;blockquote&gt;&lt;br /&gt;      ./configure --target=m68k-unknown-coff&lt;br /&gt;      make&lt;/blockquote&gt;&lt;br /&gt;Для сборки gdbserver потребуются некоторые дополнительные фкнкции, которых нет в стандартной библиотеке uC-Libc. Исходный код есть в библиотеке, но не задан для сборки по дефолту. Зайдем в /uC-libc/sysdeps/m68k и отредактируем &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;ptrace.c&lt;/span&gt; так чтобы путь к ptrace.h был корректен. Заменим &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;#include &amp;lt;sys/ptrace.h&amp;gt;&lt;/span&gt; на &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;#include&amp;lt;linux/ptrace.h&amp;gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Теперь добавим исходный код для сборки, редактируя &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;/uC-libc/sysdeps/makefile.objs&lt;/span&gt; добавив &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;m68k/ptrace.o&lt;/span&gt; в конец списка OBJS, чтобы это смотрелось так&lt;blockquote&gt;&lt;br /&gt;    waitpid.o \&lt;br /&gt;    write.o \&lt;br /&gt;    m68k/ptrace.o&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Затем пересоберем библиотеку uC-libc и довавим новый libc.a в /m68k-pic-coff/lib&lt;blockquote&gt;&lt;br /&gt;    cd gdb-4.18/gdb/gdbserver&lt;br /&gt;    ../../configure --target=m68k-linux-coff&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Затем отредактируем Makefile, изменив CC = gcc на CC = m68k-pic-coff-gcc&lt;blockquote&gt;&lt;br /&gt;    make gdbserver&lt;br /&gt;    coff2flt -s 32768 -o gdbserver gdbserver.coff&lt;/blockquote&gt;&lt;br /&gt;Запуская &lt;span style=&quot;color: rgb(51, 0, 153);&quot;&gt;make&lt;/span&gt;, Вы создаете плоский flat бинарный код gdbserver&#39;а, размер стэка которого по умолчанию составляет около 4k. В результате gdbserver может рухнуть или отказать при соединении. Поэтому рекомендуется линковать с размером стэка в 32k&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;CVS – Concurrent Version System&lt;/h2&gt;Хранилище uClinux доступно на &lt;a href=&quot;http://cvs.uclinux.org/&quot;&gt;http://cvs.uclinux.org&lt;/a&gt;. Отсюда можно отслеживать обновления исходного кода и смотреть какие изменения были сделаны и зачем.&lt;br /&gt;&lt;br /&gt;Если вы хотите скачать полную версию исходных кодов, тогда это может быть сделано регистрацией в CVS используя CVS клиент. uClinux предоставляет анонимный доступ только для чтения к своему хранилищу.&lt;br /&gt;&lt;br /&gt;Чтобы начать, Вы должны зарегистрироваться. Используйте следующую комманду:&lt;blockquote&gt;&lt;br /&gt;    echo anonymous &amp;gt; cvs –d:pserver:anonymous@cvs.uclinux.org:/var/cvs login&lt;/blockquote&gt;&lt;br /&gt;Тем сымым Вы войдете в CVS хранилище, используя имя anonymous и пароль anonymous.&lt;blockquote&gt;&lt;br /&gt;    cvs –z3 –d:pserver:anonymous@cvs.uclinux.org:/var/cvs co –P &amp;lt;dir&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;где &amp;lt;dir&amp;gt; - одна из актуальных директорий,&lt;blockquote&gt;&lt;br /&gt;    uClibc  The uClinux Userland C Library&lt;br /&gt;    uClinux-2.0.x 2.0.38 uClinux Kernel&lt;br /&gt;    uClinux-2.4.x 2.4.0 uClinux Kernel&lt;br /&gt;    userland  uClinux Userland Binaries&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Используется спецификатор -z3 для сжатия. Это максимальное сжатие. co необходимо для прекращения связи, -P конкретизирует отсеченные директории (убирает пустые директории).&lt;br /&gt;&lt;br /&gt;Позже можно обновить исходные коды используя следующую комманду команду в соответствующей директории&lt;blockquote&gt;&lt;br /&gt;    cvs -z3 update -d -P&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Ссылки:&lt;br /&gt;&lt;a href=&quot;http://gcc.gnu.org/&quot;&gt;GNU GCC&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.linux.org/&quot;&gt;Linux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/%CE%9CClinux&quot;&gt;wiki: uClinux&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Binary_file&quot;&gt;wiki: binary file&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/6747129080533477182/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/6747129080533477182' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6747129080533477182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6747129080533477182'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/07/uclinux.html' title='uClinux - установка среды программирования'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-8725990131332025746</id><published>2008-07-30T16:12:00.004+04:00</published><updated>2008-07-31T01:12:31.542+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="embedded"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><title type='text'>&quot;Проблемы&quot; Встраиваемых Систем GNU/Linux</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;br /&gt;Встраиваемые системы обычно:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;малые аппараты: сетевые устройства, карманные компьютеры, телефоны и т.д.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;не х86(arm, armel, ..), без MMU, без дисковые&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&quot;Проблемы&quot;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Малое финансирование во встаиваемые системы Linux, обычно со стороны вендоров аппаратного/программного обеспечения&lt;/li&gt;&lt;li&gt;Нехватка разработчиков на kernel.org, опять же, обычно вовлечены разработчики вендоров аппаратных/программных средств(коммерческие)&lt;/li&gt;&lt;li&gt;Во многих встраиваемых устройствах используется одна версия ядра в полном жизненном цикле продукта&lt;br/&gt;&lt;small&gt;(обычно производится только кастомизация ядра и поставка)&lt;/small&gt;&lt;/li&gt;&lt;li&gt;Своевременность и выпуски плотны&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Технологии:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Динамические тики, hr-таймеры&lt;/li&gt;&lt;li&gt;DVB&lt;/li&gt;&lt;li&gt;улучшение NoMMU&lt;/li&gt;&lt;li&gt;Новые архитектуры: FRV, avr32, blackfin&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Ядро:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;kevent: оперативная унифицированная доставка сообщений&lt;li&gt;&lt;li&gt;utrace: перепись кода трассировки процессов&lt;li&gt;&lt;li&gt;syslets/fibrils: асинхронные вызовы, AIO&lt;li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;br /&gt;Welcome to Linux Kernel Development &lt;a href=&quot;http://www.linux.org/&quot;&gt;http://www.linux.org/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/8725990131332025746/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/8725990131332025746' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/8725990131332025746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/8725990131332025746'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/07/gnulinux.html' title='&quot;Проблемы&quot; Встраиваемых Систем GNU/Linux'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-7534185937263675602</id><published>2008-07-01T15:40:00.004+04:00</published><updated>2008-07-09T15:14:22.505+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C"/><category scheme="http://www.blogger.com/atom/ns#" term="IPC"/><category scheme="http://www.blogger.com/atom/ns#" term="posix"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><category scheme="http://www.blogger.com/atom/ns#" term="процессы"/><category scheme="http://www.blogger.com/atom/ns#" term="сигналы"/><category scheme="http://www.blogger.com/atom/ns#" term="стандарты"/><category scheme="http://www.blogger.com/atom/ns#" term="файлы"/><title type='text'>Стандарты и концепты системного програмирования в UNIX</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;blockquote&gt;Определение понятий - это начало ссылок.&lt;br /&gt;Сократ&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;Ключевые моменты в современном UNIX программировании:&lt;br /&gt;системные вызовы (&lt;a href=&quot;http://en.wikipedia.org/wiki/System_call&quot;&gt;syscalls&lt;/a&gt;), библиотека C (&lt;a href=&quot;http://www.gnu.org/software/libc/&quot;&gt;glibc&lt;/a&gt;), коллекция компиляторов (&lt;a href=&quot;http://www.gnu.org/software/gcc/&quot;&gt;gcc&lt;/a&gt;), программные интерфейсы (&lt;a href=&quot;http://en.wikipedia.org/wiki/API&quot;&gt;APIs&lt;/a&gt;), бинарные интерфейсы (&lt;a href=&quot;http://en.wikipedia.org/wiki/ABI&quot;&gt;ABIs&lt;/a&gt;), ..&lt;span style=&quot;font-size:85%;&quot;&gt;[добавить нужное]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;== стандарты: POSIX, SUS, C ==&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:85%;&quot; &gt;UNIX стандарты.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Системное программирование в UNIX - древнее искусство. За 39 лет здесь не обошлось без хаоса и UNIX войн(расхождение линий AT&amp;amp;T и Berkley University в 1979, лишение прав компании Bell в 1984). Чтобы предотвратить хаос, группы выявления стандартов описали системные интерфейсы в официальных стандартах.&lt;br /&gt;POSIX и SUS являются стандартами C API интерфейсов UNIX-подобных ОС.&lt;br /&gt;В 1985 группа IEEE начала работать над стандартизацией интерфейсов системного уровня UNIX систем. Ричард Столлман (RMS) предложил название для даного стандарта: POSIX [произношение pahz-icks, как позитив]. Первый вариант POSIX появился в 1988: IEEE Std 1003.1-1998. (ISO, IEC приняли эти стандарты как ISO/IEC 9945). Версии стандартов описаны &lt;a href=&quot;http://en.wikipedia.org/wiki/POSIX#Versions&quot;&gt;здесь&lt;/a&gt;.&lt;br /&gt;The Open Group (объединение X/Open и OSF) также принимали участие в разработке стандартов для UNIX. Их главный труд Single UNIX Specification (SUS) (1994). Сегодня SUSv3(UNIX 03, 2002) включен в POSIX (IEEE Std 1003.1-2001).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:85%;&quot; &gt;C стандарты.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;История раннего С описана в статье Д. М. Ритчи &quot;&lt;a href=&quot;http://cm.bell-labs.com/cm/cs/who/dmr/chist.html&quot;&gt;The Development of the C Language, 1993&lt;/a&gt;&quot;.&lt;pic&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://cm.bell-labs.com/cm/cs/who/dmr/dmr.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;&quot; src=&quot;http://cm.bell-labs.com/cm/cs/who/dmr/dmr.gif&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/pic&gt;Опубликованная впервые в 1978 году книга  Денниса Ритчи и Брайана Кернигана &quot;The C Programming Language&quot; (&quot;белая книга&quot;) стала неформальным стандартом языка, известным как &lt;a href=&quot;http://www.cs.bell-labs.com/cs/cbook/index.html&quot;&gt;K&amp;amp;R C&lt;/a&gt;, или classic C (классический С). В 1983 году ANSI сформировал комитет (X3J11), целью которого была разработка стандарта официальной версии C (хотя реализация С для UNIX скорее становится стандартом де-факто) и включить некоторые особенности из нового языка C++. Процесс был длительным, стандарт был принят в 1989 году. В 1990 ISO приняло стандарт, основанный на ANSI C, с мелкими модификациями (добавлены литеры signed, void). В 1999 году ISO представило новый стандарт на C (ISO C99), в который были добавлены новые возможности: inline функции, типы (_Bool, _Complex, _Imaginary), комментарии в стиле C++, новые библиотеки функций.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;== концепты: файлы,  процессы,  сигналы, IPC ==&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:85%;&quot; &gt;Файлы&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;еще о файлах (начало &lt;a href=&quot;http://tuxedo-live.blogspot.com/2008/03/unix-bsd-linux-solaris-mach-hurd.html&quot; com=&quot;&quot; 2008=&quot;&quot; 03=&quot;&quot; html=&quot;&quot;&gt;здесь&lt;/a&gt;; &lt;span style=&quot;font-style: italic;&quot;&gt;ls([2,3])&lt;/span&gt;, stat.h)&lt;br /&gt;..прежде чем получить доступ к файлу для чтения, записи, обработки или др. он должен быть открыт. Открытый файл указывается через уникальный дескриптор, соответствующий метаданным, ассоциированным с самим файлом. Этот дескриптор обрабатывается целым числом (тип int в C) называемым дескриптором файла(&lt;span style=&quot;font-style: italic;&quot;&gt;file descriptor, fd&lt;/span&gt;). fd разделены с пространством пользователя (&lt;span style=&quot;font-style: italic;&quot;&gt;user space&lt;/span&gt;), и используются пользовательскими программами напрямую для доступа к файлу.&lt;br /&gt;Длина файлов ограничена (и только) размерами типов C (C types). Однако файловые системы(FS) могут накладывать свои ограничения, например, укрощать максимальную длину.&lt;br /&gt;Один файл может быть открыт не один раз, причем даже тем же процессом. Каждому открытому экземпляру файла присваивается уникальный дескриптор (файловый дескриптор). Процессы могут совместно использовать fd, позволяя единственному дескриптору использоваться более чем одним процессом.&lt;br /&gt;inode (&lt;span style=&quot;font-style: italic;&quot;&gt;information node&lt;/span&gt;) включает в себя метаданные ассоциированные с файлом, включая местоположение данных файла.&lt;br /&gt;C точки зрения безопасности доступ к файлу через inode обременителен, поэтому файлы обычно открывают из пространства пользователя (&lt;span style=&quot;font-style: italic;&quot;&gt;user space&lt;/span&gt;) по имени (не по номеру inode!). Имя (в человеко-читаемой форме) и inode файла образуют пару, называемую ссылкой (&lt;span style=&quot;font-style: italic;&quot;&gt;link&lt;/span&gt;).&lt;br /&gt;Когда ядро обращается к файлу оно проходит каждое вхождение директории (&lt;span style=&quot;font-style: italic;&quot;&gt;directory entry, dentry&lt;/span&gt;), начиная с /, то есть (для /home/va1e/unix.prog.01.st) сначала получает inode директории home, входит сюда, получает inode va1e, входит сюда, и, наконец, получает inode unix.prog.01.st. Эта операция называется развязкой пути (&lt;span style=&quot;font-style: italic;&quot;&gt;directory resolution&lt;/span&gt;). Для хранения результатов развязки (&lt;span style=&quot;font-style: italic;&quot;&gt;dir resolution&lt;/span&gt;) ядро использует кэш вхождений (&lt;span style=&quot;font-style: italic;&quot;&gt;dentry cache&lt;/span&gt;). Это позволяет быстро обращаться к файлам в будущем. Хотя и директории обрабатываются как обычные файлы, они должны управляться специальным набором системных вызовов.&lt;br /&gt;Специальные файлы - это объекты ядра. И они являются файлами в соответствии парадигмы &quot;всё - файл&quot;. Специальными файлами могут быть: файлы UNIX устройств (блочных устройств, символьных устройств [каждое устройство имеет свой файл]), именованные каналы (FIFO, механизм межпроцессорного взаимодействия [IPC]), UNIX сокеты (в отличие от IPC, сокеты позволяют взаимодействовать двум различным процессам не только на одной машине). Как и обычные файлы, специальные создаются путем системных вызовов.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Процессы&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Следующим за файлами по значимости в UNIX идут процессы.&lt;br /&gt;Процесс - это запущенный объектный код. Пример: запущенная в своем адресном пространстве программа. Процесс начинает свою жизнь с запуска объектного кода в исполняемом формате, который содержит метаданные, куски кода, загружаемые в память(например, инициализированные переменные С) и данные. Процесс также связан с системными ресурсами(аппаратное обеспечение, сетевые соединения, таймеры, сигналы, открытые файлы, механизмы межпроцессорного взаимодействия), которые управляются ядром; процесс работает с ресурсами только через системные вызовы. Ресурсы, их данные, записываются в &lt;span style=&quot;font-style: italic;&quot;&gt;дескриптор процесса&lt;/span&gt; внутри ядра.&lt;br /&gt;Каждый процесс состоит из одной или нескольких нитей (&lt;span style=&quot;font-style: italic;&quot;&gt;threads&lt;/span&gt;), или единицы активности в процессе, которая отвечает за состояние процесса. Нить состоит из стэка (структуры данных), состояния процессора, и текущего размещения в объектном коде.&lt;br /&gt;Каждый процесс обозначется уникальным целым числом - идентификатором процессы (&lt;span style=&quot;font-style: italic;&quot;&gt;process ID, PID&lt;/span&gt;) [&lt;span style=&quot;font-style: italic;&quot;&gt;ps(1)&lt;/span&gt;]. Дерево процессов(&lt;span style=&quot;font-style: italic;&quot;&gt;process tree&lt;/span&gt;) начинается с первого процесса &lt;span style=&quot;font-style: italic;&quot;&gt;init(8)&lt;/span&gt; [man 8 init]. Новый процесс создается системным вызовом &lt;span style=&quot;font-style: italic;&quot;&gt;fork()&lt;/span&gt;, который создает копию вызываемого процесса. Оригинальный процесс называется родительским (&lt;span style=&quot;font-style: italic;&quot;&gt;parent&lt;/span&gt;), новый - наследованным (&lt;span style=&quot;font-style: italic;&quot;&gt;child&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Сигналы&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Сигналы (&lt;span style=&quot;font-style: italic;&quot;&gt;Signals&lt;/span&gt;) - это механизм односторонней передачи асинхронных сообщений. Сигнал может быть послан от ядра к процессу, от одного процесса другому. Обычно сигнал сообщает процессу о событии, например, аварийное завершение, или нажатие пользователем клавиш C-c. Число сигналов ограничено архитектурой. Каждый из них представлен числовой константой и именем. Например, SIGHUP (signal hangup) имеет значение 1 на x86 архитектуре.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;IPC&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Одной из важнейших работ ОС является возможность обмена информацией между процессами и предупреждение их о различных событиях(IPC). Многие механазмы IPC описаны в UNIX стандартах, указанных выше.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Список литературы:&lt;br /&gt;1. &lt;a href=&quot;http://www.unix.org/version3/&quot;&gt;SUSv3&lt;/a&gt; [http://www.unix.org/version3/]&lt;br /&gt;2. Стивен Прата. Язык программирования С. Лекции и упражнения. 2006, Вильямс&lt;br /&gt;3. D. Lewine. POSIX Programmer&#39;s Guide: Writing Portable UNIX Programs. 1992, O&#39;Reilly &amp;amp; Associates&lt;br /&gt;4. R. Love. Linux System Pogramming. 2007, O&#39;Reilly.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/7534185937263675602/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/7534185937263675602' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/7534185937263675602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/7534185937263675602'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/07/unix.html' title='Стандарты и концепты системного програмирования в UNIX'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-9028529885130466775</id><published>2008-03-27T20:00:00.010+03:00</published><updated>2008-04-11T22:16:11.925+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><category scheme="http://www.blogger.com/atom/ns#" term="открытое ПО"/><category scheme="http://www.blogger.com/atom/ns#" term="программирование"/><title type='text'>Особенности файловой системы UNIX (BSD, Linux, Solaris, Mach, Hurd, Plan9)</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;dropcaps&quot;&gt;В&lt;/span&gt;се, что ни есть в системе UNIX, - это файл. Файл - это последовательность байтов (1 байт = 8 бит = 1 символ). Магнитные ленты, почтовые сообщения, символы, вводимые с клавиатуры, вывод принтера, поток данных в программном канале - каждый из этих файлов представляет собой последовательность байтов по отношению к системе и ее программам.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Что в файле?&lt;/li&gt;&lt;li&gt;Каталоги и имена файлов&lt;/li&gt;&lt;li&gt;Права доступа&lt;/li&gt;&lt;li&gt;Команды&lt;/li&gt;&lt;li&gt;Иерархия файловой системы&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Что в файле?&lt;/span&gt;&lt;br /&gt;Расширение имени файлов не имеет значения для типа файла.&lt;br /&gt;Команда &lt;span style=&quot;font-style: italic;&quot;&gt;file&lt;/span&gt; делает предположение о типе файла.&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;file /bin /bin/ed /usr/src/cmd/ed.c&lt;/span&gt;&lt;br /&gt;/bin: directory&lt;br /&gt;/bin/ed pure executable&lt;br /&gt;/usr/src/cmd/ed.c c program text&lt;/blockquote&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;file&lt;/span&gt; читает несколько сотен байт и ищет в них ключевые последовательности символов&lt;br /&gt;например исполняемая программа начинается с &quot;магического числа&quot; в двоичном представлении. Команда &lt;span style=&quot;font-style: italic;&quot;&gt;od&lt;/span&gt; без параметров выводит дамп файла 16-битными порциями, позволяя увидеть это &quot;магическое число&quot;&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;od /bin/ed&lt;/span&gt;&lt;br /&gt;000000 000410 025000 000462 011444 000000 000000 000000 000001&lt;br /&gt;000020 170011 016600 000002 005060 017776 010600 162706 000004&lt;br /&gt;..&lt;/blockquote&gt;&lt;br /&gt;Восьмиричное значение 410 означает обычную исполняемыю программу. Заметим, что 410 не соответствует никакой ASCII-символ.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Каталоги и имена файлов&lt;/span&gt;&lt;br /&gt;Все принадлежащие пользователю файлы имеют имена, начинающиеся с &lt;span style=&quot;font-style: italic;&quot;&gt;/usr/login&lt;/span&gt;, где &lt;span style=&quot;font-style: italic;&quot;&gt;login&lt;/span&gt; - имя вашей учетной записи, регистрационный каталог, чтобы просмотреть находящиеся здесь файлы введите &lt;span style=&quot;font-style: italic;&quot;&gt;cd&lt;/span&gt;(перенесет Вас в домашнюю директорию, если Вы еще не там); &lt;span style=&quot;font-style: italic;&quot;&gt;ls(1)&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;сd; ls&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;команда &lt;span style=&quot;font-style: italic;&quot;&gt;pwd&lt;/span&gt; выведет имя текущего каталога&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;pwd&lt;/span&gt;&lt;br /&gt;/usr/login&lt;/blockquote&gt;&lt;br /&gt;В именнах файлов важен регистр букв, File и file - разные файлы&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Права доступа&lt;/span&gt;&lt;br /&gt;Команда &lt;span style=&quot;font-style: italic;&quot;&gt;ls&lt;/span&gt; запущенная с параметром -l, выводит, кроме основного содержания каталога, информацию о правах доступа.&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;ls -l /etc/passwd&lt;/span&gt;&lt;br /&gt;-rw-r--r-- 1 root 5115 Aug 30  10:40 /etc/passwd&lt;br /&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;ls -lg /etc/passwd&lt;/span&gt;&lt;br /&gt;-rw-r--r-- 1 adm 5115 Aug 30  10:40 /etc/passwd&lt;/blockquote&gt;&lt;br /&gt;В строке -rw-r--r-- представлены сведения о правах доступа к файлу, если бы это был каталог, то в первой позиции бы находился символ d.&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;ls -l /&lt;/span&gt;&lt;br /&gt;drwxr-xr-x   2 root root  4096 2008-03-25 11:42 bin&lt;/blockquote&gt;&lt;br /&gt;Следующие три символа показывают права владельца на чтение, запись и выполнение. &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;rw-&lt;/span&gt;r--r-- означает, что пользователь root(владелец файла) из группы adm может читать и писать, но не может выполнять этот файл. У исполняемого файла должен стоять символ &lt;span style=&quot;font-style: italic;&quot;&gt;x&lt;/span&gt; вместо прочерка &lt;span style=&quot;font-style: italic;&quot;&gt;-&lt;/span&gt;. Следующие три симола rw-&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;r--&lt;/span&gt;r-- показывают разрешения для группы adm, можно читать файл, но не более того. Последняя группа символов, также rw-r--&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;r--&lt;/span&gt; определяет права доступа для остальных - прочих пользователей системы. Таким образом только root может изменять регистрационную информацию, а всем остальным она доступна только для чтения.&lt;br /&gt;Команда &lt;span style=&quot;font-style: italic;&quot;&gt;chmod&lt;/span&gt; изменяет права доступа к файлу&lt;br /&gt;Восьмиричные значения образуются путем складывания 4 для чтения, 2 для записи, 1 для исполнения.&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;chmod 666 file&lt;/span&gt;&lt;br /&gt;дает право на чтение и запись файла &lt;span style=&quot;font-style: italic;&quot;&gt;file&lt;/span&gt; всем&lt;br /&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;chmod 700 command&lt;/span&gt;&lt;br /&gt;позволит читать, изменять, выполнять &lt;span style=&quot;font-style: italic;&quot;&gt;command&lt;/span&gt; только его владельцу&lt;/blockquote&gt;&lt;br /&gt;Отметим, что знак &lt;span style=&quot;font-style: italic; color: rgb(153, 0, 0);&quot;&gt;+&lt;/span&gt; (плюс) включает право доступа, а знак &lt;span style=&quot;font-style: italic; color: rgb(153, 0, 0);&quot;&gt;-&lt;/span&gt; (минус) - выключает.&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;chmod +x command&lt;/span&gt;&lt;br /&gt;позволит всем выполнять &lt;span style=&quot;font-style: italic;&quot;&gt;command&lt;/span&gt;&lt;br /&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;chmod -w file&lt;/span&gt;&lt;br /&gt;отменяет право на запись в файл &lt;span style=&quot;font-style: italic;&quot;&gt;file&lt;/span&gt; всех, включая владельца&lt;br /&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;chmod -w .&lt;/span&gt;&lt;br /&gt;запрещает право на запись в каталог, в котором мы находимся&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Команды&lt;/span&gt; - это программы, которые вызывает пользователь. Основные команды расположены в директории /bin, но также могут быть расположены в&lt;br /&gt;/usr/bin, чтобы не собирать мусор в /bin. Эти директории автоматически просматриваются командным интерпретатором (shell). UNIX имеет файловую систему компонованную в виде иерархии директорий.&lt;br /&gt;При входе в систему вы попадаете в домашнюю директорию. Для того, чтобы обратиться к файлу в другой директорий, например /usr/share/bin/filex, указываем полный путь (начинается с &#39;/&#39;, корневая директория всей файловой системы) с поддиректориями (usr, share, bin), то есть посылаем команду /usr/share/bin/filex&lt;br /&gt;Важные команды, которые могут &quot;играть&quot; с файлами: &lt;span style=&quot;font-style: italic;&quot;&gt;cp(1), mv(1), rm(1)&lt;/span&gt;, которые копируют, перемещают и удаляют файлы соответственно. Чтобы просмотреть содержание директорий используйте &lt;span style=&quot;font-style: italic;&quot;&gt;ls(1)&lt;/span&gt;, создание директории - &lt;span style=&quot;font-style: italic;&quot;&gt;mkdir(1)&lt;/span&gt;,&lt;br /&gt;удаление директории - &lt;span style=&quot;font-style: italic;&quot;&gt;rmdir(1)&lt;/span&gt; или &lt;span style=&quot;font-style: italic;&quot;&gt;rm(1)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;hier(7) - &lt;span style=&quot;font-weight: bold;&quot;&gt;иерархия файловой системы&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;monospace&gt;&lt;br /&gt;/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;корневая директория&lt;br /&gt;/dev/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;devices(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;главная консоль, tty(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tty*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;терминалы, tty(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;наборщик снимков&quot; cat(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rp*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;диски, rp, hp(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rrp*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;сырые&quot; диски, rp, hp(4)&lt;br /&gt;&lt;br /&gt;/bin/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;служебные программы, cf /usr/bin (1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ассемблер, cf /usr/lib/as2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;исполнительный компилятор C, cf /usr/lib/c[012]&lt;br /&gt;&lt;br /&gt;/lib/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;объектные библиотеки и подобные вещи, cf /usr/lib/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libc.a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;системные вызовы, стандартные ввод/вывод I/O, и т.п.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libm.a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;математические программы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libplot.a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;программы рисования, plot(3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libF77.a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;поддержка среды исполнения Фортрана&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libI77.a&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ввод/вывод Фортрана&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;второй &quot;проход&quot; ассемблера as(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c[012]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;проходы cc(1)&lt;br /&gt;&lt;br /&gt;/etc/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;важные данные и полезные средства сопровождения&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;passwd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;файл с паролями пользователей, passwd(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;group&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;файл с группами пользователей, group(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;motd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;сообщение дня, login(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mtab&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;таблица монтируемых устройств, mtab(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ddate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;сброс истории, dump(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ttys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;параметры терминала, ttys(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;getty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;часть login, getty(8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;init&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;отец всех процессов, init(8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell-программа для загрузки системы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cron&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;часовой демон, cron(8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mount&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mount(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wall&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wall(1)&lt;br /&gt;&lt;br /&gt;/tmp/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;временные файлы, обычно находятся на быстром устройстве, cf /usr/tmp/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;испольуемые ed(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ctm*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.. cc(1)&lt;br /&gt;&lt;br /&gt;/usr/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;универсальная директория, обычно монтируемая ФС&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adm/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;информация администратора&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wtmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;история входов в систему, utmp(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;messages&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;сообщения об ошибках устройств&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tracct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;наборщик снимков&quot; счет , troff(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vpacct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;подсчет строк, lpr(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bin/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;служебные программы, чтобы не засорять /bin/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmp/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;временные, чтобы не засорять /tmp/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stm*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;используется для sort(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;raster&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.. plot(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dict/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;список слов, словообразований и т.п.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;words набор основных слов, используются look(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spellhist&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;история для spell(1)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;games/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;игры&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bj&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;блэкджек&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hangman&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;виселица&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;quiz.k&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;что знает quiz(6)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;оглавление категории&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;africa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;страны и столицы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;include/стандартые #include файлы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;a.out.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;макет объектного файла, a.out(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stdio.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;стандартные ввод/вывод, stdio(3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;math.h    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sys/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;системные макеты, cf /usr/sys/h&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acct.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;счет процессов, acct(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;буфферы внутренней системы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lib/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;объектные библиотеки и т.п., чтобы не засорять /lib/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lint[12]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;подпроцессы lint(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;llib-lc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;холостое объявление для /lib/libc.a, используемое lint(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;llib-lm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.. /lib/libc.m&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atrun&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;планировщик at(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;struct/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;пути sruct(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmac/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;макросы для troff(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmac.an&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; макрос для man(7)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmac.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.. ms(7)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;шрифты для troff(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;R&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Times Roman&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Times Bold&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uucp/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;программы и данные uucp(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;L.sys&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;имена и числа, поступающие удаленно&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uucico&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;реальная копия программы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;suftab&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;таблица суффиксов для автоматического переноса слов, используемый troff(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;units&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; таблицы обмена для units(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eign&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;лист английских слов, игнорируемых ptx(1)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;man/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;первый том руководства, man(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;man0/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;основное&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;intro&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;вступление к тому1, ms(7) форматирование&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;шаблон для страниц руководства(manual pages)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;man1/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;раздел 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mount,1m&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat1/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;предварительные страницы man1/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mount.1m&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spool/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;замедленно исполняемые файлы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lpd/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lpr(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;присутствует когда построчно-печатающее устройство активно&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cf*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;копия распечатываемого файла, если нужно&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;df*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;файл управления демонами, lpd(8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tf*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;файл контроля резидетной памяти, пока lpr работает&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uucp/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;рабочие фалйы и область обработки для uucp(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LOGFILE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;суммарный журнал&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LOG.*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;журнал одной транзакции&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mail/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;почтовые ящики mail(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$uid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;почта пользователя $uid&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$uid.lock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;блокировочный файл, пока $uid принимает почту&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$wd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;рабочая директория пользователя, обычно по имени логина $wd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.profile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;окружение для sh(1), environ(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;calendar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;календарь пользователя, calendar(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;doc/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;статьи, обычно второй раздел руководства, в формате ms(7)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;руководство ассемблера&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;руководство C&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sys/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;системный код&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dev/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;драйверы устройств&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bio.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; общий код&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cat(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dh.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DH11, tty(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tty(4)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conf/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;железо-зависимый код&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mch.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;часть ассемблерного кода&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;генератор конфигураций&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;заголовочные(include) файлы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acct.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;acct(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stat.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stat(2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sys/    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;main.c&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pipe.c&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sysent.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;точки входа системы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&lt;br /&gt;/usr/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;src/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;исходные коды утилит и прочего&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmd/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;коды команд&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ассемблер&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;makefile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;способ сборки ассемблера&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;as1?.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;код pass1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ar.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;код ar(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;troff/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;код nroff и troff(1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nmake&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;makefile для nroff&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tmake&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;makefile для troff&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;font/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;код таблиц шрифтов, /usr/lib/font/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ftR.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Roman&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;term/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;таблицы характеристик терминала, /usr/lib/term/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tab300.c&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DASI 300&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libc/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;код функций в /lib/libc.a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crt/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C runtime support&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ldiv.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;division into a long&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lmul.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;multiplication to produce long&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;csu/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;запуск и &quot;покрытие&quot; программ нужных в каждой С программе&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crt0.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;обычный запуск&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mcrt0.s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;модифицированный запуск для cc -p&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sys/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;системные вызовы&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;access.s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alarm.s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stdio/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;функции стандартного ввода/вывода I/O&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fgets.c&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fopen.c&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gen/    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;abs.c&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atof.c    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;compall&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell процедура для компиляции libc&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mklib&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;shell процедура для сборки /lib/libc.a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libI77/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;коды /lib/libI77&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;libF77/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;games/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;исходные коды /usr/games/&lt;/monospace&gt;&lt;/code&gt;&lt;br /&gt;Также смотрите&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;ls(1), ncheck(1), find(1), grep(1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;В Linux также можно изучить иерархию каталогов в руководстве &lt;span style=&quot;font-style: italic;&quot;&gt;hier&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;man hier&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Если Вы начинаете осваивать сисему UNIX возможно Вам понадобится руководство &lt;span style=&quot;font-style: italic;&quot;&gt;intro(2)&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;~$ &lt;span style=&quot;font-style: italic;&quot;&gt;man 2 intro&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Литература:&lt;br /&gt;1. UNIX TIME-SHARING SYSTEM, UNIX Programmer&#39;s Manual, V7Vol1, January, 1979, Bell Labs Inc., B.W. Kernigan, M.D.&lt;br /&gt;McIlroy&lt;br /&gt;2. UNIX Programming Environment, The First Edition, 1984, B.W. Kernigan&lt;br /&gt;&lt;br /&gt;Также смотрите: &lt;a href=&quot;http://cb.vu/unixtoolbox.xhtml&quot;&gt;Unix Toolbox&lt;/a&gt; (&lt;a href=&quot;http://cb.vu/unixtoolbox.book.pdf&quot;&gt;pdf буклет&lt;/a&gt;)&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/9028529885130466775/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/9028529885130466775' title='Комментарии: 4'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/9028529885130466775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/9028529885130466775'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/03/unix-bsd-linux-solaris-mach-hurd.html' title='Особенности файловой системы UNIX (BSD, Linux, Solaris, Mach, Hurd, Plan9)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-3319427857020486135</id><published>2008-03-22T01:19:00.011+03:00</published><updated>2008-04-11T02:37:02.000+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="accounting"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="корпорация"/><category scheme="http://www.blogger.com/atom/ns#" term="открытое ПО"/><category scheme="http://www.blogger.com/atom/ns#" term="ресурсы"/><category scheme="http://www.blogger.com/atom/ns#" term="свободное ПО"/><category scheme="http://www.blogger.com/atom/ns#" term="учет"/><title type='text'>Accounting Software, ПО для Учета Торговли и Склада</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;dropcaps&quot;&gt;В&lt;/span&gt; этой статье рассмотрены два самых популярных решения учета. Это &lt;span style=&quot;font-weight: bold;&quot;&gt;Compiere&lt;/span&gt; и &lt;span style=&quot;font-weight: bold;&quot;&gt;Ананас&lt;/span&gt;. Вниманию приведено только&lt;span style=&quot;color: rgb(153, 0, 0);&quot;&gt;!&lt;/span&gt; &lt;a href=&quot;http://it-agenda.blogspot.com/2008/01/foss.html&quot;&gt;Свободное ПО&lt;/a&gt;. &lt;br/&gt;Читатель должен быть знаком с такими понятиями как &lt;a href=&quot;http://ru.wikipedia.org/wiki/ERP&quot;&gt;ERP&lt;/a&gt; &lt;span style=&quot;font-size:85%;&quot;&gt;[&lt;a href=&quot;http://en.wikipedia.org/wiki/Enterprise_resource_planning&quot;&gt;en&lt;/a&gt;]&lt;/span&gt;, &lt;a href=&quot;http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5%D0%BC_%D1%81_%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82%D0%B0%D0%BC%D0%B8&quot;&gt;CRM&lt;/a&gt; &lt;span style=&quot;font-size:85%;&quot;&gt;[&lt;a href=&quot;http://en.wikipedia.org/wiki/Customer_relationship_management&quot;&gt;en&lt;/a&gt;]&lt;/span&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Point_of_sale&quot;&gt;POS &lt;span style=&quot;font-size:85%;&quot;&gt;[en] only&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://ru.wikipedia.org/wiki/SaaS&quot;&gt;SaaS&lt;/a&gt; [&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Software_as_a_Service&quot;&gt;en&lt;/a&gt;&lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:180%;&quot; &gt;Compiere&lt;/span&gt; - ERP, CRM, POS бизнес решение для малых и средних предприятий, позиционирующих себя в сфере дистрибьюции и обслуживания.&lt;br /&gt;Исходные коды и сам пакет распространяются по свободной лицензии GNU GPL2.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Compiere&lt;/span&gt; охватывает ERP функциональности, но чтобы избежать дублирования информации, а также обеспечить синхронизацию, он организован модульно.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Модули:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;закупки (Quote-to-Cash)&lt;/li&gt;&lt;li&gt;продажи (Requisition-to-Pay)&lt;/li&gt;&lt;li&gt;управление отношениями с клиентами (Customer relationship management)&lt;/li&gt;&lt;li&gt;управление отношениями с партнерами (Partner Relations Management)&lt;/li&gt;&lt;li&gt;управление цепями поставок (Supply Chain Management)&lt;/li&gt;&lt;li&gt;анализ работы (Performance Analysis)&lt;/li&gt;&lt;li&gt;веб магазин (Web Store)&lt;/li&gt;&lt;li&gt;склад (Warehouse)&lt;/li&gt;&lt;li&gt;бухгалтерия (Double-entry book-keeping)&lt;/li&gt;&lt;li&gt;управление проектами (Project management)&lt;/li&gt;&lt;li&gt;управление трудозатратами (Work-flow-management)&lt;/li&gt;&lt;li&gt;Маркетинг (Marketing)&lt;/li&gt;&lt;/ul&gt;Модуль «Производство» (Manufacturing, — Resource Planning, Prod. Plan &amp;amp; DM, MPS, MRP, CRP, Manufacturing Orders &amp;amp; Repetitive) находится в разработке в рамках независимого проекта &lt;a href=&quot;http://sourceforge.net/projects/cmpcs/&quot;&gt;CMPCS&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Стуруктура&lt;/span&gt; - J2EE (Веб) (&lt;a href=&quot;http://www.compiere.com/products/product-demos/tour/web_ui_demo.htm&quot;&gt;Demo tour&lt;/a&gt;)&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;СУБД&lt;/span&gt; - PostgreSQL, MySQL, Oracle, Sybase&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Язык программирования&lt;/span&gt; - Java&lt;br /&gt;&lt;br /&gt;&lt;&lt;a href=&quot;http://www.compiere.com/&quot;&gt;WWW&lt;/a&gt; сайт&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;font-size:180%;&quot; &gt;Ананас&lt;/span&gt; - платформа новая, но весьма удобная и стабильная (не все возможности еще реализованы, но те что работают - действительно работают)&lt;br /&gt;&lt;br /&gt;Ананас является программной платформой автоматизации учета. Приложения, разработанные на платформе Ананас, позволяют автоматизировать:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ведение ежедневно необходимого учета: покупка, продажа, платежи через банк, кассовые операции;&lt;/li&gt;&lt;li&gt;получение управленческой информации: по товарным запасам в суммовом и количественном выражении, по расчетам с партнерами;&lt;/li&gt;&lt;li&gt;расчет остатков;&lt;/li&gt;&lt;li&gt;создание отчетов и печать документов;&lt;/li&gt;&lt;li&gt;создание документов на основании уже существующих;&lt;/li&gt;&lt;li&gt;управление торговым оборудованием.&lt;/li&gt;&lt;/ul&gt;Ананас доступен для пользователей Linux бесплатно без поддержки для установки на любое количество рабочих мест.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Структура&lt;/span&gt; - Автономное (Stand alone)&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;СУБД&lt;/span&gt; - MySQL, PostgreSQL&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Языки программирования&lt;/span&gt; - JavaScript,  C++&lt;br /&gt;&lt;br /&gt;В проекте используется кросплатформенная библиотека QT.&lt;br /&gt;Для написания бизнес-схем (приложений) используется скриптовый язык стандарта ECMA-Script (он же JavaScript)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Приложения платформы Ананас&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&quot;Оперативный учет&quot;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ведение ежедневно необходимого учета: покупка, продажа, платежи через банк, кассовые операции;&lt;/li&gt;&lt;li&gt;получение управленческой информации: по товарным запасам в суммовом и количественном выражении, по расчетам с партнерами;&lt;/li&gt;&lt;li&gt;автоматический расчет остатков;&lt;/li&gt;&lt;li&gt;генерация отчетов и печать документов;&lt;/li&gt;&lt;li&gt;создание документов на основании уже существующих.&lt;/li&gt;&lt;/ul&gt;Руководство пользователя приложения &quot;Оперативный учет&quot; на &lt;a href=&quot;http://ananas.lrn.ru/phpBB2/viewforum.php?f=11&quot;&gt;форуме&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&quot;Учет транспортных услуг (логистика)&quot;&lt;/span&gt;&lt;br /&gt;&quot;Учет транспортных услуг&quot; является приложением платформы Ананас. Автор - Дмитрий Кругликов. Приложение позволяет вести учет поступления заявок и реализации услуг, получать данные о состоянии заявок на любую дату.&lt;br /&gt;Просматривать движение услуг в требуемые промежутки времени,в разрезе требуемых контрагентов.&lt;br /&gt;Руководство пользователя приложения &quot;Учет транспортных услуг&quot; на &lt;a href=&quot;http://ananas.lrn.ru/phpBB2/viewforum.php?f=10&quot;&gt;форуме&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&quot;Бухгалтерский учет&quot;&lt;/span&gt;&lt;br /&gt;Приложение находится в стадии разработки.&lt;br /&gt;Раздел по бизнес схеме &quot;Бухгалтерский учет&quot;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;Спутник. Учет заявок&lt;/span&gt;&lt;br /&gt;Приложение предназначено для учета заявок на подключение спутникового оборудования и пополнения баланса учетных записей спутникового интернета.&lt;br /&gt;Руководство пользователя приложения &quot;Спутник. Учет заявок&quot; на &lt;a href=&quot;http://ananas.lrn.ru/phpBB2/viewforum.php?f=17&quot;&gt;форуме&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;&lt;a href=&quot;http://ananas.lrn.ru/&quot;&gt;WWW&lt;/a&gt; сайт&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;&lt;br /&gt;Также стоит посмотреть следующие пакеты:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(102, 0, 0); font-weight: bold;&quot;&gt;Веб (Web Based)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Adempiere&lt;/span&gt;&lt;br /&gt;Тип: ERP, CRM, POS&lt;br /&gt;Язык программирования: Java (J2EE, JBoss)&lt;br /&gt;СУБД: Oracle, PostgreSQL&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;ERP5&lt;/span&gt;&lt;br /&gt;Тип: ERP, CRM, SaaS&lt;br /&gt;Язык программирования:   Python&lt;br /&gt;СУБД: ZODB (any with ODBC interface)&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;LedgerSMB&lt;/span&gt;&lt;br /&gt;Язык программирования:   Perl&lt;br /&gt;СУБД: PostgreSQL 8.x&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;PhpOrganisation&lt;/span&gt;&lt;br /&gt;Тип: Low-end&lt;br /&gt;Язык программирования: PHP&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;WebERP&lt;/span&gt;&lt;br /&gt;Язык программирования: PHP&lt;br /&gt;СУБД: mySQL - innodb&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;TinyERP&lt;/span&gt;&lt;br /&gt;Тип: ERP, CRM, POS&lt;br /&gt;Язык программирования:   Python, XML&lt;br /&gt;СУБД: PostgreSQL&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(102, 0, 0); font-weight: bold;&quot;&gt;Автономные (Stand alone)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Quasar&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;Тип: Accounting&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;TinyERP&lt;/span&gt;&lt;br /&gt;Тип: ERP, CRM, POS&lt;br /&gt;Язык программирования:  Python, XML&lt;br /&gt;СУБД: PostgreSQL&lt;br /&gt;Сайт русской поддержки, &lt;a href=&quot;http://forum.tiny-erp.ru/&quot;&gt;форум&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;________&lt;br /&gt;Related:&lt;br /&gt;&lt;a href=&quot;http://www.compiere.com/&quot;&gt;Compiere&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://ananas.linux.ru.net/&quot;&gt;Ananas&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Category:Linux_accounting_software&quot;&gt;wiki&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://mydebianblog.blogspot.com/2006/07/blog-post_18.html&quot;&gt;Записки дебианщика: Бухгалтерия в Линукс&lt;/a&gt;, здесь дается обзор &lt;span style=&quot;font-weight:bold;&quot;&gt;iceB, 1L, E/AS, R2D2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;P.S. выступил-таки с двухдневным докладом + мастер-классом в академии, выложил пару фотографий на &lt;a href=&quot;http://picasaweb.google.com/tuxedo.live/2daysOfLinux&quot;&gt;Пикасу&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/3319427857020486135/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/3319427857020486135' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/3319427857020486135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/3319427857020486135'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/02/accounting-software.html' title='Accounting Software, ПО для Учета Торговли и Склада'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-4014766191113984805</id><published>2008-02-28T15:29:00.006+03:00</published><updated>2008-11-02T22:23:09.075+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GNU"/><category scheme="http://www.blogger.com/atom/ns#" term="жизнь"/><category scheme="http://www.blogger.com/atom/ns#" term="свободное ПО"/><title type='text'>RMS in Russia</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;dropcaps&quot;&gt;R&lt;/span&gt;MS приезжает в Россию. информация под катом..&lt;br /&gt;&lt;br /&gt;Related:&lt;br /&gt;&lt;a href=&quot;http://www.fsf.org/events/rms-speeches.html&quot;&gt;FSF&lt;/a&gt;:&lt;br /&gt; &lt;a href=&quot;http://www.fsf.org/events/moscow20080303&quot;&gt;2008-03-03&lt;/a&gt; | The Free Software Movement&lt;br /&gt; &lt;a href=&quot;http://www.fsf.org/events/moscow20080304&quot;&gt;2008-03-04&lt;/a&gt; | The Free Software Movement&lt;br /&gt; &lt;a href=&quot;http://www.fsf.org/events/moscow20080305&quot;&gt;2008-03-05&lt;/a&gt; | Free Software: Philosophy, Technology, Business&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vlnv.livejournal.com/8766.html&quot;&gt;vlnv: shedule for RMS visit in Russia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;update&lt;/span&gt;: немного фотографий на &lt;a href=&quot;http://picasaweb.google.com/tuxedo.live/RMSInRussiaMoscow&quot;&gt;picasaweb&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/4014766191113984805/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/4014766191113984805' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4014766191113984805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4014766191113984805'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/02/rms-in-russia.html' title='RMS in Russia'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-1307532433485190955</id><published>2008-02-25T22:28:00.006+03:00</published><updated>2008-04-11T02:52:31.529+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="logger"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><category scheme="http://www.blogger.com/atom/ns#" term="данные"/><category scheme="http://www.blogger.com/atom/ns#" term="свободное ПО"/><title type='text'>Система Ведения Журналов LiLaLo</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;img style=&quot;float: right; cursor: pointer;&quot; src=&quot;http://xgu.ru/w/images/thumb/1/19/Lilalo-labrador.jpg/250px-Lilalo-labrador.jpg&quot; border=&quot;0&quot; /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;span class=&quot;dropcaps&quot;&gt;L&lt;/span&gt;ive Lab Log&lt;/span&gt; (дословно: живой лабораторный журнал) — система, предназначенная для автоматического фиксирования и распознавания хода работы с терминалом Unix-системы. Может применяться для автоматизированного документирования процесса работы системного администратора, для записи хода лабоработрных работ во время обучения, для создания заготовок при написании документации, для слежения за ходом работы младших администраторов.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; О программе&lt;/span&gt;&lt;br /&gt;В ходе работы в консоли Unix/Linux-системы, будь-то непосредственное выполнение задач администрирования, экспериментирование с целью найти и описать решение какой-то задачи или самообучения, демонстрация приёмов работы на живых примерах или что-то другое, часто возникает необходимость зафиксировать происходящий в консоли процесс.&lt;br /&gt;&lt;br /&gt;Записи нужны для того чтобы или просто использовать при попытке повторить те же действия, но в другой раз, или потом, доработав их и снабдив необходимыми комментариями и ссылками, превратить их в полноценную документацию.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt; Авторские права и лицензия&lt;/span&gt;&lt;br /&gt;Права на LiLaLo принадлежат её авторам. &lt;a href=&quot;http://igor.chub.in/&quot;&gt;Игорь Чубин&lt;/a&gt;, Учебный Центр &quot;Сетевые Технологии&quot;. Список авторов указан в файле README в корневом каталоге дистрибутива LiLaLo.&lt;br /&gt;&lt;br /&gt;Программа распространяется по лицензии BSD. Текст лицензии находится в файле LICENSE в корневом каталоге дистрибутива LiLaLo. С ним также можно ознакомиться в [&lt;a href=&quot;http://www.opensource.org/licenses/bsd-license.php&quot;&gt;1&lt;/a&gt;] (en) и в [&lt;a href=&quot;http://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_BSD&quot;&gt;2&lt;/a&gt;] (рус).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Смотря в будущее..&lt;/span&gt;&lt;br /&gt;Программа находится в состоянии развития. Список изменений, которые должны быть сделаны в ближайшее время здесь: &lt;a href=&quot;http://xgu.ru/wiki/LiLaLo_TODO&quot;&gt;LiLaLo TODO&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Литература:&lt;/span&gt;&lt;br /&gt;&lt;a href=&quot;http://xgu.ru/wiki/LiLaLo&quot;&gt;http://xgu.ru/wiki/LiLaLo&lt;/a&gt; - страница проекта LiLaLo&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/1307532433485190955/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/1307532433485190955' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/1307532433485190955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/1307532433485190955'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/02/lilalo.html' title='Система Ведения Журналов LiLaLo'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-5610148819147906091</id><published>2008-02-22T02:02:00.019+03:00</published><updated>2008-04-11T02:50:53.461+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Nokia"/><category scheme="http://www.blogger.com/atom/ns#" term="открытое ПО"/><title type='text'>Nokia Internet Tablet. Взгляд Изнутри.</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;img style=&quot;float: right; cursor: pointer;&quot; src=&quot;http://maemo.org/midcom-static/style_maemo2007/maemo-logo.gif&quot; border=&quot;0&quot; /&gt;&lt;ul&gt;&lt;li&gt;Прошивка Nokia IT&lt;/li&gt;&lt;li&gt;maemo SDK&lt;/li&gt;&lt;li&gt;О платформе..&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Не так давно я стал владельцем таблетки (Internet Tablet) Nokia N770. Почему N770, а не N800, N810, ведь на дворе начало 2008 года :) такой аппарат уже вряд ли где можно купить.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;Прошивка Nokia IT&lt;/span&gt;&lt;br /&gt;Для доступа к репозиториям необходимого ПО сразу же перепрошил её, залил туда OS2007. Процедура не сложная. Вот и мини-HowTo:&lt;br /&gt;1. Для начала Вам потребуется скачать утилиту прошивки &lt;a href=&quot;http://tablets-dev.nokia.com/d3.php&quot;&gt;flasher&lt;/a&gt; и непосредственно прошивку {&lt;a href=&quot;http://tablets-dev.nokia.com/nokia_700.php&quot;&gt;N770&lt;/a&gt; &lt;span style=&quot;font-size:85%;&quot;&gt;(&lt;a href=&quot;http://tablets-dev.nokia.com/os2007_hacker_edition.php&quot;&gt;OS2007&quot;hack&quot;&lt;/a&gt;)&lt;/span&gt;, &lt;a href=&quot;http://tablets-dev.nokia.com/nokia_N800.php&quot;&gt;N800&lt;/a&gt;, &lt;a href=&quot;http://tablets-dev.nokia.com/nokia_N810.php&quot;&gt;N810&lt;/a&gt;};&lt;br /&gt;2. Выключаем таблетку, биндим usb-кабель;&lt;br /&gt;3. Даем в терминал комманду:&lt;br /&gt;&lt;pre&gt;~# chmod +x ./flasher-3.0;./flasher-3.0 -F &lt;span style=&quot;color: rgb(51, 51, 51);&quot;&gt;SU-18_2007HACKER_4.2008.7-1_PR_F5_MR0_ARM.bin&lt;/span&gt; -f&lt;br /&gt;&lt;span style=&quot;color: rgb(102, 0, 0);font-size:85%;&quot; &gt;где 3.0 - версия утилиты прошивки, SU-18_2007HACKER_4.2008.7-1_PR_F5_MR0_ARM.bin - прошивка&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;4. Включаем таблетку и наблюдаем процесс перепрошивки с терминала.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;font-size:180%;&quot; &gt;ma&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold; font-style: italic;font-size:180%;&quot; &gt;e&lt;/span&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;font-size:180%;&quot; &gt;mo &lt;/span&gt;&lt;span style=&quot;font-style: italic;font-size:180%;&quot; &gt;SDK&lt;/span&gt;&lt;br /&gt;maemo предоставляет открытую платформу для разработки Nokia Internet Tablet и других мобильных Linux-based устройств.&lt;br /&gt;&lt;a href=&quot;http://maemo.org/development/sdks/&quot;&gt;maemo SDK&lt;/a&gt; содержит инструменты (toolchain, IDE) для разработки приложений. Вам будет удобно работать с ней, если Вы знакомы с технологиями GNOME/GTK+ и Debian tools (dpkg, deb, etc..). В SDK доступны среды разработки для языков программирования C, C++, python, Ruby, Mono, Java (JaliMo).&lt;br /&gt;&lt;br /&gt;На сегодняшний день существуют три стабильных &quot;песочницы&quot;, SDK:&lt;br /&gt;для Nokia 770 разработчиков: &lt;a href=&quot;http://maemo.org/development/sdks/maemo-2-2--gregale-.html&quot;&gt;maemo 2.2 &quot;Gregale&quot;&lt;/a&gt;&lt;br /&gt;OS2007 для N800 разработчиков: &lt;a href=&quot;http://maemo.org/development/sdks/maemo-3-x--bora-.html&quot;&gt;maemo 3.x &quot;Bora&quot;&lt;/a&gt;&lt;br /&gt;OS2008 для N800 и N810 разработчиков: &lt;a href=&quot;http://maemo.org/development/sdks/maemo_4_chinook_sdk.html&quot;&gt;maemo 4.0 &quot;Chinook&quot;&lt;/a&gt;&lt;br /&gt;Кодовые имена будущих SDK: maemo 4.1 &quot;Diablo&quot;, maemo 4.2 &quot;Elephanta&quot;&lt;br /&gt;SDK могут быть установленны только на ОС Linux, но для работы в Windows доступен WMWare образ.&lt;br /&gt;&lt;br /&gt;SDK хорошо документирована и для того, чтобы быстро понять сущность платформы и начать разработку предлагаю ознакомиться с &lt;a href=&quot;http://maemo4beginners.garage.maemo.org/maemo-quick-start-guide.pdf&quot;&gt;maemo Quick Start Guide&lt;/a&gt;, &lt;a href=&quot;http://maemo.org/development/documentation/apis/&quot;&gt;справкой по API&lt;/a&gt;, а также &lt;a href=&quot;http://maemo.org/development/training/&quot;&gt;учебным материалом&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size:130%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-size:180%;&quot;&gt;О платформе..&lt;/span&gt;&lt;br /&gt;Устройство работает под управлением Internet Tablet OS, модифицированной ARM EABI Debian GNU/Linux (ядро 2.6)&lt;br /&gt;Поверх x-window-system (пользовательский интерфейс&lt;span style=&quot;font-style: italic;&quot;&gt;?&lt;/span&gt;) &lt;span style=&quot;font-style: italic;&quot;&gt;Hildon&lt;/span&gt; - разработанный Nokia каркасс на основе GNOME/GTK+&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidmVjJ7SBd2_hz7ZqOnThvHBTbeEcDXnfX_wRURNX4OEC9YpghgjkkIcDCsyZKmmkqsrY6AxiGst8uvOKmXhpV7Z3Eof9l9tHYn3iOJG7hJftdID1R3sJWTxFQ7ZzQemh4WYdHU5YCD-Q/s1600-h/api_frame_devel.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidmVjJ7SBd2_hz7ZqOnThvHBTbeEcDXnfX_wRURNX4OEC9YpghgjkkIcDCsyZKmmkqsrY6AxiGst8uvOKmXhpV7Z3Eof9l9tHYn3iOJG7hJftdID1R3sJWTxFQ7ZzQemh4WYdHU5YCD-Q/s320/api_frame_devel.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5169610672711054370&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Фигура выше иллюстрирует основные пересекающиеся компоненты, с которыми сталкивается разработчик &lt;span style=&quot;font-style: italic;&quot;&gt;Hildon&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;Системные службы&lt;/span&gt;:&lt;br /&gt;- maemo включает мощный каркасс GnomeVFS, который позволяет использовать некоторое число протоколов доступа в файлам: локальная файловая система, HTTP, FTP, OBEX через Bluetooth, etc..&lt;br /&gt;- Для динамичного API межпроцессорного взаимодействия (IPC) maemo положился на D-BUS. В качестве вспомогающей обертки для D-BUS связей maemo использует специфичную библиотеку libosso.&lt;br /&gt;&lt;br /&gt;..&lt;br /&gt;В заключении надо сказать, что проект &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;ma&lt;span style=&quot;color: rgb(255, 153, 0);&quot;&gt;e&lt;/span&gt;mo&lt;/span&gt; предоставляет хостинг для разработчиков приложений - &lt;a href=&quot;https://garage.maemo.org/&quot;&gt;maemo garage&lt;/a&gt;, что представляет собой некую форму комьюнити; к разработке может присоединиться каждый желающий ;)&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/5610148819147906091/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/5610148819147906091' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/5610148819147906091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/5610148819147906091'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/02/nokia-internet-tablet.html' title='Nokia Internet Tablet. Взгляд Изнутри.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidmVjJ7SBd2_hz7ZqOnThvHBTbeEcDXnfX_wRURNX4OEC9YpghgjkkIcDCsyZKmmkqsrY6AxiGst8uvOKmXhpV7Z3Eof9l9tHYn3iOJG7hJftdID1R3sJWTxFQ7ZzQemh4WYdHU5YCD-Q/s72-c/api_frame_devel.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-6733238187896066701</id><published>2008-02-09T19:32:00.003+03:00</published><updated>2008-04-11T03:00:11.233+04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="UNIX"/><category scheme="http://www.blogger.com/atom/ns#" term="шпаргалка"/><title type='text'>Коллекция Шпаргалок Linux Unix Cheat Sheets - The ultimate collection</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;span class=&quot;dropcaps&quot;&gt;З&lt;/span&gt;амечательная подборка шпаргалок для *никсоидов, маст хэв..&lt;br /&gt;&lt;a href=&quot;http://www.scottklarr.com/topic/115/linux-unix-cheat-sheets---the-ultimate-collection/&quot;&gt;Здесь..&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Linux-Unix cheat sheets - The ultimate collection, must have..&lt;br /&gt;&lt;a href=&quot;http://www.scottklarr.com/topic/115/linux-unix-cheat-sheets---the-ultimate-collection/&quot;&gt;Here..&lt;/a&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/6733238187896066701/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/6733238187896066701' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6733238187896066701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/6733238187896066701'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2008/02/linux-unix-cheat-sheets-ultimate.html' title='Коллекция Шпаргалок Linux Unix Cheat Sheets - The ultimate collection'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2929304365727562596.post-4531067385063219000</id><published>2007-12-21T17:14:00.002+03:00</published><updated>2008-11-02T22:24:10.163+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><category scheme="http://www.blogger.com/atom/ns#" term="программирование"/><title type='text'>Google Code Day 2007 Russia</title><content type='html'>&lt;span class=&quot;fullpost&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://tuxedo-live.blogspot.com/2007/12/google-code-day-2007-russia.html&quot;&gt;&lt;img style=&quot;float: right;cursor: pointer;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjv0MGkkl3dU4OqY3lxtdItAb1CBqIBd10ErF-sHNkbNt1YDfdo_dR04vVh7hvdounwO90fAL2utJBHOJcpEIrem0B-oJtE3C703N7vsn4ECyvkUpF4Fi5NIy6zjEppnjoRdlU0zjuy0CK/s320/gcd_logo_smallest.gif&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5146435466134035618&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span class=&quot;dropcaps&quot;&gt;G&lt;/span&gt;oogle Code Day 2007 Russia&lt;/span&gt;&lt;br /&gt;Открыла День Google Code Дженнифер Трелевич, Директор Центра Разработок Google Россия.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://lh3.google.com/GCD.MSK.07/R2ulplhtxUI/AAAAAAAAADw/1hwWYa3Oi6s/IMG_2693.JPG?imgmax=512&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 320px;&quot; src=&quot;http://lh3.google.com/GCD.MSK.07/R2ulplhtxUI/AAAAAAAAADw/1hwWYa3Oi6s/IMG_2693.JPG?imgmax=512&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Дженнифер Трелевич&lt;br /&gt;Директор Центра Разработок Google Россия&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Трелевич начинала работать в компании Motorola, занималась созданием продуктов для обработки речевых сигналов. Работала в штаб-квартире IBM, также менеджером отдела научно-исследовательской деятельности IBM в России, странах СНГ и Восточной Европы.&lt;br /&gt;Плохо говорит по-русски, хотя интересуется русской литературой, кино, театром, балетом.&lt;br /&gt;В презентации были рассмотрены Продукты для разработчиков от Google, &lt;a href=&quot;http://code.google.com/more/&quot;&gt;Google APIs&lt;/a&gt;&lt;br /&gt;Ключевые моменты и фразы:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;all apps in browser (все приложения в браузере)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;keep advertising SOAP&lt;/li&gt;&lt;li&gt;Улучшение браузера через &lt;a href=&quot;http://code.google.com/apis/gears/&quot;&gt;GoogleGears&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&quot;Cтратегические улучшения интернета в пользу всех.&quot; (с)&lt;/li&gt;&lt;li&gt;&quot;Что хорошо для веба - хорошо для Google.&quot; (с)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;В следующей секции выступил гость из Маунтин Вью, США, &lt;a href=&quot;http://ru.wikipedia.org/wiki/%D0%91%D1%80%D1%8D%D0%B4_%D0%A4%D0%B8%D1%86%D0%BF%D0%B0%D1%82%D1%80%D0%B8%D0%BA&quot;&gt;Брэд Фицпатрик&lt;/a&gt;, Технолог Google, известный как создатель социальной сети &lt;a href=&quot;http://www.livejournal.com/&quot;&gt;LiveJournal&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://lh6.google.com/GCD.MSK.07/R2umDVhtxcI/AAAAAAAAAEw/E1sXHsFB8ss/IMG_2816.JPG?imgmax=288&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 320px;&quot; src=&quot;http://lh6.google.com/GCD.MSK.07/R2umDVhtxcI/AAAAAAAAAEw/E1sXHsFB8ss/IMG_2816.JPG?imgmax=288&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Брэд Фицпатрик (&lt;a href=&quot;http://www.bradfitz.com/&quot;&gt;Brad Fitzpatrick&lt;/a&gt;)&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ключевые моменты презентации Брэда &quot;Открытие Социального Графа&quot;:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://openid.net/&quot;&gt;OpenID&lt;/a&gt; &lt;span style=&quot;font-size:78%;&quot;&gt;&lt;a href=&quot;http://ru.wikipedia.org/wiki/OpenID&quot;&gt;wiki&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Социальный граф; как мы свзязаны друг с другом, как мы делаем полезные вещи с помощью социального графа&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Giant Global Graph (GGG)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Термин GGG используется в семантических Web. Этот термин был придуман Тим Бернерс Ли в ноябре 2007 года. На &lt;a href=&quot;http://dig.csail.mit.edu/breadcrumbs/node/215&quot;&gt;блоге&lt;/a&gt; Тим рассказывает о том, что GGG (Глобальный Гигантский Граф) может быть более подходящим, чем таксономия &quot;&lt;span style=&quot;font-size:85%;&quot;&gt;&lt;a href=&quot;http://www.webopedia.com/TERM/S/Semantic_Web.htm&quot;&gt;Semantic Web&lt;/a&gt;&lt;/span&gt;&quot;.&lt;/blockquote&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://code.google.com/apis/opensocial/&quot;&gt;OpenSocial&lt;/a&gt; API, HTML+JavaScript&lt;/li&gt;&lt;br /&gt;&lt;li&gt;IM interopability for &lt;a href=&quot;http://www.xmpp.org/&quot;&gt;XMPP&lt;/a&gt;, &lt;a href=&quot;http://www.aim.com/&quot;&gt;AIM&lt;/a&gt;, &lt;a href=&quot;http://www.myspace.com/&quot;&gt;MySpace&lt;/a&gt;, &lt;a href=&quot;http://www.facebook.com/&quot;&gt;Facebook&lt;/a&gt;, &lt;a href=&quot;http://www.linkedin.com/&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;http://www.ning.com/&quot;&gt;Ning&lt;/a&gt;, &lt;a href=&quot;http://oracleappslab.com/2007/08/07/oracle-gets-social/&quot;&gt;Oracle&lt;/a&gt;, &lt;a href=&quot;http://www.orkut.com/&quot;&gt;orkut&lt;/a&gt;, etc..&lt;/li&gt;&lt;br /&gt;&lt;li&gt;собрать ГГГ через &lt;a href=&quot;http://gmpg.org/xfn/&quot;&gt;XFN&lt;/a&gt; &amp;amp;&amp;amp; &lt;a href=&quot;http://www.foaf-project.org/&quot;&gt;FOAF&lt;/a&gt;, используя разметку на сайтах&lt;br /&gt;&lt;code&gt;&amp;lt;link rel=&quot;meta&quot; type=&quot;application/rdf+xml&quot; title=&quot;foaf&quot;&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;XFN, &lt;a href=&quot;http://microformats.org/wiki/hcard&quot;&gt;hCard&lt;/a&gt;, &lt;a href=&quot;http://www.google.com/search?hl=en&amp;amp;q=OpenID&amp;amp;btnG=Search&quot;&gt;OpenID&lt;/a&gt;, &lt;a href=&quot;http://oauth.net/&quot;&gt;OAuth&lt;/a&gt;&lt;br /&gt;Plaxo.com, FriendFeed.com, Mugshot.org - аггрегация&lt;br /&gt;SixApart&#39;s updates.elsewhere.im - XML-поток в реальном времени, участие через OAuth&lt;/li&gt;&lt;br /&gt;&lt;li&gt;FOAF (foaf-project.org)&lt;br /&gt;Friend of a friend&lt;br /&gt;файлы XML RDF, SHA1_hex&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Вторая часть мероприятия была посвящена практическим семинарам, workshop: &lt;a href=&quot;http://code.google.com/apis/gdata/&quot;&gt;GData&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/apis/opensocial/&quot;&gt;OpenSocial&lt;/a&gt; &lt;span style=&quot;font-size:85%;&quot;&gt;(&lt;a href=&quot;http://groups.google.com/group/opensocial&quot;&gt;forum&lt;/a&gt;)&lt;/span&gt;, Geo (GeoRSS, KML, Mushup).&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;Related Links:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.webplanet.ru/knowhow/service/admin/2007/08/29/social_graph.html&quot; target=&quot;_blank&quot;&gt;Размышления о социальном графе&lt;/a&gt; на webplanet.ru&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=6uKxZhtlteY&quot; target=&quot;_blank&quot;&gt;Social Networking Panel Discussion at Zeitgeist &#39;07&lt;/a&gt; YouTube, Google (en)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Семинары, которые проводились и будут проводиться у нас в России, записываются на видео и периодически публикуются на &lt;a href=&quot;http://ru.youtube.com/profile_videos?user=GoogleRU&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Блог &lt;a href=&quot;http://googlerussiablog.blogspot.com/&quot;&gt;Google Россия&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Книга от основателя Creative Commons (CC) Лоуренса Лессига «&lt;a href=&quot;http://www.artpragmatica.ru/lessig/&quot;&gt;Свободная Культура&lt;/a&gt;»&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://tuxedo-live.blogspot.com/feeds/4531067385063219000/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2929304365727562596/4531067385063219000' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4531067385063219000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2929304365727562596/posts/default/4531067385063219000'/><link rel='alternate' type='text/html' href='http://tuxedo-live.blogspot.com/2007/12/google-code-day-2007-russia.html' title='Google Code Day 2007 Russia'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/02110389461566444482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjv0MGkkl3dU4OqY3lxtdItAb1CBqIBd10ErF-sHNkbNt1YDfdo_dR04vVh7hvdounwO90fAL2utJBHOJcpEIrem0B-oJtE3C703N7vsn4ECyvkUpF4Fi5NIy6zjEppnjoRdlU0zjuy0CK/s72-c/gcd_logo_smallest.gif" height="72" width="72"/><thr:total>0</thr:total></entry></feed>