Что такое mtd устройства в ноутбуке
Создание политики соответствия для устройств Mobile Threat Defense (MTD) в Intune
Intune с MTD помогает обнаруживать угрозы и оценивать риск на мобильных устройствах. Можно создать правило Intune для политики соответствия требованиям, которое будет оценивать риски для определения соответствия устройства. Затем можно использовать политику условного доступа, чтобы запретить доступ к службам в зависимости от соответствия устройства требованиям.
Эти сведения относятся ко всем партнерам Mobile Threat Defense.
Прежде чем начать
В рамках настройки MTD в партнерской консоли MTD вы создали политику, которая разделяет различные угрозы по уровням (высокий, средний, низкий). В политике соответствия устройств Intune затем задайте уровень Mobile Threat Defense.
Необходимые условия для политики соответствия устройств с MTD:
Создание политики соответствия устройств MTD
Выберите Безопасность конечной точки > Соответствие устройства > Создать политику.
Выберите Платформа, а затем — Создать.
В разделе Базовые укажите имя и описание для политики соответствия устройств (необязательно). Нажмите кнопку Далее, чтобы продолжить.
В разделе Параметры соответствия разверните и настройте параметр Работоспособность устройств. Выберите уровень угрозы для мобильного устройства в раскрывающемся списке в разделе Требовать уровень угрозы на устройстве не больше указанного.
Защищено. Этот уровень обеспечивает максимальную защиту. Устройство не может осуществлять доступ к ресурсам компании при наличии каких-либо угроз. При обнаружении любых угроз устройство переходит в состояние несоответствия.
Низкий. Если обнаруженные на устройстве угрозы имеют низкий уровень, считается, что устройство соответствует требованиям. Любая угроза с уровнем выше низкого переводит устройство в состояние несоответствия.
Средний. Если обнаруженные на устройстве угрозы имеют низкий или средний уровень, считается, что устройство соответствует требованиям. Если на устройстве найдены угрозы высокого уровня, устройство переходит в состояние несоответствия.
Высокий. Это наименее безопасный уровень угрозы, допускающий все уровни угроз, а Mobile Threat Defense используется только для отчетов. На устройствах приложение MTD должно быть активировано с этим параметром.
Выберите Далее, чтобы перейти к разделу Назначения. Выберите группы, которые получат этот профиль.
В разделе Выберите группы, которые необходимо включить отобразится пункт выбора групп пользователей или групп на основе устройств. В настоящее время параметр Требовать, чтобы уровень устройства был не выше уровня угрозы устройств поддерживается только в группах пользователей. В настоящее время нацеливание на группы устройств не поддерживается, и не следует выбирать его.
Нажмите кнопку Далее.
При создании политик условного доступа для Microsoft 365 и других служб такая оценка соответствия устройства принимается во внимание и доступ несоответствующих устройств к ресурсам организации блокируется до устранения угрозы на устройстве и передаче сведений о ней в Intune через выбранного поставщика MTD.
Назначение политики соответствия устройств MTD
Чтобы назначить или изменить назначение политики соответствия устройств пользователям, выполните следующие действия:
Выберите Безопасность конечной точки > Соответствие устройства.
Выберите политику, которую необходимо назначить пользователям, и щелкните Свойства.
Выберите Изменить в разделе «Назначения», а затем используйте доступные параметры для включения и исключения групп, чтобы получить эту политику. Напоминаем, что в настоящее время нацеливание на группы устройств не поддерживается, и не следует выбирать его.
Выберите Просмотреть и сохранить, чтобы завершить назначение. При сохранении назначения политика развертывается для выбранных пользователей, и их устройства оцениваются на соответствие.
Русские Блоги
Linux mtd system
Linux mtd system
MTD (Memory Technology Device), устройство с технологией памяти, является подсистемой устройств хранения Linux. Целью разработки этой системы является предоставление уровня абстракции и интерфейса для запоминающих устройств, так что разработчикам драйверов аппаратного обеспечения необходимо предоставить только простейшую функцию чтения / записи / стирания базового аппаратного устройства. Да, вам не нужно заботиться о том, как данные представляются верхним пользователям, потому что подсистема устройства хранения MTD сделала это за вас.
Рамки 1.MTD
Устройство Linux MTD находится в каталоге drivers / mtd /, здесь приведен только приблизительный анализ его структуры каталогов. Если вы хотите узнать конкретные детали, вы можете проверитьблог Крифана, Есть много ссылок и статей для справки, и анализ очень тщательный. Содержимое файла MTD выглядит следующим образом:
Оборудование MTD обычно можно разделить на четыре уровня
Сверху вниз находятся: узел устройства, уровень устройства MTD, уровень исходного устройства MTD и уровень драйвера оборудования.
1.cmdlinepart.c
Когда таблица разделов mtd переносится из u-boot в linux через параметры cmd, ядру linux не нужно регистрироваться и добавлять mtdparts, просто включите параметр разделения командной строки в MTD. Используя этот метод, u-boot должен поддерживать MTD, а передаваемые параметры раздела mtd должны соответствовать требованиям формата.
Папка 2.devices
Папка 3.chips / nand / onenand
Флеш-драйвер nand находится в папке nand;
Flash-драйвер onenand находится в папке onenand;
И флэш не сложнее, там будут все следующие файлы:
4. Основные файлы
mtdchar.c: реализация интерфейса с символьным устройством MTD, номер устройства 31;
mtdblock.c: реализация, связанная с интерфейсом блочного устройства MTD, номер устройства 90;
mtdcore.c: реализация, связанная с оригинальным интерфейсом устройства MTD;
mtdpart.c: реализация интерфейса раздела MTD.
5.ubi
2. Реализация таблицы разделов MTD
Во время процесса загрузки вы часто можете увидеть информацию, похожую на следующую из консоли,
Это наиболее интуитивное представление, которое дает нам MTD, показывающее нам структуру разделов каждого модуля в памяти, но как эти разделы реализованы? Существует несколько способов реализации таблицы разделов, которые описаны ниже:
Примечание. Обязательным условием реализации таблицы разделов является успешное выполнение драйвера устройства MTD, в противном случае раздел не будет создан даже в случае сбоя драйвера.
1. Добавлено в ядро
Поскольку наш драйвер MTD завершен, при совпадении устройства и драйвера будет вызвана функция интерфейса датчика в драйвере, и нам нужно вызвать его в функции датчика add_mtd_partitions(s3c_mtd, sets->partitions, sets->nr_partitions); Реализуйте добавление таблицы разделов.
2.u-boot параметры передачи
Под u-boot вы можете добавить информацию mtdparts в bootargs.После запуска u-boot информация из bootargs будет передаваться ядру, и ядро будет анализировать часть bootargs mtdparts при запуске. Вот пример:
mtdparts=nand.0:1M(Bootloader)ro,31M(Kernel)ro,16M(User),96M(File System) Более конкретный формат mtdparts можно найти в соответствующей информации.
При добавлении таблицы разделов в ядро мы добавляем информацию mtd_partition на устройство платформы. Передача параметров через u-boot здесь отменяет информацию о разделах в устройстве платформы, а затем, как нам нужно проанализировать mtdparts, переданные u-boot.
После того, как u-boot передаст параметры, эти параметры будут проанализированы в cmdlinepart.c и сохранены внутри LIST_HEAD(part_parsers) В связанном списке мы затем в функции зонда драйвера, вызывая mtd_device_parse_register(mtd, probe_types,&ppdata, NULL, 0); функция.
mtd_device_parse_register() Функция находится в drivers / mtd / mtdcore.c, и ее содержимое выглядит следующим образом:
Вы можете видеть, что функция будет выполнена первой parse_mtd_partitions(mtd, types, &real_parts, parser_data); Функция, позже через add_mtd_partitions() Функция для реализации добавления таблицы разделов.
parse_mtd_partitions() Функция находится в drivers / mtd / mtdpart.c, и ее содержимое выглядит следующим образом:
войти parse_mtd_partitions() Функция сначала определит тип типа, и если он будет пустым, он даст значение по умолчанию. Обычно существует два типа типов:
Передача параметров 3.dts
В версии Linux после Linux3.14 добавлено новое знание DTS (Дерево устройств). Фактически, DTS решает избыточный код в ARM Linux. В Linux2.6 версии arch / arm / plat.xxx и arch / Файл Arm / mach.xxx заполнен большим количеством мусорного кода. После принятия дерева устройств многие детали аппаратного обеспечения могут напрямую передаваться в Linux через Linux вместо большого количества избыточного кодирования в ядре. Вы можете обращаться к dts самостоятельно. данные.
Принцип передачи параметров dts фактически тот же, что и для u-boot, разница в том, что u-boot использует файл cmdlinepart.c для записи информации о разделах. LIST_HEAD(part_parsers) Связанный список, dts использует файл ofpart.c для записи информации о разделах. LIST_HEAD(part_parsers) Связанный список, поэтому следует также открыть макрос файла ofpart.c и mtd_device_parse_register(mtd, probe_types,&ppdata, NULL, 0); Тип функции должен быть установлен на ofpart.
Если вы сравните версию для Linux 2.6 и версию для Linux 3.14, вы обнаружите, что файлы drivers / mtd / ofpart.c и drivers / mtd / mtdpart.c отличаются. Версия Linux 3.8 включает дерево устройств. Те, кто заинтересован, могут вникать в это самостоятельно.
Анализ системы Linux Mtd здесь, и она будет обновляться, когда у вас есть чувства.
Примечание. Приведенное выше содержание является частью моего опыта, накопленного в процессе обучения. Это неизбежно, что я буду ссылаться на некоторые знания других статей. Если есть какие-либо нарушения, пожалуйста, сообщите мне вовремя. Я буду удалять или отмечать источник контента в срок. Пожалуйста, укажите, обсудите и изучите. Эта статья является лишь руководством. Для подробного анализа данных, пожалуйста, ознакомьтесь с руководствами по Linux. Спасибо за чтение.
Записки Линуксоида
Я вижу Мир, Мир видит меня
Memory Technology Device (MTD) support
Memory Technology Device (MTD) support
Memory Technology Devices are flash, RAM and similar chips, often used for solid state file systems on embedded devices. This option will provide the generic support for MTD drivers to register themselves with the kernel and for potential users of MTD devices to enumerate the devices which are present and obtain a handle on them. It will also allow you to select individual drivers for particular hardware and users of MTD devices. If unsure, say N.
Устройства памяти — это флэш-память, оперативная память и аналогичные микросхемы, которые часто используются для создания твердотельных файловых систем на встроенных устройствах. Эта опция обеспечит общую поддержку для драйверов MTD для регистрации себя в ядре и для потенциальных пользователей устройств MTD для перечисления имеющихся устройств и получения указателя на них. Это также позволит вам выбрать отдельные драйверы для конкретного оборудования и пользователей устройств MTD.
Если не уверены, скажите N.
This turns on low-level debugging for the entire MTD sub-system. Normally, you should say N.
Включает низкоуровневую отладку для всей подсистемы MTD.
Обычно вы должны сказать N.
MTD concatenating support
Поддержка объединения нескольких устройств MTD в одно (виртуальное). Это позволяет вам иметь, например, файловую систему JFFS (2), охватывающую несколько физических флеш-чипов.
Если не уверены, скажите Y.
MTD partitioning support
If you have a device which needs to divide its flash chip(s) up into multiple ‘partitions’, each of which appears to the user as a separate MTD device, you require this option to be enabled. If unsure, say ‘Y’.
Note, however, that you don’t need this option for the DiskOnChip devices. Partitioning on NFTL ‘devices’ is a different — that’s the ‘normal’ form of partitioning used on a block device.
Если у вас есть устройство, которому необходимо разделить свои флеш-чип(ы) на несколько «разделов», каждый из которых представляется пользователю как отдельное устройство MTD, вам необходимо включить эту опцию. Если вы не уверены, скажите «Y».
Обратите внимание, что вам не нужна эта опция для устройств DiskOnChip. Разбиение на «устройствах» в NFTL отличается — это «нормальная» форма разбиения, используемая на блочных устройствах.
Direct char device access to MTD devices
This provides a character device for each MTD device present in the system, allowing the user to read and write directly to the memory chips, and also use ioctl() to obtain information about the device, or to erase parts of it.
Предоставляет символьное устройство для каждого устройства MTD, присутствующего в системе, позволяя пользователю читать и записывать данные непосредственно в микросхемы памяти, а также использовать ioctl () для получения информации об устройстве или для его удаления.
Caching block device access to MTD devices
Although most flash chips have an erase size too large to be useful as block devices, it is possible to use MTD devices which are based on RAM chips in this manner. This block device is a user of MTD devices performing that function.
At the moment, it is also required for the Journalling Flash File System(s) to obtain a handle on the MTD device when it’s mounted (although JFFS and JFFS2 don’t actually use any of the functionality of the mtdblock device).
Later, it may be extended to perform read/erase/modify/write cycles on flash chips to emulate a smaller block size. Needless to say, this is very unsafe, but could be useful for file systems which are almost never written to.
You do not need this option for use with the DiskOnChip devices. For those, enable NFTL support (CONFIG_NFTL) instead.
Хотя большинство флэш-чипов имеют слишком большой размер стирания, чтобы их можно было использовать в качестве блочных устройств, таким образом можно использовать устройства MTD, основанные на чипах ОЗУ. Это блочное устройство является пользователем устройств MTD, выполняющих эту функцию.
В настоящий момент также требуется, чтобы Journalling Flash файловая система(ы) получала дескриптор устройства MTD при его монтировании (хотя JFFS и JFFS2 фактически не используют никаких функций устройства mtdblock).
Позже он может быть расширен для выполнения циклов чтения/стирания/изменения/записи на чипах флэш-памяти, чтобы эмулировать меньший размер блока. Излишне говорить, что это очень небезопасно, но может быть полезно для файловых систем, в которые почти никогда не записываются данные.
Вам не нужна эта опция для использования с устройствами DiskOnChip. Для них включите поддержку NFTL (CONFIG_NFTL).
Основы безопасности операционной системы Android. Native user space, ч.1
Вступление
В этой статье я попробую рассмотреть безопасность чуть-чуть повыше ядра, а именно: как работает безопасность в Native user space. Мы коснемся темы процесса загрузки операционной системы и рассмотрим структуру файловой системы Android. Как я уже говорил, я не очень силен в Linux, поэтому если заметите неточности, то исправляйте — меня научите и статью улучшите. Так как эта тема довольно обширная, я решил разбить её на две части. В первой части мы рассмотрим процесс загрузки операционной системы и особенности файловой системы. Всем кому интересно, добро пожаловать!
Список статей
Что подразумевается под Native user space
Под Native user space подразумеваются все компоненты пространства пользователя, которые выполняются вне Dalvik Virtual Machine, и которые не являются частью Linux kernel.
Файловая система Android
Для начала давайте рассмотрим структуру файловой системы Android. Хотя Android и базируется на Linux kernel, привычную нашему глазу структуру файловой системы мы здесь не увидим. Давайте запустим эмулятор и посмотрим, что у нас есть. Для этого выполним комманду:
В моем терминале для эмулятора на Android 4.2 я вижу следующий результат:
Я отмечу здесь только главные директории и те, которые нам пригодятся в будущем. В Интернете можно найти описание и предназаначение других директорий. Можно заметить, что некоторые директории такие же, как и в Linux, например, /dev, /proc, /sys, /mnt, /etc И их предназначение в основном такое же, как и в Linux. Кстати, отметьте, что мы не видим /bin и /lib директорий. Где они скрылись, я расскажу чуть позже.
C другой стороны можно заметить директории, которых в Linux вообще нет. Среди них нас интересуют /data, /system, /cache, /init, /init.rc Давайте рассмотрим их назначение поподробнее.
/system Это главная директория, где хранятся неизменяемые компоненты Android системы. Если проводить аналогию, то эта папка похожа на папку C:\windows\, доступную только для чтения. Т.е. изменять данные в этой директории мы не можем. Как раз здесь можно найти директории /bin и /lib, где хранятся различные исполняемые файлы и shared libraries. Кроме того, здесь же лежат системные приложения, которые встроены в операционку и которые, по умолчанию, нельзя удалить. Содержимое этой директории формируется во время компиляции операционной системы.
/data Т.к. /system у нас доступна только для чтения, то должна быть директория где хранятся изменяемые данные. /data как раз ею и является. Например, в эту директорию в /data/app сохраняются apk файлы устанавливаемых приложений, а в /data/data хранятся их данные (эту директорию мы подробно рассматривали в прошлой статье).
/cache Это просто временное хранилище. Также в эту директорию сохраняются, а потом из неё запускаются системные обновления.
Чтобы понять, что такое /init файл и для чего нужны непонятные файлы с расширением *.rc, рассмотрим процесс загрузки системы.
Процесс загрузки Android
Давайте рассмотрим несколько шагов процесса загрузки операционной системы Android. Эта картинка взята из книги «Embedded Android», там же можно найти и более детальное описание. Хотя в целом я и понимаю процесс, но для меня это больше магия 🙂
CPU. Когда вы нажимаете на кнопку включения, на процессор вашего устройства начинает подаваться напряжение. Так как до этого момента процессор был выключен, и так как он не способен сохранять свое состояние без подачи напряжения, то сразу после старта он находится в некотором неинициализированном состоянии. В данном случае процессор считывает из своего специального регистра некоторый жестко зашитый адрес и начинает выполнять инструкции начиная с него. Чаще всего, этот адрес указывает на чип, в который зашит bootloader (загрузчик).
Bootloader. Bootloader инициализирует RAM и загружает в неё Linux kernel. Кроме того Bootloader создает RAMdisk.
Linux kernel. Ядро инициализирует различные подсистемы, встроенные драйвера и монтирует root filesystem (корневую файловую систему). После этого ядро может запускать первую программу.
На этом магия заканчивается и дальше всё становится более-менее понятно.
Первой программой в случае Android является init. Исполняемый файл находится в корневой директории (/init). Именно эту программу стартует ядро после своей загрузки. Её исходники находятся в папке system/core/init/ Давайте в них слегка покопаемся. Нас интересует system/core/init/init.c:
Вначале мы создаем и монтируем некоторые необходимые для работы директории, а потом парсим файл /init.rc и выполняем то, что распарсили. Формат /init.rc файла очень хорошо описан в readme, там же можно найти и пример. Если кратко, то этот файл представляет собой набор actions (секций — именнованная последовательность комманд). Каждая последовательность команд срабатывает по определенному trigger (триггеру). Например, следующая последовательно — это action, в которой trigger — это fs, а последовательность команд — это набор mount команд:
Исходный файл /init.rc находится в system/core/rootdir/init.rc Давайте рассмотрим некоторые основные его части, хотя я вам очень советую просмотреть его полность. После этого многие вещи вам должны стать понятны. Итак, начинается наш файл следующими строками:
Они означают, что кроме init.rc файла нужно также импортировать настройки из файлов init.usb.rc, init.trace.rc и из файла с непонятным именем init.$
После этого происходит инициализация переменных, необходимых для работы устройства. Если вас заинтересует эта тема, то вы легко найдете информацию о той или иной комманде. Давайте подробно рассмотрим следующий блок (который я уже приводил в этой статье):
MTD — Memory Technology Devices. Если в общих чертах, то MTD — это специальный чип с энергонезависимой (т.е. данные на этом чипе сохраняются после перезагрузки или выключения) flash-памятью (типа NOR или NAND), на который сохраняются образы дисков. В этой статье более подробно рассказывается об этом типе устройств, а также об ограничениях. Специально для этих разновидностей flash-памяти были разработаны специальные файловые системы, например, YAFFS. Одно из самых важных ограничений этих типов памяти заключается в том, что для того чтобы записать данные в сектор, куда уже записаны какие-то данные, вам надо полностью сначала стереть весь сектор. Поэтому производители стали переходить на новый тип блочной flash-памяти (eMMC), на которые можно поставить обычную ext4 файловую систему и избавиться от указанного ограничения. Т.к. я показываю пример init.rc файла для эмулятора, где вся работа эмулируется, то в нем по умолчанию используется файловая система YAFFS2 (думаю, что это пережитки прошлого, т.к. YAFFS2 использовалась для всех устройств до Android 2.2). В реальном устройстве (это как раз один из примеров, когда необходимо использовать init.rc файл для определенного железа) эти комманды будут перезаписаны. Например, в случае устройства herring (Google Nexus S), в файле init.herring.rc эта секция выглядит следующим образом:
Где fstab.herring — это файл, содержимое которого выглядит следующим образом:
Как вы могли заметить, /system, /data, /cache — это просто mounting points (точки монтирования файловой системы), которые указывают либо на MTD устройства (в случае эмулятора), либо на блочные устройства (в случае настоящего устройства), куда записаны соответствующие дисковые образы (system.img, userdata.img и cache.img). Я не уверен, но думаю, что внутри смартфона находится один единственный чип с flash-памятью, разделенный на partitions (тома), в каждый из которых записан соответствующий образ. Этот чип с flash-памятью — то, что мы знаем под именем Internal storage (внутренняя память), объем которой — один из основных параметров смартфона.
Следует заметить, что /system смонтирован read-only (только для чтения). Это означает, что содержимое данного раздела не изменяется в процессе работы устройства, а только когда вы, например, обновляете систему на вашем устройстве (используя системные обновления).
Продолжим рассматривать наш init.rc. По триггеру post-fs-data формируется базовая структура файловой системы /data раздела. Там, в общем всё понятно — набор mkdir, chown, chmod команд.
Далее init.rc запускает несколько демонов. Если вернуться к рисунку в начале статьи, то они перечислены в блоке Native daemons. На этом мы пока остановимся. Как вы могли заметить из рисунка, я не полностью рассмотрел процесс загрузки операционной системы. Некоторые непокрытые этапы я рассмотрю в следующих статья.
Заключение
В следующей части я расскажу, откуда берутся образы system.img, userdata.img и cache.img и рассмотрю безопасность на уровне Native user space. Как всегда приветствуются исправления, дополнения, а так же предложения, о чем написать. И хотя у меня уже есть некоторый план, о чем писать в следующих статья, я готов его подкорректировать.