Невозможно создать минимальную копию памяти файла из полной

Обновлено: 02.07.2024

Unity — это отличный и простой инструмент для многоплатформенной разработки. Его принципы просты для понимания, поэтому программисты могут быстро и интуитивно приступить к разработке новых продуктов. Однако, если разработчики не будут помнить о некоторых важных вещах, разработка может замедлиться в критические моменты, в том числе, когда проект отходит от первоначального прототипа или приближается к финальной версии. В этой статье независимый инженер-программист Toptal Томас Мацек описывает наиболее распространенные ошибки, о которых разработчикам Unity следует знать при работе над будущими проектами.

Unity — отличный и простой инструмент для разработки на разных платформах. Его принципы просты для понимания, и вы можете интуитивно приступить к созданию своих продуктов. Однако, если некоторые вещи не будут приняты во внимание, они замедлят ваш прогресс, когда вы перейдете к следующему уровню своей работы, поскольку вы переходите от начальной фазы прототипа или приближаетесь к финальной версии. В этой статье будут даны советы о том, как преодолеть наиболее распространенные проблемы и как избежать фундаментальных ошибок в ваших новых или существующих проектах. Обратите внимание, что данная статья больше ориентирована на разработку 3D-приложений, но все упомянутое применимо и к 2D-разработке.

Для каждого проекта очень важно определить несколько моментов еще до того, как начнется проектирование приложения и программная часть проекта. В наши дни, когда маркетинг продукта является важной частью всего процесса, также важно иметь четкое представление о том, какой будет бизнес-модель внедряемого приложения. Вы должны быть уверены, для каких платформ вы будете выпускать продукт и какие платформы входят в ваш план. Также необходимо установить минимальные спецификации поддерживаемых устройств (будете ли вы поддерживать более старые недорогие устройства или только более свежие модели?), чтобы иметь представление о том, какую производительность и визуальные эффекты вы можете себе позволить. Этот факт влияет на каждую тему в этой статье.

С технической точки зрения необходимо заранее установить весь рабочий процесс создания активов и моделей при их предоставлении программисту, уделяя особое внимание процессу итерации, когда модели потребуют дополнительных изменений и уточнений. . У вас должно быть четкое представление о желаемой частоте кадров и бюджете вершин, чтобы 3D-художник мог знать, в каком максимальном разрешении должны быть модели и сколько вариаций LOD он должен сделать. Также следует указать, как унифицировать все измерения, чтобы иметь согласованный масштаб, и процесс импорта во всем приложении.

То, как будут спроектированы уровни, имеет решающее значение для будущей работы, потому что разделение уровня сильно влияет на производительность. Вопросы производительности всегда должны быть у вас в голове при разработке новых уровней. Не идите с нереалистичными видениями. Всегда важно задавать себе вопрос: «Может ли это быть разумно достигнуто?» В противном случае вам не следует тратить свои драгоценные ресурсы на что-то труднодостижимое (конечно, если это не является частью вашей бизнес-стратегии, чтобы сделать это вашим основным конкурентным преимуществом).

Очень важно, чтобы все модели были хорошо подготовлены, чтобы их можно было использовать в сценах без дальнейших модификаций. Есть несколько вещей, которым должна соответствовать хорошая модель.

Важно правильно установить масштаб. Иногда невозможно правильно установить это в вашем программном обеспечении для 3D-моделирования из-за разных единиц измерения, используемых этими приложениями. Чтобы все было правильно, установите масштабный коэффициент в настройках импорта моделей (оставьте 0,01 для 3dsMax и Modo, установите 1,0 для Maya), и учтите, что иногда вам потребуется повторно импортировать объекты после изменения настройки масштаба. Эти настройки должны гарантировать, что вы можете использовать только базовый масштаб 1,1,1 в своих сценах, чтобы получить согласованное поведение и отсутствие проблем с физикой. Динамическая пакетная обработка также, скорее всего, будет работать корректно. Это правило также следует применять к каждому подобъекту модели, а не только к основному. Когда вам нужно настроить размеры объекта, делайте это в отношении других объектов в приложении для 3D-моделирования, а не в Unity. Тем не менее, вы можете поэкспериментировать с масштабом в Unity, чтобы найти подходящие значения, но для конечного приложения и последовательного рабочего процесса хорошо все подготовить перед импортом в Unity.

Относительно функциональности объектов и их динамических частей — ваши модели должны быть хорошо разделены. Чем меньше подобъектов, тем лучше. Отдельные части объекта на всякий случай, когда они вам нужны, например, для динамического перемещения или вращения, для целей анимации или других взаимодействий. Каждый объект и его подобъекты должны иметь свою точку опоры, правильно выровненную и повернутую относительно своей основной функции. Главный объект должен иметь ось Z, указывающую вперед, а точка поворота должна быть внизу объекта для лучшего размещения на сцене. Используйте как можно меньше материалов на объектах (подробнее об этом ниже).

Все активы должны иметь собственные имена, которые легко описывают их тип и функциональность. Сохраняйте эту последовательность во всех своих проектах.

Создать прототип и реализовать функциональность в Unity довольно просто. Вы можете легко перетаскивать любые ссылки на другие объекты, обращаться к каждому отдельному объекту в сцене и получать доступ к каждому его компоненту. Однако это также может быть потенциально опасным. Помимо заметных проблем с производительностью (поиск объекта в иерархии и доступ к компонентам имеют свои накладные расходы), существует также большая опасность сделать части вашего кода полностью зависимыми друг от друга. Или зависимость от других систем и сценариев, уникальных для вашего приложения, или даже от текущей сцены или текущего сценария. Попробуйте использовать более модульный подход и создавайте повторно используемые части, которые можно использовать в других частях вашего приложения или даже совместно использовать во всем вашем портфолио приложений. Создайте свою платформу и библиотеки на основе API Unity так же, как вы создаете свою базу знаний.

Для этого существует множество различных подходов. Хорошей отправной точкой является сама система компонентов Unity. Сложности могут возникнуть, когда определенным компонентам необходимо взаимодействовать с другими системами приложения. Для этого вы можете использовать интерфейсы, чтобы сделать части вашей системы более абстрактными и повторно используемыми. В качестве альтернативы вы можете использовать подход, управляемый событиями, для реагирования на определенные события извне, либо путем создания системы обмена сообщениями, либо путем регистрации непосредственно в частях другой системы в качестве слушателей. Правильным подходом будет попытка отделить свойства gameObject от логики программы (по крайней мере, что-то вроде принципа модель-контроллер), потому что сложно определить, какие объекты изменяют свои свойства преобразования, такие как положение и вращение. Ответственность за это должен нести исключительно его контролер.

Постарайтесь все хорошо задокументировать. Относитесь к этому всегда так, как будто вы должны вернуться к своему коду через долгое время, и вам нужно быстро понять, что именно делает эта часть кода. Потому что на самом деле вы довольно часто будете добираться до некоторых частей вашего приложения через какое-то время, и это лишнее препятствие для быстрого перехода к проблеме. Но не переусердствуйте. Иногда вполне достаточно соответствующего имени класса, метода или свойства.

Новая линейка мобильных телефонов, консолей или настольных компьютеров никогда не будет настолько продвинутой, что не нужно будет заботиться о производительности. Оптимизация производительности всегда необходима, и она обеспечивает основу для того, чтобы ваша игра или приложение выглядело по сравнению с другими на рынке. Потому что, когда вы экономите производительность в одной части, вы можете использовать ее для доработки других частей вашего приложения.

Есть много областей для оптимизации. Целая статья была бы необходима только для того, чтобы поцарапать поверхность по этой теме. По крайней мере, я попытаюсь разделить эту область на несколько основных областей.

Обновление циклов

Не используйте элементы, требующие высокой производительности, в циклах обновления, вместо этого используйте кэширование. Типичным примером является доступ к компонентам или другим объектам в сцене или интенсивные вычисления в ваших скриптах. Если возможно, кэшируйте все в методах Awake() или измените свою архитектуру на более управляемый событиями подход, чтобы запускать вещи только тогда, когда они необходимы.

Экземпляры

