2012-05-17 2 views
2

Я работаю над встроенной системой, которая работает на Linux. Чтобы уменьшить время загрузки продукта (это IP-камера), я бы хотел, чтобы уменьшил размер корневой файловой системы. У меня уже есть функциональная корневая файловая система, и в настоящее время я вручную удаляю порции и вижу, будет ли монтировать корневую файловую систему. Существует ли более логичный подход к уменьшению размера файловой системы, чем текущий метод проб и ошибок. Обновлено с дополнительной информацией.: Исходная файловая система, используемая в целевой среде, представляет собой общую файловую систему, используемую для нескольких встроенных продуктов в нашей организации. Я хочу разбить файловую систему на минимальный минимум, необходимый для запуска моего конкретного продукта .i.e IPNetCam. Я хочу знать, есть ли какие-либо методы профилирования. Шляпа может определить точный набор файлов, необходимых для загрузки и запуска определенного приложения.Оптимизация размера корневой файловой системы встроенной системы Linux

+2

Размер файловой системы, вероятно, не является основным фактором при загрузке. Кроме того, проверка возможности монтирования файловой системы мало говорит о том, есть ли у вас компоненты, необходимые для запуска любых программ, которые необходимы системе. Главные вещи, на которые нужно обратить внимание, - это если ваша дистрибуция упаковывает тяжелые библиотеки, которые вам не нужны, различные дополнительные демоны (у вас может быть ваш ssh или веб-сервер, о котором вы не знали) или, что еще хуже, тестовые/демонстрационные программы. Такие вещи, как busybox, часто имеют конфигурацию, где вы можете включать/удалять различные функции. –

+0

@ChrisStratton Встроенная система - это фиксированная функциональность (IP netcam), поэтому, если я смогу смонтировать rfs и запустить устройство, это должно быть хорошо. И пользователи не будут изменять его после развертывания. Я ищу вещи, которые нужно удалить, как вы упомянули. Я хочу знать, есть ли структурированный способ, который я могу сделать, чтобы выбрать только минимальный минимум, необходимый для корневой файловой системы. – Badri

+0

@ChrisStratton. Файловая система будет мигать в NAND, скопирована в ОЗУ и установлена ​​на устройстве. Таким образом, уменьшая общий размер корневой файловой системы, мы можем сократить время, необходимое для загрузки устройства (по времени загрузки я подразумеваю, что ядро ​​появляется, приложение запускается, и IPNetcam готов к использованию) – Badri

ответ

1

Один из способов списка файлов, используемых в вашей операционной системе и ее применение были бы:

  • очереди на флаге ATIME в файловой системе (если еще не установлено)
  • перезагрузки
  • после ваше приложение работать достаточно долго, используйте Atime, чтобы выяснить, какие файлы были доступны после последней загрузки:

# last reboot | head -1 
reboot system boot 2.6.35-30-generi Sun May 20 10:08 - 10:48 (00:40) 
# touch -d "2012-05-20 10:07" /tmp/ref 
# find/-xdev -anewer /tmp/ref > /tmp/usedFiles 

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

+0

Кроме того, нет необходимости запускать вторичный процесс (в данном случае - 'head'). Вы можете просто запустить: 'last reboot -1' – teotwaki

+0

' last -1 reboot' все равно выдаст две дополнительные строки, поэтому я предпочитаю держать единственное, что меня интересует с 'head -1'. – jlliagre

+0

@JoshSanford Спасибо за редактирование! – jlliagre

3

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

Смежные вопросы