<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2FExpandingY%C3%BAndiskspace</id>
	<title>Arduino:Примеры/ExpandingYúndiskspace - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wikihandbk.com/ruwiki/index.php?action=history&amp;feed=atom&amp;title=Arduino%3A%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B%2FExpandingY%C3%BAndiskspace"/>
	<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/ExpandingY%C3%BAndiskspace&amp;action=history"/>
	<updated>2026-04-08T04:56:08Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/ExpandingY%C3%BAndiskspace&amp;diff=8495899&amp;oldid=prev</id>
		<title>EducationBot в 08:34, 8 июля 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/ExpandingY%C3%BAndiskspace&amp;diff=8495899&amp;oldid=prev"/>
		<updated>2023-07-08T08:34:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:34, 8 июля 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l360&quot;&gt;Строка 360:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 360:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;references /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Навигационная таблица/Портал/Arduino}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Пример программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Примеры программирования Arduino]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/ExpandingY%C3%BAndiskspace&amp;diff=7735705&amp;oldid=prev</id>
		<title>EducationBot в 08:32, 20 мая 2023</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/ExpandingY%C3%BAndiskspace&amp;diff=7735705&amp;oldid=prev"/>
		<updated>2023-05-20T08:32:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 12:32, 20 мая 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot;&gt;Строка 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.arduino.cc/en/uploads/Tutorial/YunDiskSpaceExpander.zip Вот ссылка] на '''ZIP-файл'''.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[http://www.arduino.cc/en/uploads/Tutorial/YunDiskSpaceExpander.zip Вот ссылка] на '''ZIP-файл'''.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot; enclose=&quot;div&lt;/del&gt;&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>EducationBot</name></author>
	</entry>
	<entry>
		<id>http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/ExpandingY%C3%BAndiskspace&amp;diff=21285&amp;oldid=prev</id>
		<title>Myagkij: Замена текста — «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot;&gt;» на «&lt;syntaxhighlight lang=&quot;c&quot; line=&quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&quot; enclose=&quot;div&quot;&gt;»</title>
		<link rel="alternate" type="text/html" href="http://wikihandbk.com/ruwiki/index.php?title=Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/ExpandingY%C3%BAndiskspace&amp;diff=21285&amp;oldid=prev"/>
		<updated>2016-12-14T04:05:36Z</updated>

		<summary type="html">&lt;p&gt;Замена текста — «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;» на «&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Arduino панель перехода}}&lt;br /&gt;
{{Перевод от Сubewriter}}&lt;br /&gt;
{{Myagkij-редактор}}&lt;br /&gt;
&lt;br /&gt;
==Как расширить дисковое пространство на Yun&amp;lt;ref&amp;gt;[http://www.arduino.cc/en/Tutorial/ExpandingYunDiskSpace Arduino - How to expand the Yún disk space]&amp;lt;/ref&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
Операционная система '''OpenWrt-Yun''' на базе '''GNU/Linux''', будучи установленной на '''Yun''', занимает примерно '''9''' из '''16 мегабайт''' доступной '''Flash'''-памяти. Это значит, что если вы установите слишком много приложений и программных пакетов, места вам будет категорически не хватать.&lt;br /&gt;
&lt;br /&gt;
Впрочем, дисковое пространство на '''Arduino Yun''' можно увеличить, подключив к плате '''SD-карту''' и настроив ее таким образом, чтобы она стала вашей новой '''Linux'''’овой файловой системой. После этого все, что вы будете делать на '''Linux'''-стороне '''Yun''' , будет храниться на этой '''SD'''-карте.&lt;br /&gt;
&lt;br /&gt;
Процедура настройки не сложна, но все же требует базовых знаний в области '''Linux'''. Поэтому мы автоматизировали все шаги и сделали соответствующий скетч, использующий библиотеку '''Bridge'''. Так что просто вставьте карту и следуйте интерактивным инструкциям в '''Serial Monitor'''.&lt;br /&gt;
&lt;br /&gt;
Скетч разделит '''SD'''-карту на две части. Первая будет отформатирована под '''FAT32''' и с ней можно будет работать с любого компьютера, т.е. ею можно будет пользоваться для того, чтобы обмениваться файлами между компьютером и '''Yun'''. Вторая часть будет содержать файловую систему '''Yun'''. Любая установленная вами программа и любой конфигурационный файл будет скопирован на '''SD-карту''', поэтому вам не придется ничего переустанавливать и перенастраивать – '''Yun''' останется такой же, как прежде, просто дискового пространства у нее будет побольше. Впрочем, имейте в виду, что если вы используете '''Windows''' или '''Mac''', то вторая часть для вашего компьютера будет недоступна.&lt;br /&gt;
&lt;br /&gt;
==Подготовка==&lt;br /&gt;
&lt;br /&gt;
Подключите вашу '''Yun''' к компьютеру и подождите около минуты. Убедитесь, что '''Yun''' подключена к интернету, потому что процедура потребует дополнительного '''ПО'''. Отключите от '''Yun''' все девайсы, а затем вставьте '''SD-карту'''.&lt;br /&gt;
&lt;br /&gt;
'''Внимание!''' Ваша '''SD-карта''' будет отформатирована, поэтому вы потеряете все записанные на нее данные. Поэтому перед тем, как расширять дисковое пространство на '''Yun''', убедитесь, что вся необходимая информация скопирована в другое, более безопасное место.&lt;br /&gt;
&lt;br /&gt;
Загрузите '''ZIP-файл''', содержащий скетч, распакуйте его и скопируйте содержимое в папку скетчей для '''Arduino'''. Откройте среду разработки '''Arduino''' и загрузите скетч '''YunDiskSpaceExpander'''. &lt;br /&gt;
&lt;br /&gt;
[http://www.arduino.cc/en/uploads/Tutorial/YunDiskSpaceExpander.zip Вот ссылка] на '''ZIP-файл'''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
Расширение дискового пространства на Yun&lt;br /&gt;
  &lt;br /&gt;
Требуются:&lt;br /&gt;
* Карта формата micro SD&lt;br /&gt;
* Подсоединение к интернету&lt;br /&gt;
&lt;br /&gt;
Этот скетч конфигурирует SD-карту, чтобы расширить дисковое пространство Arduino Yun.&lt;br /&gt;
Загрузите его, откройте Serial Monitor и следуйте интерактивным инструкциям.&lt;br /&gt;
&lt;br /&gt;
Внимание! Ваша SD-карта будет отформатирована, поэтому вы потеряете все имеющиеся на ней файлы.&lt;br /&gt;
Поэтому, перед тем, как расширять дисковое пространство на Yun,&lt;br /&gt;
сделайте бэкап этих файлов.&lt;br /&gt;
&lt;br /&gt;
Создан в апреле 2014 &lt;br /&gt;
Федерико Фиссоре (Federico Fissore) и Федерико Ванзати (Federico Vanzati).&lt;br /&gt;
&lt;br /&gt;
Этот код не защищен авторским правом.&lt;br /&gt;
&lt;br /&gt;
http://arduino.cc/en/Tutorial/ExtendingYunDiskSpace&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Process.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define DEBUG 0&lt;br /&gt;
#define SUCCESSFUL_EXIT_CODE 0&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  while (!Serial);&lt;br /&gt;
&lt;br /&gt;
  Serial.print(F(&amp;quot;This sketch will format your micro SD card and use it as additional disk space for your Arduino Yun.\nPlease ensure you have ONLY your micro SD card plugged in: no pen drives, hard drives or whatever.\nDo you wish to proceed (yes/no)?&amp;quot;));  //  &amp;quot;Этот скетч отформатирует вашу SD-карту и воспользуется ею, как дополнительным дисковым пространством для Yun.\nПожалуйста, убедитесь, что в Yun вставлена только SD-карта и ничего более – ни флэшек, ни жестких дисков, ни т.п.&amp;quot;&lt;br /&gt;
  expectYesBeforeProceeding();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(F(&amp;quot;\nStarting Bridge...&amp;quot;));  //  &amp;quot;Запускаем Bridge...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Bridge.begin();&lt;br /&gt;
&lt;br /&gt;
  haltIfSDAlreadyOnOverlay();&lt;br /&gt;
  &lt;br /&gt;
  haltIfInternalFlashIsFull();&lt;br /&gt;
&lt;br /&gt;
  haltIfSDCardIsNotPresent();&lt;br /&gt;
&lt;br /&gt;
  installSoftware();&lt;br /&gt;
&lt;br /&gt;
  partitionAndFormatSDCard();&lt;br /&gt;
&lt;br /&gt;
  createArduinoFolder();&lt;br /&gt;
&lt;br /&gt;
  copySystemFilesFromYunToSD();&lt;br /&gt;
&lt;br /&gt;
  enableExtRoot();&lt;br /&gt;
&lt;br /&gt;
  Serial.print(F(&amp;quot;\nWe are done! Yeah! Now press the YUN RST button to apply the changes.&amp;quot;));  //  &amp;quot;Готово! Отлично! Теперь нажмите на кнопку YUN RST, чтобы изменения вступили в силу.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // Это превратит скетч в пример «Доступ к терминалу Linux через Serial Monitor»&lt;br /&gt;
  if (Serial.available()) {&lt;br /&gt;
    char c = (char)Serial.read();&lt;br /&gt;
    Serial1.write(c);&lt;br /&gt;
  }&lt;br /&gt;
  if (Serial1.available()) {&lt;br /&gt;
    char c = (char)Serial1.read();&lt;br /&gt;
    Serial.write(c);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void halt() {&lt;br /&gt;
  Serial.flush();&lt;br /&gt;
  while (true);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void expectYesBeforeProceeding() {&lt;br /&gt;
  Serial.flush();&lt;br /&gt;
&lt;br /&gt;
  while (!Serial.available());&lt;br /&gt;
&lt;br /&gt;
  String answer = Serial.readStringUntil('\n');&lt;br /&gt;
&lt;br /&gt;
  Serial.print(F(&amp;quot; &amp;quot;));&lt;br /&gt;
  Serial.println(answer);&lt;br /&gt;
  if (answer != &amp;quot;yes&amp;quot;) {&lt;br /&gt;
    Serial.println(F(&amp;quot;\nGoodbye&amp;quot;));  //  &amp;quot;Пока!&amp;quot;&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int readPartitionSize() {&lt;br /&gt;
  int partitionSize = 0;&lt;br /&gt;
  while (!partitionSize)&lt;br /&gt;
  {&lt;br /&gt;
    Serial.print(F(&amp;quot;Enter the size of the data partition in MB: &amp;quot;));  //  &amp;quot;Введите размер для разбиения дискового пространства (в мегабайтах): &amp;quot;&lt;br /&gt;
    while (Serial.available() == 0);&lt;br /&gt;
&lt;br /&gt;
    String answer = Serial.readStringUntil('\n');&lt;br /&gt;
    partitionSize = answer.toInt();&lt;br /&gt;
    Serial.println(partitionSize);&lt;br /&gt;
    if (!partitionSize)&lt;br /&gt;
      Serial.println(F(&amp;quot;Invalid input, retry&amp;quot;));  //  &amp;quot;Неправильно, введите снова&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
  return partitionSize;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void debugProcess(Process p) {&lt;br /&gt;
  #if DEBUG == 1&lt;br /&gt;
  while (p.running());&lt;br /&gt;
&lt;br /&gt;
  while (p.available() &amp;gt; 0) {&lt;br /&gt;
    char c = p.read();&lt;br /&gt;
    Serial.print(c);&lt;br /&gt;
  }&lt;br /&gt;
  Serial.flush();&lt;br /&gt;
  #endif&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void haltIfSDAlreadyOnOverlay() {&lt;br /&gt;
  Process grep;&lt;br /&gt;
&lt;br /&gt;
  grep.runShellCommand(F(&amp;quot;mount | grep ^/dev/sda | grep 'on /overlay'&amp;quot;));&lt;br /&gt;
  String output = grep.readString();&lt;br /&gt;
  if (output != &amp;quot;&amp;quot;) {&lt;br /&gt;
    Serial.println(F(&amp;quot;\nMicro SD card is already used as additional Arduino Yun disk space. Nothing to do.&amp;quot;));  //  &amp;quot;\nSD-карта уже используется в качестве дополнительного дискового пространства для Yun.&amp;quot;&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void haltIfSDCardIsNotPresent() {&lt;br /&gt;
  Process ls;&lt;br /&gt;
  int exitCode = ls.runShellCommand(&amp;quot;ls /mnt/sda1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  if (exitCode != 0) {&lt;br /&gt;
    Serial.println(F(&amp;quot;\nThe micro SD card is not available&amp;quot;));  //  &amp;quot;\nSD-карта недоступна&amp;quot;&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void haltIfInternalFlashIsFull() {&lt;br /&gt;
  Process awk;&lt;br /&gt;
&lt;br /&gt;
  awk.runShellCommand(F(&amp;quot;df / | awk '/rootfs/ {print $4}'&amp;quot;));&lt;br /&gt;
  int output = awk.parseInt();&lt;br /&gt;
  if (output &amp;lt; 1000) {&lt;br /&gt;
    Serial.println(F(&amp;quot;\nYou don't have enough disk space to install the utility software. You need to free at least 1MB of Flash memory.\nRetry!&amp;quot;));  //  &amp;quot;У вас недостаточно дискового пространства для установки утилиты. Нужно освободить как минимум один мегабайт Flash-памяти.\nПопробуйте еще раз!&amp;quot;&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void installSoftware() {&lt;br /&gt;
  Serial.print(F(&amp;quot;\nReady to install utility software. Please ensure your Arduino Yun is connected to internet.\nReady to proceed (yes/no)?&amp;quot;));  //  &amp;quot;К установке утилиты все готово. Пожалуйста, убедитесь, что Arduino Yun подключена к интернету.\nГотовы продолжать (да/нет)?&amp;quot;&lt;br /&gt;
  expectYesBeforeProceeding();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(F(&amp;quot;Updating software list...&amp;quot;));  //  &amp;quot;Обновление списка ПО...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Process opkg;&lt;br /&gt;
&lt;br /&gt;
  // Обновляем список пакетов&lt;br /&gt;
  int exitCode = opkg.runShellCommand(&amp;quot;opkg update&amp;quot;);&lt;br /&gt;
  // если с кодом завершения (exitCode) процесса никаких проблем нет, это значит, что пакет установлен успешно:&lt;br /&gt;
  if (exitCode != SUCCESSFUL_EXIT_CODE) {&lt;br /&gt;
    Serial.println(F(&amp;quot;err. with opkg, check internet connection&amp;quot;));  //  &amp;quot;Ошибка с opkg, проверьте интернет-соединение&amp;quot;&lt;br /&gt;
    debugProcess(opkg);&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(F(&amp;quot;Software list updated. Installing software (this will take a while)...&amp;quot;));  //  &amp;quot;Список ПО обновлен. Установка ПО (этот процесс займет какое-то время)...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  // Устанавливаем утилиту для форматирования в EXT4:&lt;br /&gt;
  exitCode = opkg.runShellCommand(F(&amp;quot;opkg install e2fsprogs mkdosfs fdisk rsync&amp;quot;));&lt;br /&gt;
  if (exitCode != SUCCESSFUL_EXIT_CODE) {&lt;br /&gt;
    Serial.println(F(&amp;quot;err. installing e2fsprogs mkdosfs fdisk&amp;quot;));  //  &amp;quot;Ошибка в установке e2fsprogs mkdosfs fdisk&amp;quot;&lt;br /&gt;
    debugProcess(opkg);&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
  Serial.println(F(&amp;quot;e2fsprogs mkdosfs fdisk rsync installed&amp;quot;));  //  &amp;quot; e2fsprogs mkdosfs fdisk rsync установлена&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void partitionAndFormatSDCard() {&lt;br /&gt;
  Serial.print(F(&amp;quot;\nProceed with partitioning micro SD card (yes/no)?&amp;quot;));  //  &amp;quot;\nПродолжать разбиение SD-карты? (да/нет)?&amp;quot;&lt;br /&gt;
  expectYesBeforeProceeding();&lt;br /&gt;
&lt;br /&gt;
  unmount();&lt;br /&gt;
&lt;br /&gt;
  Process format;&lt;br /&gt;
&lt;br /&gt;
  // Очищаем таблицу разбиения SD-карты:&lt;br /&gt;
  format.runShellCommand(&amp;quot;dd if=/dev/zero of=/dev/sda bs=4096 count=10&amp;quot;);&lt;br /&gt;
  debugProcess(format);&lt;br /&gt;
&lt;br /&gt;
  // Запускаем процесс разбиения и создаем первую часть:&lt;br /&gt;
  int dataPartitionSize = readPartitionSize();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(F(&amp;quot;Partitioning (this will take a while)...&amp;quot;));  //  &amp;quot;Разбиение SD-карты (этот процесс займет какое-то время)...&amp;quot;&lt;br /&gt;
  String firstPartition = &amp;quot;(echo n; echo p; echo 1; echo; echo +&amp;quot;;&lt;br /&gt;
  firstPartition += dataPartitionSize;&lt;br /&gt;
  firstPartition += &amp;quot;M; echo w) | fdisk /dev/sda&amp;quot;;&lt;br /&gt;
  format.runShellCommand(firstPartition);&lt;br /&gt;
  debugProcess(format);&lt;br /&gt;
&lt;br /&gt;
  unmount();&lt;br /&gt;
&lt;br /&gt;
  // Создаем вторую часть:&lt;br /&gt;
  format.runShellCommand(F(&amp;quot;(echo n; echo p; echo 2; echo; echo; echo w) | fdisk /dev/sda&amp;quot;));&lt;br /&gt;
  debugProcess(format);&lt;br /&gt;
&lt;br /&gt;
  unmount();&lt;br /&gt;
&lt;br /&gt;
  // Уточняем, что форматировать нужно в формате FAT32:&lt;br /&gt;
  format.runShellCommand(F(&amp;quot;(echo t; echo 1; echo c; echo w) | fdisk /dev/sda&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
  unmount();&lt;br /&gt;
&lt;br /&gt;
  delay(5000);&lt;br /&gt;
&lt;br /&gt;
  unmount();&lt;br /&gt;
&lt;br /&gt;
  // Форматируем первую часть в FAT32:&lt;br /&gt;
  int exitCode = format.runShellCommand(F(&amp;quot;mkfs.vfat /dev/sda1&amp;quot;));&lt;br /&gt;
  debugProcess(format);&lt;br /&gt;
  if (exitCode != SUCCESSFUL_EXIT_CODE) {&lt;br /&gt;
    Serial.println(F(&amp;quot;\nerr. formatting to FAT32&amp;quot;));  //  &amp;quot;\nОшибка при форматировании в FAT32&amp;quot;&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
  delay(100);&lt;br /&gt;
&lt;br /&gt;
  // Форматируем вторую часть в Linux EXT4:&lt;br /&gt;
  exitCode = format.runShellCommand(F(&amp;quot;mkfs.ext4 /dev/sda2&amp;quot;));&lt;br /&gt;
  debugProcess(format);&lt;br /&gt;
  if (exitCode != SUCCESSFUL_EXIT_CODE) {&lt;br /&gt;
    Serial.println(F(&amp;quot;\nerr. formatting to EXT4&amp;quot;));  //  &amp;quot;\nОшибка при форматировании в EXT4&amp;quot;&lt;br /&gt;
    halt();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  Serial.println(F(&amp;quot;Micro SD card correctly partitioned&amp;quot;));  // &amp;quot;Разбиение SD-карты прошло успешно&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void createArduinoFolder() {&lt;br /&gt;
  Serial.print(F(&amp;quot;\nCreating 'arduino' folder structure...&amp;quot;));  //  &amp;quot;Создание папки «arduino»&amp;quot;&lt;br /&gt;
  Process folder;&lt;br /&gt;
&lt;br /&gt;
  folder.runShellCommand(F(&amp;quot;mkdir -p /mnt/sda1&amp;quot;));&lt;br /&gt;
  folder.runShellCommand(F(&amp;quot;mount /dev/sda1 /mnt/sda1&amp;quot;));&lt;br /&gt;
  folder.runShellCommand(F(&amp;quot;mkdir -p /mnt/sda1/arduino/www&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
  unmount();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void copySystemFilesFromYunToSD() {&lt;br /&gt;
  Serial.print(F(&amp;quot;\nCopying files from Arduino Yun flash to micro SD card...&amp;quot;));  //  &amp;quot;Копирование файлов с flash-памяти Arduino Yun на SD-карту&amp;quot;&lt;br /&gt;
  Process copy;&lt;br /&gt;
&lt;br /&gt;
  copy.runShellCommand(F(&amp;quot;mkdir -p /mnt/sda2&amp;quot;));&lt;br /&gt;
  copy.runShellCommand(F(&amp;quot;mount /dev/sda2 /mnt/sda2&amp;quot;));&lt;br /&gt;
  copy.runShellCommand(F(&amp;quot;rsync -a --exclude=/mnt/ --exclude=/www/sd /overlay/ /mnt/sda2/&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
  unmount();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void unmount() {&lt;br /&gt;
  Process format;&lt;br /&gt;
  format.runShellCommand(F(&amp;quot;umount /dev/sda?&amp;quot;));&lt;br /&gt;
  debugProcess(format);&lt;br /&gt;
  format.runShellCommand(F(&amp;quot;rm -rf /mnt/sda?&amp;quot;));&lt;br /&gt;
  debugProcess(format);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void enableExtRoot() {&lt;br /&gt;
  Serial.print(F(&amp;quot;\nEnabling micro SD as additional disk space... &amp;quot;));  //  &amp;quot;Активация SD-карты в качестве дополнительного дискового пространства...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  Process fstab;&lt;br /&gt;
&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci add fstab mount&amp;quot;));&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci set fstab.@mount[0].target=/overlay&amp;quot;));&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci set fstab.@mount[0].device=/dev/sda2&amp;quot;));&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci set fstab.@mount[0].fstype=ext4&amp;quot;));&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci set fstab.@mount[0].enabled=1&amp;quot;));&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci set fstab.@mount[0].enabled_fsck=0&amp;quot;));&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci set fstab.@mount[0].options=rw,sync,noatime,nodiratime&amp;quot;));&lt;br /&gt;
  fstab.runShellCommand(F(&amp;quot;uci commit&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
  Serial.println(F(&amp;quot;enabled&amp;quot;));  //  &amp;quot;Активация завершена&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Откройте '''Serial Monitor''' и обязательно проверьте, выбран ли в выпадающем меню пункт '''Newline'''.&lt;br /&gt;
&lt;br /&gt;
==Старт==&lt;br /&gt;
&lt;br /&gt;
Когда вы откроете '''Serial Monitor''', появится сообщение, которое известит вас о том, что от '''Yun''' нужно отключить все другие дисковые устройства, кроме '''SD-карты'''. Если готовы продолжать, напишите '''«yes»''' и нажмите '''Enter'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Extroot_1.png]]&lt;br /&gt;
&lt;br /&gt;
==Установка ПО==&lt;br /&gt;
&lt;br /&gt;
Для начала устанавливаем программное обеспечение, необходимое для форматирования '''SD-карты'''. Перед тем, как напечатать '''«yes»''', убедитесь, что '''Yun''' подключена к интернету, иначе установка будет неудачной.&lt;br /&gt;
&lt;br /&gt;
[[File:Extroot_2.png]]&lt;br /&gt;
&lt;br /&gt;
==Форматирование SD-карты==&lt;br /&gt;
&lt;br /&gt;
Теперь, когда необходимое '''ПО''' корректно установлено, печатаем '''«yes»''' и жмем '''Enter''', чтобы начать форматирование '''SD-карты'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Extroot_3.png]]&lt;br /&gt;
&lt;br /&gt;
Уточняем размер первой части '''SD-карты''' – той, которую выбудете использовать для обмена файлами с компьютером. Оставшаяся часть будет отведена под файловую систему '''Linux'''. В данном примере мы используем '''2-гигабайтную SD-карту''', а под первую часть отводим '''700 Мб'''. Оставшиеся '''1,3 Гб''' приютят у себя '''Linux'''.&lt;br /&gt;
&lt;br /&gt;
[[File:Extroot_4.png]]&lt;br /&gt;
&lt;br /&gt;
Когда все будет готово, все конфигурационные и прочие файлы, хранящиеся во внутренней '''flash'''-памяти, будут скопированы на вторую часть '''SD'''-карты. Далее, чтобы все изменения вступили в силу, Yun нужно перезагрузить. Для этого нажмите на кнопку '''YUN RST''' (она располагается недалеко от светодиодов).&lt;br /&gt;
&lt;br /&gt;
[[File:Extroot_5.png]]&lt;br /&gt;
&lt;br /&gt;
Скетч продолжит показывать оболочку '''Yun Linux''', а на экран будет выводиться множество сообщений, оповещающих о загрузке '''Yun'''. Когда она закончится, впишите это:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
df -h / /mnt/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В ответ вы должны получить что-то вроде этого:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line=&amp;quot;GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS&amp;quot;&amp;gt;&lt;br /&gt;
Filesystem              Size    Used Available Use% Mounted on&lt;br /&gt;
rootfs                  1.2G    51.7M   1.0G   5% /&lt;br /&gt;
/dev/sda1               698.6M  12.0K   698.6M   0% /mnt/sda1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как видите, теперь нам доступен один гигабайт свободного дискового пространства. &lt;br /&gt;
В самой '''OpenWrt''' оно будет называться '''extroot'''. Более подробную информацию можно найти на [http://wiki.openwrt.org/doc/howto/extroot сайте OpenWrt].&lt;br /&gt;
&lt;br /&gt;
== См.также==&lt;br /&gt;
&lt;br /&gt;
==Внешние ссылки==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Категория:Пример]]&lt;br /&gt;
[[Категория:Примеры]]&lt;br /&gt;
[[Категория:Пример программирования Arduino]]&lt;br /&gt;
[[Категория:Примеры программирования Arduino]]&lt;/div&gt;</summary>
		<author><name>Myagkij</name></author>
	</entry>
</feed>