Для объектов, экземпляры которых создаются довольно часто (например, пули в игре FPS), создайте предварительно инициализированный пул из них и просто выберите уже инициализированный пул, когда он вам понадобится, и активируйте его. Затем, вместо того, чтобы уничтожать его, когда он больше не нужен, деактивируйте его и верните в пул.

Визуализация

Используйте отсечение окклюзии или методы LOD, чтобы ограничить отображаемые части сцены. Попробуйте использовать оптимизированные модели, чтобы контролировать количество вершин в сцене. Имейте в виду, что количество вершин — это не просто количество вершин в самой модели, на него влияют и другие факторы, такие как нормали (жесткие края), координаты UV (швы UV) и цвета вершин. Кроме того, количество динамических источников света в сцене сильно повлияет на общую производительность, поэтому старайтесь запекать все заранее, когда это возможно.

Вызовы рисования

Проблемы с перерисовкой

Не используйте прозрачные текстуры без необходимости, так как это приведет к проблемам со скоростью заполнения. Его можно использовать для сложной и более удаленной геометрии, такой как деревья или кусты. Когда вам нужно его использовать, отдавайте предпочтение шейдерам с альфа-смешением вместо шейдеров с альфа-тестированием или вместо шейдеров-вырезов для мобильных платформ. Для выявления этих проблем в целом попробуйте уменьшить разрешение вашего приложения. Если это поможет, возможно, у вас есть эти проблемы со скоростью заполнения, или вам нужно больше оптимизировать свои шейдеры. В противном случае может возникнуть проблема с памятью.

Шейдеры

Оптимизируйте шейдеры для повышения производительности.Сократите количество проходов, используйте переменные с меньшей точностью, замените сложные математические вычисления предварительно сгенерированными поисковыми текстурами.

Всегда используйте профилировщик для определения узких мест. Это отличный инструмент. Для рендеринга вы также можете использовать замечательный отладчик кадров, который поможет вам узнать много нового о том, как все работает в целом, при декомпозиции процессов рендеринга с его помощью.

Необходимо понимать, что, несмотря на то, что сборщик мусора (GC) сам по себе помогает нам быть действительно эффективными и сосредоточиться на важных вещах в программировании, есть несколько вещей, о которых мы должны четко знать. Использование GC не бесплатно. Как правило, нам следует избегать ненужного выделения памяти, чтобы сборщик мусора не срабатывал слишком часто и, таким образом, не снижал производительность скачками частоты кадров. В идеале вообще не должно происходить никаких новых выделений памяти, происходящих регулярно в каждом кадре. Однако как мы можем достичь этой цели? Это действительно определяется архитектурой приложения, но есть несколько правил, которым вы можете следовать:

  • Избегайте ненужных выделений памяти в циклах обновления.
  • Используйте структуры для простых контейнеров свойств, поскольку они не размещаются в куче.
  • Попробуйте предварительно выделить массивы, списки или другие наборы объектов, а не создавать их внутри циклов обновления.
  • Избегайте использования моно проблематичных вещей (например, выражений LINQ или циклов foreach), поскольку Unity использует более старую, не идеально оптимизированную версию Mono (на момент написания это модифицированная версия 2.6, с обновлением в планах) .
  • Кэшировать строки в методах Awake() или в событиях.
  • Если необходимо обновить строковое свойство в цикле обновления, используйте объект StringBuilder вместо строки.
  • Используйте профилировщик для выявления потенциальных проблем.

Необходимо обращать внимание на минимальное использование памяти и пространства приложением с самого начала проекта, так как сделать это сложнее, когда вы оставляете оптимизацию на стадии предварительного выпуска. На мобильных устройствах это даже важнее, потому что там у нас довольно мало ресурсов. Кроме того, превысив 100 МБ размера установки, мы можем потерять значительное количество наших клиентов. Это связано с ограничением в 100 МБ для загрузки по сотовой сети, а также с психологическими причинами. Всегда лучше, когда ваше приложение не тратит впустую драгоценные телефонные ресурсы клиента, и они с большей вероятностью загрузят или купят ваше приложение, когда его размер будет меньше.

Для поиска поглотителей ресурсов вы можете использовать журнал редактора, где вы можете увидеть (после каждой новой сборки) размер ресурсов, разделенных на отдельные категории, такие как аудио, текстуры и библиотеки DLL. Для лучшей ориентации в Unity Asset Store есть расширения редактора, которые предоставят вам подробную сводку со ссылками на ресурсы и файлы в вашей файловой системе. Фактическое потребление памяти также можно увидеть в профилировщике, но рекомендуется протестировать его при подключении для сборки на вашей целевой платформе, потому что при тестировании в редакторе или на чем-либо другом, отличном от целевой платформы, возникает много несоответствий.

Больше всего памяти часто потребляют текстуры. Желательно использовать сжатые текстуры, так как они занимают гораздо меньше места и памяти. Сделайте все текстуры квадратными, в идеале сделайте длину обеих сторон степенью двойки (POT), но имейте в виду, что Unity также может автоматически масштабировать текстуры NPOT до POT. Текстуры могут быть сжаты в форме POT. Атласные текстуры вместе, чтобы заполнить всю текстуру. Иногда вы даже можете использовать альфа-канал текстуры для дополнительной информации для ваших шейдеров, чтобы сэкономить дополнительное место и производительность. И, конечно же, старайтесь максимально повторно использовать текстуры для своих сцен и используйте повторяющиеся текстуры, когда это возможно, чтобы сохранить хороший внешний вид. Для младших устройств вы можете понизить разрешение текстур в настройках качества. Используйте сжатый аудиоформат для более длинных аудиоклипов, таких как фоновая музыка.

Когда вы имеете дело с разными платформами, разрешениями или локализациями, вы можете использовать наборы ресурсов для использования разных наборов текстур для разных устройств или пользователей. Эти пакеты ресурсов можно динамически загружать из Интернета после установки приложения. Таким образом, вы сможете превысить ограничение в 100 МБ, загружая ресурсы во время игры.

Иногда, перемещая объекты в сцене, мы не осознаем, что на объекте есть коллайдер и что изменение его положения заставит движок пересчитывать весь физический мир заново. В этом случае вам следует добавить к нему компонент Rigidbody (вы можете установить его в некинематический, если не хотите, чтобы внешние силы были задействованы).

Чтобы изменить положение объекта с Rigidbody на нем, всегда устанавливайте Rigidbody.position, если новое положение не следует за предыдущим, или Rigidbody.MovePosition, если это непрерывное движение, которое также учитывает интерполяцию.При его изменении применяйте операции всегда в FixedUpdate , а не в функциях обновления. Это обеспечит последовательное поведение физики.

Если возможно, используйте примитивные коллайдеры на игровых объектах, такие как сфера, коробка или цилиндр, а не коллайдеры сетки. Вы можете составить свой окончательный коллайдер из более чем одного из этих коллайдеров. Физика может быть узким местом производительности вашего приложения из-за накладных расходов ЦП, а коллизии между примитивными коллайдерами вычисляются намного быстрее. Вы также можете настроить параметр «Фиксированный временной шаг» в диспетчере времени, чтобы уменьшить частоту фиксированных обновлений физики, когда точность физического взаимодействия не так важна.

Иногда может возникать тенденция тестировать функциональность вручную, экспериментируя в игровом режиме, потому что это довольно весело, и у вас есть все под вашим непосредственным контролем. Но этот холодный фактор может довольно быстро уменьшиться. Чем сложнее становится приложение, тем больше утомительных задач приходится повторять и обдумывать программисту, чтобы убедиться, что приложение ведет себя так, как было задумано изначально. Он легко может стать худшей частью всего процесса разработки из-за своего повторяющегося и пассивного характера. Кроме того, поскольку ручное повторение сценариев тестирования не так уж весело, высока вероятность того, что некоторые ошибки пройдут через весь процесс тестирования.

В Unity есть отличные инструменты тестирования для автоматизации этого процесса. При соответствующей архитектуре и дизайне кода вы можете использовать модульные тесты для тестирования изолированных функций или даже интеграционные тесты для тестирования более сложных сценариев. Вы можете значительно сократить использование метода попробуй-проверить, когда вы регистрируете фактические данные и сравниваете их с желаемым состоянием.

Ручное тестирование, без сомнения, является важной частью разработки. Но его количество можно уменьшить, и весь процесс может быть более надежным и быстрым. Когда нет возможности автоматизировать это, подготовьте свои тестовые сцены, чтобы иметь возможность как можно быстрее разобраться в проблеме, которую вы пытаетесь решить. В идеале через несколько кадров после нажатия кнопки воспроизведения. Внедрите ярлыки или читы, чтобы установить желаемое состояние для тестирования. Кроме того, сделайте ситуацию тестирования изолированной, чтобы убедиться, что вызывает проблему. Каждая лишняя секунда в игровом режиме при тестировании накапливается, и чем больше изначальный уклон тестирования задачи, тем больше вероятность, что вы вообще не будете тестировать задачу, а будете надеяться, что все работает просто отлично. Но вряд ли.

Поверьте мне; они не будут. При работе с некоторыми клиентами я иногда сталкивался с тенденцией или пережитками прошлого использования плагинов хранилища активов для каждой мелочи. Я не имею в виду, что в Unity Asset Store нет полезных расширений Unity. Их много, и иногда даже сложно определиться, какой из них выбрать. Но для каждого проекта важно сохранять согласованность, которую можно разрушить из-за неразумного использования разных частей, которые плохо сочетаются друг с другом.

С другой стороны, для функциональности, на реализацию которой у вас уйдет много времени, всегда полезно использовать хорошо протестированные продукты из Unity Asset Store, которые могут сэкономить вам огромное количество времени на разработку. Тем не менее, выбирайте тщательно, используйте проверенные, которые не принесут много неконтролируемых и странных ошибок в ваш конечный продукт. Пятизвездочные отзывы — хороший показатель для начала.

Если желаемую функциональность реализовать несложно, просто добавьте ее в свои постоянно растущие личные (или корпоративные) библиотеки, которые впоследствии можно будет снова использовать во всех ваших проектах. Таким образом вы одновременно совершенствуете свои знания и набор инструментов.

Иногда может показаться, что среды Unity Editor вполне достаточно для базового тестирования игр и дизайна уровней, а расширять ее — пустая трата времени. Но поверьте мне, это не так. Большой потенциал расширения Unity заключается в возможности адаптировать его к конкретным задачам, которые необходимо решать в различных проектах. Это может либо улучшить взаимодействие с пользователем при работе в Unity, либо значительно ускорить весь рабочий процесс разработки и дизайна уровней. Было бы прискорбно не использовать встроенные функции, такие как встроенные или настраиваемые ящики свойств, ящики декораторов, пользовательские настройки инспектора компонентов или даже не создавать целые плагины с собственными окнами редактора.

Заключение

Я надеюсь, что эти темы будут вам полезны по мере продвижения ваших проектов Unity. Есть много вещей, которые зависят от конкретного проекта, поэтому их нельзя применять, но всегда полезно иметь в виду некоторые основные правила при попытке решить более сложные и специфические проблемы. У вас могут быть разные мнения или подходы к решению этих проблем в ваших проектах. Самое важное — поддерживать единообразие идиом во всем проекте, чтобы любой член вашей команды мог четко понять, как следует правильно решить конкретную предметную область.

Песочница Windows поддерживает простые файлы конфигурации, которые предоставляют минимальный набор параметров настройки для песочницы. Эту функцию можно использовать с Windows 10 сборки 18342 или Windows 11. Файлы конфигурации Windows Sandbox имеют формат XML и связаны с Sandbox через расширение файла .wsb.

Файл конфигурации позволяет пользователю управлять следующими аспектами песочницы Windows:

  • vGPU (виртуализированный графический процессор): включение или отключение виртуализированного графического процессора. Если vGPU отключен, песочница будет использовать Windows Advanced Rasterization Platform (WARP).
  • Сеть: включение или отключение сетевого доступа в песочнице.
  • Сопоставленные папки: общий доступ к папкам с хоста с разрешениями чтение или запись. Обратите внимание, что раскрытие каталогов узлов может позволить вредоносному ПО повлиять на систему или украсть данные.
  • Команда входа в систему: команда, которая выполняется при запуске песочницы Windows.
  • Аудиовход: передает вход микрофона хоста в изолированную программную среду.
  • Видеовход: передает вход с веб-камеры хоста в песочницу.
  • Защищенный клиент: помещает повышенные параметры безопасности сеанса RDP в изолированную программную среду.
  • Перенаправление принтеров: общий доступ к принтерам с хоста в изолированную программную среду.
  • Перенаправление буфера обмена: совместно использует буфер обмена хоста с песочницей, чтобы текст и файлы можно было вставлять туда и обратно.
  • Память в МБ: объем памяти в мегабайтах, выделяемый для песочницы.

Создание файла конфигурации

Чтобы создать простой файл конфигурации:

Откройте текстовый редактор или редактор исходного кода (например, Блокнот, Visual Studio Code и т. д.)

Вставьте следующие строки:

Добавьте соответствующий текст конфигурации между двумя строками. Подробнее см. правильный синтаксис и примеры ниже.

Сохраните файл под нужным именем, но убедитесь, что его расширение .wsb . В Блокноте вы должны заключить имя файла и расширение в двойные кавычки, например. "Мой файл конфигурации.wsb" .

Использование файла конфигурации

Ключевые слова, значения и ограничения

Включает или отключает совместное использование графического процессора.

  • Включить: включает поддержку vGPU в песочнице.
  • Отключить: отключает поддержку vGPU в песочнице. Если задано это значение, песочница будет использовать программный рендеринг, который может быть медленнее, чем виртуальный графический процессор.
  • По умолчанию Это значение по умолчанию для поддержки vGPU. В настоящее время это означает, что vGPU отключен.

Включение виртуализированного графического процессора потенциально может увеличить поверхность атаки песочницы.

Сеть

Включает или отключает сеть в песочнице. Вы можете отключить доступ к сети, чтобы уменьшить уязвимость песочницы для атак.

  • Отключить: отключает работу сети в песочнице.
  • По умолчанию: это значение по умолчанию для сетевой поддержки. Это значение включает сеть, создавая виртуальный коммутатор на узле и подключая к нему песочницу через виртуальный сетевой адаптер.

Включение сети может сделать ненадежные приложения доступными во внутренней сети.

Сопоставленные папки

Массив папок, каждая из которых представляет расположение на хост-компьютере, к которому будет предоставлен общий доступ в песочнице по указанному пути. В настоящее время относительные пути не поддерживаются. Если путь не указан, папка будет сопоставлена ​​с рабочим столом пользователя контейнера.

HostFolder: указывает папку на хост-компьютере, которую нужно открыть в песочнице. Обратите внимание, что папка уже должна существовать на хосте, иначе контейнер не запустится.

SandboxFolder: указывает место назначения в песочнице, с которым сопоставляется папка. Если папка не существует, она будет создана. Если папка песочницы не указана, папка будет сопоставлена ​​с рабочим столом контейнера.

Только чтение. Если задано значение true, принудительно применяется доступ только для чтения к общей папке из контейнера. Поддерживаемые значения: true/false. По умолчанию false.

Файлы и папки, сопоставленные с хоста, могут быть скомпрометированы приложениями в песочнице или потенциально повлиять на хост.

Команда входа

Определяет одну команду, которая будет вызываться автоматически после входа в песочницу. Приложения в песочнице запускаются под учетной записью пользователя контейнера.

Команда: путь к исполняемому файлу или сценарию внутри контейнера, который будет выполняться после входа в систему.

Хотя очень простые команды будут работать (например, запуск исполняемого файла или сценария), более сложные сценарии, включающие несколько шагов, следует поместить в файл сценария. Этот файл сценария можно сопоставить с контейнером через общую папку, а затем выполнить с помощью директивы LogonCommand.

Аудиовход

Включает или отключает ввод звука в песочницу.

  • Включить: включает аудиовход в песочнице.Если это значение установлено, песочница сможет получать аудиовход от пользователя. Эта возможность может потребоваться приложениям, использующим микрофон.
  • Отключить: отключает аудиовход в песочнице. Если установлено это значение, песочница не может получать аудиовход от пользователя. Приложения, использующие микрофон, могут работать неправильно с этим параметром.
  • По умолчанию: это значение по умолчанию для поддержки аудиовхода. В настоящее время это означает, что аудиовход включен.

Предоставление аудиовхода хоста контейнеру может иметь последствия для безопасности.

Видеовход

Включает или отключает ввод видео в песочницу.

  • Включить: включение видеовхода в тестовой среде.
  • Отключить: отключает видеоввод в песочнице. Приложения, использующие видеовход, могут неправильно работать в песочнице.
  • По умолчанию: это значение по умолчанию для поддержки видеовхода. В настоящее время это означает, что видеовход отключен. Приложения, использующие видеовход, могут неправильно работать в песочнице.

Отображение видеовхода хоста в контейнере может иметь последствия для безопасности.

Защищенный клиент

Применяет дополнительные параметры безопасности к клиенту удаленного рабочего стола в песочнице, уменьшая его поверхность атаки.

  • Включить: запуск тестовой среды Windows в режиме защищенного клиента. Если задано это значение, тестовая среда работает с включенными дополнительными мерами безопасности.
  • Отключить. Песочница работает в стандартном режиме без дополнительных мер безопасности.
  • По умолчанию: это значение по умолчанию для режима защищенного клиента. В настоящее время это означает, что песочница не работает в режиме защищенного клиента.

Этот параметр может ограничить возможность пользователя копировать/вставлять файлы в тестовую среду и из нее.

Перенаправление принтера

Включает или отключает общий доступ к принтеру с хоста в песочнице.

  • Включить: разрешает общий доступ к хост-принтерам в песочнице.
  • Отключить: отключает перенаправление принтеров в песочнице. Если задано это значение, песочница не может просматривать принтеры с хоста.
  • По умолчанию: это значение по умолчанию для поддержки перенаправления принтеров. В настоящее время это означает, что перенаправление принтеров отключено.

Перенаправление буфера обмена

Включает или отключает совместное использование буфера обмена узла с песочницей.

  • Отключить: отключает перенаправление буфера обмена в песочнице. Если установлено это значение, копирование и вставка в песочнице и из нее будет ограничено.
  • По умолчанию: это значение по умолчанию для перенаправления буфера обмена. В настоящее время копирование и вставка между хостом и песочницей разрешены в разделе По умолчанию.

Память в МБ

Указывает объем памяти, который песочница может использовать в мегабайтах (МБ).

Если указанного объема памяти недостаточно для загрузки песочницы, он будет автоматически увеличен до требуемого минимального объема.

Пример 1

Следующий файл конфигурации можно использовать для простого тестирования загруженных файлов в песочнице. Для этого сеть и vGPU отключены, а песочнице разрешен доступ только для чтения к общей папке загрузок. Для удобства команда входа в систему открывает папку загрузок внутри песочницы при ее запуске.

Загрузки.wsb

Пример 2

Следующий файл конфигурации устанавливает Visual Studio Code в песочнице, что требует немного более сложной настройки LogonCommand.

Две папки сопоставляются с песочницей; первый (SandboxScripts) содержит VSCodeInstall.cmd, который установит и запустит код Visual Studio. Предполагается, что вторая папка (CodingProjects) содержит файлы проекта, которые разработчик хочет изменить с помощью Visual Studio Code.

Поскольку сценарий установщика Visual Studio Code уже сопоставлен с песочницей, команда LogonCommand может ссылаться на него.

Если вы столкнулись с утечкой памяти в проводнике Windows 11, у нас есть несколько советов.

Протекающий кран

Инсайдеры Windows 11 обнаружили утечку памяти в проводнике новой операционной системы. Похоже, что для некоторых это было перенесено в окончательную сборку новейшей ОС Microsoft, и это означает, что многие пользователи застревают в своей оперативной памяти, отказываясь освобождать память, выделенную для File Explorer, даже после закрытия каждого экземпляра.

Для пользователей, которые не выключают свои компьютеры на ночь, и особенно для тех, у кого установлены минимальные комплекты памяти, это может превратиться в настоящую проблему, вызывая замедление работы системы и зависание до тех пор, пока память не будет окончательно освобождена.

Пока от Microsoft не появится официальное исправление утечки памяти, пользователям придется искать собственные обходные пути.Мы проверили самую последнюю сборку Windows 11 Insider Preview для разработчиков, и в этой сборке 22471.1000 утечка по-прежнему очевидна.

Итак, чтобы ваш компьютер за ночь не превратился в громоздкую картофелину с RGB-подсветкой, вот как проверить наличие утечки памяти в проводнике Windows 11 и что с этим делать.

Проверьте, нет ли в вашей системе утечки памяти

Чтобы проверить, влияет ли утечка памяти на вашу систему Windows 11, нажмите Win+R, вставьте resmon в появившееся поле и нажмите Enter. Откроется Монитор ресурсов, который поможет вам определить, какая часть оперативной памяти вашего ПК (или физической памяти) используется определенными процессами в любой момент времени.

Перейдите на вкладку "Память" и выполните сортировку по максимальной фиксации (КБ); там вы увидите, какие процессы занимают больше всего физической памяти. Прежде чем делать что-либо еще, убедитесь, что внизу отображается правильный общий объем физической памяти. Он должен совпадать с общим объемом оперативной памяти, установленной вами. В противном случае вы можете столкнуться с аппаратной проблемой.

Если ваши итоги верны, отправка спама Win+E сейчас должна вывести файл explorer.exe на первое место в списке, в зависимости от того, сколько других процессов, интенсивно использующих память, вы используете. Проверьте его в разделе «Процессы», чтобы не потерять его, и обратите внимание, сколько памяти было выделено для него перед следующим шагом. Если произойдет сбой и перезапустится сам процесс, вам придется начать этот шаг заново.

Если нет, закройте все открытые экземпляры проводника (просто щелкните правой кнопкой мыши значок папки на панели задач и выберите «Закрыть все окна»). Количество коммитов должно уменьшаться, так как память автоматически освобождается для использования другими программами.

Если кэш-память не освобождается или только немного уменьшается перед остановкой на длительный период, ваша система, вероятно, стала жертвой утечки памяти в проводнике Windows 11. Обязательно зарегистрируйте проблему в Центре отзывов, чтобы довести ее до сведения Microsoft.

К счастью, есть несколько способов продержаться до тех пор, пока Microsoft не выпустит официальное исправление. Первое из них вы можете сделать прямо сейчас.

Вернуться к Windows 10.

Если вы только что выполнили обновление, вы всегда можете вернуться к Windows 10. Эта опция останется на вкладке «Центр обновления Windows» в настройках в течение 10 дней после перехода, прежде чем ваша предыдущая версия ОС будет удалена, чтобы освободить место на диске.

Если вы собираетесь использовать Windows 11, попробуйте вручную освободить кэш-память с помощью диспетчера задач.

Освобождение оперативной памяти вручную

Это не самое практичное решение, но самое быстрое. Это освободит место, необходимое для выполнения следующих шагов, если ваша системная память иссякает и замедляется.

Сначала нажмите Ctrl+Alt+Del на клавиатуре или щелкните правой кнопкой мыши логотип Windows на панели задач и откройте Диспетчер задач. Затем найдите проводник Windows в списке процессов, щелкните его правой кнопкой мыши и выберите «Перезапустить».

Ваш диспетчер задач может выглядеть иначе в Windows 11, я просто отказался от обновления. (Изображение предоставлено Microsoft)

На данный момент это должно освободить удерживаемые ресурсы памяти, но это ни в коем случае не окончательное решение. Вам придется не забывать делать это регулярно, если вы не выключите компьютер часто, и это может занять много времени, а также просто неудобно.

Сторонние программные решения

В будущем существует несколько программных решений, которые могут автоматически освобождать данные кэша, чтобы вам не приходилось помнить об этом вручную, например CleanMem или EmptyStandbyList. У Razer Cortex даже есть подобное средство. Однако имейте в виду, что всегда будут существовать риски, связанные с загрузкой стороннего программного обеспечения для решения ваших проблем.

Даже если вы можете подтвердить, что выбранное вами программное обеспечение не содержит вредоносных программ, существует вероятность того, что оно может использовать больше оперативной памяти, чем проблема, которую вы пытаетесь устранить. Пользователи даже сообщали о блокировке некоторых игр из-за того, что программное обеспечение для очистки памяти было ошибочно принято за мошенническое ПО.

Поэтому мы рекомендуем использовать метод очистки вручную, пока Microsoft не предложит что-то действенное.

К черту спорт, Кэти предпочла бы, чтобы Intel, AMD и Nvidia соревновались в этом. Ее часто можно увидеть восхищающейся достижениями искусственного интеллекта, вздыхающей о полупроводниках или глазеющей на последние обновления графического процессора. Она была одержима компьютерами и графикой с самого детства, а в университете получила степень магистра по игровому искусству и дизайну. Ее жажда абсурдных проектов Raspberry Pi никогда не будет утолена, и она не остановится ни перед чем, чтобы распространять информацию о безопасности в Интернете — долой хакеров.

Теперь мы знаем, как просматривать файлы и каталоги, но как их создавать?

В этом выпуске мы узнаем о создании и перемещении файлов и каталогов на примере каталога для упражнений/записи.

Шаг первый: посмотрите, где мы находимся и что у нас уже есть

Мы по-прежнему должны находиться в каталоге shell-lesson-data на рабочем столе, что мы можем проверить, используя:

Далее мы перейдем в каталог для упражнений/записи и посмотрим, что в нем содержится:

Создать каталог

Давайте создадим новый каталог с именем thesis с помощью команды mkdir thesis (у которой нет вывода):

Как можно догадаться по названию, mkdir означает «создать каталог». Поскольку тезис является относительным путем (т. е. не имеет начального слэша, например /what/ever/thesis ), новый каталог создается в текущем рабочем каталоге:

Поскольку мы только что создали каталог тезисов, в нем еще ничего нет:

Обратите внимание, что mkdir не ограничивается созданием отдельных каталогов по одному. Параметр -p позволяет mkdir создать каталог с вложенными подкаталогами за одну операцию:

Опция -R команды ls отобразит список всех вложенных подкаталогов внутри каталога. Давайте используем ls -FR для рекурсивного отображения новой иерархии каталогов, которую мы только что создали в каталоге проекта:

Два способа сделать одно и то же

Использование оболочки для создания каталога ничем не отличается от использования проводника. Если вы откроете текущий каталог с помощью графического проводника вашей операционной системы, каталог тезисов также появится там. Хотя оболочка и файловый менеджер — это два разных способа взаимодействия с файлами, сами файлы и каталоги одинаковы.

Хорошие имена для файлов и каталогов

  1. Не используйте пробелы.

    Пробелы могут сделать имя более осмысленным, но, поскольку пробелы используются для разделения аргументов в командной строке, лучше избегать их в именах файлов и каталоги. Вместо этого вы можете использовать - или _ (например, north-pacific-gyre/ , а не north pacific gyre/ ). Чтобы проверить это, попробуйте ввести mkdir north pacific gyre и посмотрите, какой каталог (или каталоги!) создается при проверке с помощью ls -F .

  2. Не начинайте имя с - (тире).

    Команды рассматривают имена, начинающиеся с -, как параметры.

  3. Наклеивайте буквы, цифры, . (точка или точка), - (тире) и _ (подчеркивание).

    Многие другие символы имеют особое значение в командной строке. О некоторых из них мы узнаем на этом уроке. Существуют специальные символы, которые могут привести к неправильной работе вашей команды и даже к потере данных.

Создать текстовый файл

Давайте изменим наш рабочий каталог на thesis с помощью cd , затем запустим текстовый редактор Nano, чтобы создать файл с именем draft.txt :

Какой редактор?

Когда мы говорим, что nano — это текстовый редактор, мы на самом деле имеем в виду текст: он может работать только с простыми символьными данными, а не с таблицами, изображениями или любым другим удобным для человека носителем. Мы используем его в примерах, потому что это один из наименее сложных текстовых редакторов. Однако из-за этой особенности он может быть недостаточно мощным или достаточно гибким для работы, которую вам нужно будет выполнить после этого семинара. В системах Unix (таких как Linux и macOS) многие программисты используют Emacs или Vim (на изучение обоих требуется больше времени) или графический редактор, такой как Gedit. В Windows вы можете использовать Notepad++. В Windows также есть встроенный редактор под названием «Блокнот», который можно запустить из командной строки так же, как и nano для целей этого урока.

Независимо от того, какой редактор вы используете, вам необходимо знать где он ищет и сохраняет файлы. Если вы запустите его из оболочки, он (вероятно) будет использовать ваш текущий рабочий каталог в качестве местоположения по умолчанию. Если вы используете меню «Пуск» вашего компьютера, вместо этого он может захотеть сохранить файлы на рабочем столе или в каталоге документов. Вы можете изменить это, перейдя в другой каталог при первом нажатии кнопки «Сохранить как…»

Давайте напечатаем несколько строк текста. Как только мы довольны нашим текстом, мы можем нажать Ctrl + O (нажмите клавишу Ctrl или Control и, удерживая ее, нажмите клавишу O), чтобы записать наши данные на диск (нас спросят, какой файл мы хотим чтобы сохранить это в: нажмите клавишу «Ввод», чтобы принять предложенный по умолчанию вариант draft.txt ).

скриншот текстового редактора nano в действии

После того, как наш файл будет сохранен, мы можем использовать Ctrl + X, чтобы выйти из редактора и вернуться в оболочку.

Control, Ctrl или клавиша ^

  • Control-X
  • Control+X
  • Ctrl + X
  • Ctrl+X
  • ^X
  • C-x

nano не оставляет никаких выводов на экране после выхода, но теперь ls показывает, что мы создали файл с именем draft.txt :

Создание файлов другим способом

Мы увидели, как создавать текстовые файлы с помощью редактора nano. Теперь попробуйте следующую команду:

  1. Что сделала сенсорная команда? Когда вы просматриваете свой текущий каталог с помощью проводника файлов с графическим интерфейсом, отображается ли файл?

  2. Используйте ls -l для проверки файлов. Насколько велик my_file.txt?

  3. В каких случаях вам может понадобиться создать файл таким образом?

Решение

  1. Команда touch создает новый файл с именем my_file.txt в вашем текущем каталоге. Вы можете просмотреть этот вновь сгенерированный файл, набрав ls в командной строке. my_file.txt также можно просмотреть в проводнике файлов с графическим интерфейсом.

  2. При проверке файла с помощью ls -l обратите внимание, что размер файла my_file.txt равен 0 байт. Другими словами, он не содержит данных. Если вы откроете файл my_file.txt в текстовом редакторе, он будет пустым.

  3. Некоторые программы сами не создают выходные файлы, а вместо этого требуют, чтобы уже были созданы пустые файлы. Когда программа запускается, она ищет существующий файл для заполнения выходными данными. Команда touch позволяет эффективно создавать пустой текстовый файл для использования такими программами.

Что в имени?

Возможно, вы заметили, что все файлы Нелле называются "что-то точка-что-то", и в этой части урока мы всегда использовали расширение .txt . Это всего лишь соглашение: мы можем назвать файл mythesis или почти что угодно. Тем не менее, большинство людей большую часть времени используют имена, состоящие из двух частей, чтобы помочь им (и их программам) различать разные типы файлов. Вторая часть такого имени называется расширением имени файла и указывает, какой тип данных содержит файл: .txt указывает на обычный текстовый файл, .pdf указывает на PDF-документ, .cfg — это файл конфигурации, полный параметров для какой-либо программы или другое, .jpg — изображение в формате PNG и т. д.

Это всего лишь условное обозначение, хотя и важное. Файлы содержат байты: мы и наши программы должны интерпретировать эти байты в соответствии с правилами для простых текстовых файлов, документов PDF, файлов конфигурации, изображений и т. д.

Именование PNG-изображения кита поскольку whit.mp3 каким-то волшебным образом не превращает его в запись песни кита, хотя может заставить операционную систему попытаться открыть его с помощью музыкального проигрывателя, когда кто-то дважды щелкнет по нему.

Перемещение файлов и каталогов

Возвращаясь к каталогу shell-lesson-data/writing,

В нашем каталоге тезисов у нас есть файл draft.txt с не слишком информативным именем, поэтому давайте изменим имя файла с помощью mv , что является сокращением от «move»:

Первый аргумент сообщает mv, что мы «перемещаем», а второй — куда это должно двигаться. В этом случае мы перемещаем thesis/draft.txt в thesis/quotes.txt, что имеет тот же эффект, что и переименование файла. Действительно, ls показывает нам, что тезис теперь содержит один файл с именем quotes.txt:

Нужно быть осторожным при указании имени целевого файла, так как mv молча перезапишет любой существующий файл с таким же именем, что может привести к потере данных. Дополнительный параметр mv -i (или mv --interactive ) можно использовать, чтобы заставить mv запрашивать подтверждение перед перезаписью.

Обратите внимание, что mv также работает с каталогами.

Давайте переместим файл quotes.txt в текущий рабочий каталог. Мы снова используем mv, но на этот раз мы будем использовать только имя каталога в качестве второго аргумента, чтобы сообщить mv, что мы хотим сохранить имя файла, но поместим файл в новое место. (Вот почему команда называется «переместить».) В этом случае имя каталога, которое мы используем, является специальным именем каталога. о которых мы упоминали ранее.

В результате файл перемещается из каталога, в котором он находился, в текущий рабочий каталог. ls теперь показывает нам, что тезис пуст:

Кроме того, мы можем подтвердить, что файл quotes.txt больше не присутствует в каталоге тезисов, явно попытавшись указать его в списке:

ls с именем файла или каталога в качестве аргумента выводит только запрошенный файл или каталог. Если файл, указанный в качестве аргумента, не существует, оболочка возвращает ошибку, как мы видели выше. Мы можем использовать это, чтобы увидеть, что файл quotes.txt теперь присутствует в нашем текущем каталоге:

Перемещение файлов в новую папку

После выполнения следующих команд Джейми понимает, что поместила файлы sucrose.dat и maltose.dat не в ту папку. Файлы должны были быть помещены в папку raw.

Заполните пробелы, чтобы переместить эти файлы в папку raw/ (то есть в ту, куда она забыла их положить)

Решение

Напоминаем, что .. относится к родительскому каталогу (т. е. каталогу выше текущего), а . относится к текущему каталогу.

Копирование файлов и каталогов

Команда cp очень похожа на mv, за исключением того, что она копирует файл, а не перемещает его. Мы можем проверить, правильно ли он поступил, используя ls с двумя путями в качестве аргументов — как и большинству команд Unix, ls можно указать сразу несколько путей:

Мы также можем скопировать каталог и все его содержимое, используя рекурсивную опцию -r , например для резервного копирования каталога:

Мы можем проверить результат, перечислив содержимое папки thesis и thesis_backup:

Переименование файлов

  1. cp statstics.txt Statistics.txt
  2. Статистика mv statstics.txt.текст
  3. mv statstics.txt .
  4. cp statstics.txt.

Решение

  1. Нет. Хотя при этом будет создан файл с правильным именем, файл с неправильным именем все еще существует в каталоге, и его необходимо удалить.
  2. Да, переименовать файл можно.
  3. Нет, точка (.) указывает, куда переместить файл, но не дает нового имени файла; одинаковые имена файлов не могут быть созданы.
  4. Нет, точка (.) указывает, куда копировать файл, но не дает нового имени файла; одинаковые имена файлов не могут быть созданы.

Перемещение и копирование

Что выводит закрывающая команда ls в показанной ниже последовательности?

  1. белки-сохраненные.dat рекомбинированы
  2. воссоединено
  3. белки.dat рекомбинированы
  4. proteins-saved.dat

Решение

  1. Нет, см. объяснение выше. .profiles-saved.dat находится в папке /Users/jamie
  2. Да
  3. Нет, см. объяснение выше. .projects.dat находится в папке /Users/jamie/data/recombined
  4. Нет, см. объяснение выше. .profiles-saved.dat находится в папке /Users/jamie

Удаление файлов и каталогов

Возвращаясь к каталогу shell-lesson-data/writing, давайте наведем порядок в этом каталоге, удалив созданный нами файл quotes.txt. Для этого мы будем использовать команду Unix — rm (сокращение от «удалить»):

Мы можем подтвердить, что файл исчез, используя ls :

Удаление навсегда

В оболочке Unix нет корзины для мусора, из которой мы можем восстановить удаленные файлы (хотя в большинстве графических интерфейсов Unix она есть). Вместо этого, когда мы удаляем файлы, они отсоединяются от файловой системы, чтобы их место на диске можно было использовать повторно. Инструменты для поиска и восстановления удаленных файлов существуют, но нет гарантии, что они сработают в той или иной конкретной ситуации, поскольку компьютер может сразу же освободить место на диске файла.

Безопасное использование rm

Что происходит, когда мы выполняем команду rm -i thesis_backup/quotations.txt? Зачем нам нужна эта защита при использовании rm ?

Решение

Опция -i будет запрашивать перед (каждым) удалением (используйте Y, чтобы подтвердить удаление, или N, чтобы сохранить файл). Оболочка Unix не имеет корзины для мусора, поэтому все удаленные файлы исчезнут навсегда. С помощью параметра -i у нас есть возможность убедиться, что мы удаляем только те файлы, которые хотим удалить.

Если мы попытаемся удалить каталог тезисов с помощью rm thesis , мы получим сообщение об ошибке:

Это происходит потому, что rm по умолчанию работает только с файлами, а не с каталогами.

rm может удалить каталог и все его содержимое, если мы используем рекурсивную опцию -r , и он сделает это без каких-либо запросов на подтверждение:

Учитывая, что нет возможности восстановить файлы, удаленные с помощью оболочки, rm -r следует использовать с большой осторожностью (можно рассмотреть возможность добавления интерактивной опции rm -r -i ).

Операции с несколькими файлами и каталогами

Часто бывает необходимо скопировать или переместить несколько файлов одновременно. Это можно сделать, указав список имен отдельных файлов или указав шаблон именования с помощью подстановочных знаков.

Копировать с несколькими именами файлов

В этом упражнении вы можете протестировать команды в каталоге shell-lesson-data/exercise-data.

В приведенном ниже примере что делает cp, если задано несколько имен файлов и имя каталога?

В приведенном ниже примере что делает cp, если задано три или более имен файлов?

Решение

Если задано более одного имени файла, за которым следует имя каталога (т. е. каталог назначения должен быть последним аргументом), cp копирует файлы в указанный каталог.

Если задано три имени файла, cp выдает ошибку, подобную приведенной ниже, поскольку в качестве последнего аргумента ожидается имя каталога.

Использование подстановочных знаков для одновременного доступа к нескольким файлам

Подстановочные знаки

* — это подстановочный знак, который соответствует нулю или более символов. Давайте рассмотрим каталог shell-lesson-data/exercise-data/proteins: *.pdb соответствует ethan.pdb, propane.pdb и всем файлам, оканчивающимся на «.pdb». С другой стороны, p*.pdb соответствует только pentane.pdb и propane.pdb , потому что «p» в начале соответствует только именам файлов, начинающимся с буквы «p».

? также является подстановочным знаком, но соответствует только одному символу. Таким образом, ?ethan.pdb будет соответствовать метану.pdb, тогда как *ethan.pdb соответствует и ethan.pdb , и метану.pdb .

Подстановочные знаки можно использовать в сочетании друг с другом, например. . ane.pdb соответствует трем символам, за которыми следует ane.pdb , что дает cubane.pdb ethan.pdb octane.pdb .

Когда оболочка видит подстановочный знак, он расширяет подстановочный знак, чтобы создать список совпадающих имен файлов перед выполнением запрошенной команды. В качестве исключения, если выражение с подстановочным знаком не соответствует ни одному файлу, Bash передаст выражение в качестве аргумента команде как есть. Например, набрав ls *.pdf в каталоге белков (который содержит только файлы с именами, заканчивающимися на .pdb ) приводит к сообщению об ошибке, что нет файла с именем *.pdf . Однако обычно такие команды, как wc и ls, видят списки имен файлов, соответствующих этим выражениям, но не сами подстановочные знаки. Именно оболочка, а не другие программы, занимается раскрытием подстановочных знаков.

Список имен файлов, соответствующих шаблону

  1. ls *t*ane.pdb
  2. ls *t?ne.*
  3. ls *t??ne.pdb
  4. этан.*

Решение

Решение 3.

1. показывает все файлы, имена которых содержат ноль или более символов (*), за которыми следует буква t, затем ноль или более символов (*), за которыми следует ane.pdb. Это дает этан.pdb метан.pdb октан.pdb пентан.pdb .

2. показывает все файлы, имена которых начинаются с нуля или более символов ( * ), за которыми следует буква t , затем один символ ( ? ), затем ne. за которым следует ноль или более символов ( * ). Это даст нам octane.pdb и pentane.pdb, но не соответствует ничему, что заканчивается на thane.pdb.

3. устраняет проблемы варианта 2, сопоставляя два символа ( ?? ) между t и ne . Это решение.

4. показывает только файлы, начинающиеся с этана. .

Подробнее о подстановочных знаках

У Сэма есть каталог, содержащий данные калибровки, наборы данных и описания наборов данных:

Прежде чем отправиться на очередную экскурсию, она хочет создать резервную копию своих данных и отправить несколько наборов данных своему коллеге Бобу. Для выполнения работы Сэм использует следующие команды:

Помогите Сэму, заполнив пустые поля.

Полученная структура каталогов должна выглядеть так

Чтобы начать работу с компьютером Raspberry Pi, вам потребуются следующие аксессуары:

Монитор компьютера или телевизор. Большинство из них должны работать как дисплей для Raspberry Pi, но для достижения наилучших результатов вам следует использовать дисплей с входом HDMI. Вам также понадобится соответствующий кабель дисплея для подключения монитора к Raspberry Pi.

Компьютерная клавиатура и мышь

Любая стандартная USB-клавиатура и мышь будут работать с Raspberry Pi.

Беспроводные клавиатуры и мыши будут работать, если они уже сопряжены друг с другом.

Параметры конфигурации раскладки клавиатуры см. в raspi-config.

Мы рекомендуем официальный блок питания Raspberry Pi, специально разработанный для постоянного обеспечения +5,1 В, несмотря на резкие колебания потребляемого тока. Эти колебания спроса часто случаются, когда вы используете периферийные устройства с Raspberry Pi, и то, с чем другие источники питания, предназначенные для обеспечения постоянного тока для зарядки мобильных телефонов, обычно не справляются. К нему также подключен кабель micro USB, что означает, что вы случайно не используете кабель низкого качества, что может стать проблемой.

Для Raspberry Pi 4 Model B и Raspberry Pi 400 следует использовать блок питания типа C; для всех остальных моделей следует использовать блок питания micro USB.

Наконец вам понадобится SD-карта. мы рекомендуем карту micro SD объемом не менее 8 ГБ и использовать Raspberry Pi Imager для установки на нее операционной системы.

Необязательные элементы

Сетевой кабель (Ethernet) для подключения Raspberry Pi к локальной сети и Интернету.

Если вы не используете монитор HDMI с динамиками, вам также может понадобиться звуковое оборудование. Звук можно воспроизводить через динамики или наушники, подключив их к разъему AV (недоступно на Raspberry Pi 400). Однако у динамиков должно быть собственное усиление, так как выходной сигнал вашего Raspberry Pi недостаточно мощный, чтобы управлять ими напрямую.

Устранение неполадок

Вы можете получить помощь по настройке Raspberry Pi на наших форумах.

Установка операционной системы

Raspberry Pi рекомендует использовать Raspberry Pi Imager для установки операционной системы на SD-карту. Для установки образа вам понадобится другой компьютер с устройством чтения SD-карт.

Использование изображения Raspberry Pi

Raspberry Pi разработала графический инструмент для записи SD-карт, который работает в Mac OS, Ubuntu 18.04 и Windows под названием Raspberry Pi Imager; это самый простой вариант для большинства пользователей, так как он автоматически загружает образ и устанавливает его на SD-карту.

Загрузите последнюю версию Raspberry Pi Imager и установите ее. Если вы хотите использовать Raspberry Pi Imager со второго Raspberry Pi, вы можете установить его из терминала, используя sudo apt install rpi-imager. Затем:

Подключите устройство чтения SD-карт с SD-картой внутри.

Откройте Raspberry Pi Imager и выберите нужную ОС из представленного списка.

Выберите SD-карту, на которую вы хотите записать изображение.

Проверьте свой выбор и нажмите кнопку "Запись", чтобы начать запись данных на SD-карту.

Теперь вы можете вставить SD-карту в Raspberry Pi и включить ее.Для ОС Raspberry Pi, если вам нужно войти в систему вручную, имя пользователя по умолчанию — pi с паролем raspberry, а раскладка клавиатуры по умолчанию — Великобритания (Великобритания).

Вы должны немедленно изменить пароль по умолчанию, чтобы обеспечить безопасность Raspberry Pi.

Дополнительные параметры

Когда у вас открыт Raspberry Pi Imager и после того, как вы выбрали операционную систему для установки, появится шестеренка, позволяющая открыть меню «Дополнительные параметры», если оно поддерживается операционной системой. Это меню позволяет выполнять такие задачи, как включение SSH или установка имени хоста Raspberry Pi перед первой загрузкой.

rpi imager< бр />

Помимо прочего, меню дополнительных параметров полезно, когда вы хотите настроить безголовый Raspberry Pi.

rpi imager 2

Загрузка изображения

Если вы используете инструмент, отличный от Raspberry Pi Imager, для записи на SD-карту, в большинстве случаев вам потребуется сначала загрузить образ, а затем использовать инструмент для записи его на карту. Официальные образы для рекомендуемых операционных систем доступны для загрузки на странице загрузок веб-сайта Raspberry Pi. Альтернативные операционные системы для компьютеров Raspberry Pi также доступны у некоторых сторонних поставщиков.

Возможно, вам потребуется разархивировать загруженный файл (.zip), чтобы получить файл изображения (.img), который необходимо записать на карту.

Установка по сети

При покупке нового Raspberry Pi вам также потребуется SD-карта с установленной на ней операционной системой. Самый простой способ перенести операционную систему на SD-карту — использовать приложение Raspberry Pi Imager, запущенное на другом компьютере, и скопировать его на SD-карту.

Но как загрузить операционную систему на SD-карту, если у вас нет другого компьютера?

Если у вас нет другого компьютера для запуска Raspberry Pi Imager, вы можете запустить приложение непосредственно на Raspberry Pi 4 или Raspberry Pi 400, подключив его к Интернету с помощью кабеля Ethernet. Это позволит вам установить операционную систему на чистую SD-карту напрямую из сети без использования другого компьютера.

Использование сетевой установки

Чтобы использовать функцию сетевой установки, вам понадобится клавиатура. В то время как к Raspberry Pi 400 всегда подключена клавиатура, если вы используете Raspberry Pi 4, вам потребуется подключить USB-клавиатуру.

Либо вставьте пустую SD-карту в слот для SD-карт Raspberry Pi, либо нажмите и удерживайте клавишу SHIFT.

Включите Raspberry Pi. Как всегда, сначала будет искать SD-карту, а затем USB-накопитель, чтобы найти загрузочный носитель. Однако, если у вас подключена клавиатура, Raspberry Pi теперь покажет экран сетевой установки.

сетевая установка 1

В фоновом режиме Raspberry Pi по-прежнему ищет загрузочный образ, но теперь вы можете начать сетевую установку, удерживая нажатой клавишу SHIFT. Затем вам будет предложено подключить Raspberry Pi к сети с помощью кабеля Ethernet.

сетевая установка 2

Подключите Raspberry Pi к сети с помощью кабеля Ethernet. Когда он обнаружит, что кабель вставлен, он должен начать загрузку установщика Raspberry Pi. Если загрузка не удалась, вы можете повторить процесс, чтобы повторить попытку.

сетевая установка 3

В конце концов должно запуститься приложение Raspberry Pi Imager, позволяющее установить полную операционную систему на чистую SD-карту или USB-накопитель.

сетевая установка 4

После установки операционной системы на чистую SD-карту вы больше не увидите экран сетевой установки при загрузке. Если вы хотите запустить его, вы можете удерживать клавишу SHIFT при включении устройства. Но будьте осторожны, чтобы не перезаписать какие-либо рабочие SD-карты, которые вы хотите сохранить!

Установка изображений в Chrome OS

Самый простой способ записать образы на SD-карту и USB-накопители с помощью Chrome OS — использовать официальную утилиту восстановления Chromebook. Его можно использовать для создания носителя для восстановления Chromebook, а также он принимает ZIP-файлы, содержащие изображения.

Загрузите ZIP-архив ОС Raspberry Pi.

Запустите утилиту восстановления

Нажмите значок шестеренки настроек в правом верхнем углу рядом со значком закрытия окна.

Выберите параметр «Использовать локальное изображение».

Выберите загруженный ZIP-файл.

Вставьте SD-карту и нажмите "Продолжить".

Прочитайте предупреждение и нажмите кнопку "Создать сейчас".

Подождите, пока индикатор выполнения не заполнится дважды (для распаковки и записи). Это может занять несколько минут. Когда процесс завершится, появится большая зеленая галочка.

Закройте программу и извлеките карту.

Установка образов в Linux

Raspberry Pi Imager, как правило, является самым простым вариантом для большинства пользователей для записи изображений на SD-карты, поэтому это хорошее место для начала. Если вам нужны дополнительные возможности в Linux, вы можете использовать стандартные инструменты командной строки ниже.

Обнаружение точки подключения SD-карты и ее размонтирование

Запустите lsblk -p, чтобы узнать, какие устройства в данный момент подключены к вашему компьютеру.

Если на вашем компьютере есть слот для SD-карт, вставьте карту. Если нет, вставьте карту в устройство чтения SD-карт, а затем подключите устройство чтения к компьютеру.

Запустите lsblk -p еще раз. Появившееся новое устройство — это ваша SD-карта (обычно это также можно определить по указанному размеру устройства). Имя устройства будет соответствовать формату, описанному в следующем абзаце.

В левом столбце результатов выполнения команды lsblk -p указано имя устройства вашей SD-карты и имена любых разделов на ней (обычно только один, но их может быть несколько, если карта ранее использовалась). Он будет указан как что-то вроде /dev/mmcblk0 или /dev/sdX (с именами разделов /dev/mmcblk0p1 или /dev/sdX1 соответственно), где X — строчная буква, обозначающая устройство (например, /dev/sdb1). ). Правая колонка показывает, где были смонтированы разделы (если они не были смонтированы, она будет пустой).

Если какие-либо разделы на SD-карте были смонтированы, размонтируйте их все с помощью umount , например, umount /dev/sdX1 (замените sdX1 на имя устройства вашей SD-карты и измените номер для любых других разделов).

Копирование изображения на SD-карту

В окне терминала запишите образ на карту с помощью приведенной ниже команды, заменив аргумент if= во входном файле на путь к вашему файлу .img, а /dev/sdX в выходном файле = аргумент с правильным именем устройства. Это очень важно, так как вы потеряете все данные на жестком диске, если укажете неправильное имя устройства. Убедитесь, что имя устройства — это имя всей SD-карты, как описано выше, а не только раздела. Например: sdd, а не sdds1 или sddp1; mmcblk0 , а не mmcblk0p1 .

Копировать в буфер обмена

Обратите внимание, что размер блока, установленный на 4 МБ, будет работать в большинстве случаев. Если нет, попробуйте 1M , хотя это займет значительно больше времени.

Копирование заархивированного изображения на SD-карту

В Linux можно объединить процесс распаковки и копирования SD в одну команду, что позволяет избежать проблем, которые могут возникнуть, если размер разархивированного образа превышает 4 ГБ. Это может произойти в некоторых файловых системах, которые не поддерживают файлы размером более 4 ГБ (например, FAT), хотя следует отметить, что в большинстве установок Linux не используется FAT и, следовательно, нет этого ограничения.

Следующая команда распаковывает zip-файл (замените 2021-10-30-raspios-bullseye-armhf.zip на соответствующее имя zip-файла) и передает выходные данные непосредственно команде dd. Это, в свою очередь, копирует его на SD-карту, как описано в предыдущем разделе.

Копировать в буфер обмена

Проверка хода копирования изображения

По умолчанию команда dd не предоставляет никакой информации о ходе выполнения, поэтому может показаться, что она зависла. Для завершения записи на карту может потребоваться больше времени. Если на вашем кард-ридере есть светодиод, он может мигать во время записи.

Чтобы увидеть ход операции копирования, вы можете запустить команду dd с параметром состояния.

Копировать в буфер обмена

Если вы используете более старую версию dd , опция состояния может быть недоступна. Вместо этого вы можете использовать команду dcfldd, которая выдаст отчет о ходе выполнения, показывающий, сколько было записано. Другой метод — отправить сигнал USR1 на dd, что позволит распечатать информацию о состоянии. Узнайте PID dd с помощью pgrep -l dd или ps a | грэп дд. Затем используйте команду kill -USR1 PID для отправки сигнала USR1 в dd .

Необязательно: проверка правильности записи образа на SD-карту

После того, как dd завершит копирование, вы можете проверить, что было записано на SD-карту, с помощью dd -ing с карты обратно на другой образ на вашем жестком диске, обрезав новый образ до того же размера, что и исходный, а затем запуск diff (или md5sum ) на этих двух изображениях.

Если SD-карта намного больше изображения, вам не нужно считывать всю SD-карту, так как она будет почти пустой. Итак, вам нужно проверить количество блоков, которые были записаны на карту командой dd.В конце своего запуска dd отобразит количество блоков, записанное следующим образом:

Копировать в буфер обмена

Нам нужно число xxx , которое является количеством блоков. Мы можем игнорировать числа yyy.

Скопируйте содержимое SD-карты в образ на жестком диске, снова используя dd:

Копировать в буфер обмена

if — входной файл (т. е. устройство SD-карты), of — выходной файл, в который копируется содержимое SD-карты (в данном примере — from-sd-card.img), а xxx — номер блоков, записанных оригинальной операцией dd.

Если образ SD-карты по-прежнему больше исходного изображения, обрежьте новое изображение до размера исходного изображения с помощью следующей команды (замените аргумент ссылки на входной файл именем исходного изображения):

Копировать в буфер обмена

Сравните два изображения: diff должен сообщить, что файлы идентичны.

Копировать в буфер обмена

Выполнить синхронизацию . Это обеспечит очистку кэша записи и безопасное отключение SD-карты.

Извлеките SD-карту из устройства чтения карт.

Установка изображений в Mac OS

Raspberry Pi Imager рекомендуется большинству пользователей для записи изображений на SD-карты. Однако, если вы не хотите использовать тепловизор, вы все равно можете скопировать операционную систему на карту из командной строки.

Поиск SD-карты

Вставьте SD-карту в слот или подключите устройство чтения SD-карт с SD-картой внутри и введите diskutil list в командной строке. Вы должны увидеть что-то вроде этого,

Копировать в буфер обмена

Здесь SD-карта — /dev/disk2, однако ваш список дисков и разделов может отличаться.

Копирование изображения

Перед копированием образа необходимо отключить SD-карту.

Копировать в буфер обмена

Затем вы можете скопировать изображение,

Копировать в буфер обмена

заменив N номером диска.

Это может занять несколько минут, в зависимости от размера файла изображения. Вы можете проверить прогресс, нажав Ctrl+T . После завершения команды dd вы можете извлечь карту:

Копировать в буфер обмена

Устранение неполадок

Если команда сообщает dd: /dev/rdiskN: Resource busy , вам необходимо сначала размонтировать том sudo diskutil unmountDisk /dev/diskN .

Если команда сообщает dd: bs: недопустимое числовое значение , измените размер блока bs=1m на bs=1M .

Если команда сообщает dd: /dev/rdiskN: операция не разрешена , перейдите в «Системные настройки» -> «Безопасность и конфиденциальность» -> «Конфиденциальность» -> «Файлы и папки» -> «Предоставить съемным томам доступ к терминалу».

Если команда сообщает dd: /dev/rdiskN: Отказано в доступе , таблица разделов SD-карты защищена от перезаписи операционной системой macOS.

Сотрите таблицу разделов SD-карты с помощью этой команды:

Копировать в буфер обмена

Эта команда также установит разрешения на запись на устройстве.

Читайте также: