Чому / var / run перенесено на / запустити?


66

З технічного огляду Ubuntu 11.10 Oneiric :

Ubuntu 11.10 мігрував від /var/run, /var/lockі /dev/shmта тепер використовує /run, /run/lockі /run/shmзамість цього (відповідно).

  • Я твердо кодую ці шляхи у своїх програмах, чому ця зміна внесена до Oneiric?
  • Що я можу зробити, щоб мої програми були сумісними назад і вперед? Чи є кращий спосіб, крім перевірки спочатку на наявність /run, а потім /var/run?

Відповіді:


58

Наміром є зменшення кількості tmpfsфайлових систем. 11.04 існують окремі tmpfsфайлові системи на /var/lock, /var/runі /dev/shm. Якби всі ці каталоги були під одним батьківським каталогом, тоді tmpfsзнадобився б лише один . Він також забезпечує очевидне місце для подальших даних про стан виконання, які не повинні зберігатися при перезавантаженнях.

Якщо ваша програма не залежить від канонічних шляхів до файлів, ваша програма має працювати без змін, оскільки старі локації будуть пов'язані з новими. Політика AppArmor - це один випадок, який залежить від реальних імен шляхів, і саме тому це було зазначено спеціально.

Наступні посилання повинні допомогти пояснити обґрунтування:


36
  1. /run - це нове розташування tmpfs для перехресного розповсюдження для зберігання перехідних файлів стану, тобто файлів, що містять інформацію про час виконання, яка може бути або не потребує запису на початку завантажувального процесу та не потребує збереження через перезавантаження.

    Надання /runкаталогу доступно нам на крок ближче до тієї точки, коли можна нормально використовувати систему з кореневою файловою системою, встановленою лише для читання, не вимагаючи жодних незграбних способів вирішення проблем, таких як aufs/unionfsнакладки.

    /run замінює декілька існуючих локацій, описаних у стандарті ієрархії файлової системи:

    • /var/run/run
    • /var/lock/run/lock
    • /dev/shm/run/shm[наразі лише Debian планує це зробити]
    • /tmp/run/tmp[необов’язково; наразі лише Debian планує запропонувати це]
    • /run також замінює деякі інші місця, які використовувались для перехідних файлів:

    • /lib/init/rw/run

    • /dev/.*/run/*
    • /dev/shm/*/run/*
    • файли для запису під /etc/run/*

    (тож ви, напевно, можете розраховувати, що вони також зміняться).

    Джерело: цілі випуску debian

  2. Я радив би створити частину свого програмного забезпечення, де ви встановлюєте ці каталоги на змінні, змініть свій код, щоб використовувати ці змінні, а потім змінити змінні на основі системи, в якій він використовується (але я думаю, ви це вже знали).


1
Що ви маєте на увазі файли для запису під /etc. Вони повинні зберігати перезавантаження, чи не так? Це просто загальні файли конф.
Еван Керролл

6
О Я бачу. Три файли під /etc, /etc/lvm/cache/ /etc/mtab /etc/network/run/ifstateі незабаром /etc/adjtime. Я гадаю, для них це було погано /etc.
Еван Керролл

5

З того, що я прочитав, це було оригінальне пояснення щодо того, чому було введено / запустити. http://lwn.net/Articles/436012/


8
Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Стефано Палацо

3

Примітка: з моменту введення / запуску невеликих конфігурацій можуть виникнути проблеми. Мій сервер Ubuntu має 256Mo оперативної пам’яті, а для запуску встановлено за замовчуванням 49Mo.
При запуску він заповнює файлову систему до повноти.
Внесення змін у fstab не працює для збільшення темпфів / розміру запуску. Також не застосовуються інші процедури, які я знайшов на рр.
Я знайшов рішення додати в скрипт init: /etc/rc.localрядок, mount -t tmpfs tmpfs /run -o remount,size=85M що розширюється при запуску. (85M - для моєї конф.)


2

Ви не повинні жорстко кодувати жоден із цих /runшляхів!

  • Використовуйте /var/run, оскільки символьне посилання буде встановлено, /runякщо це застосовно
  • /var/lock те саме, що вище
  • Не вдавайте жорсткий код /dev/shmніколи, завжди використовуйте shm_openтощо (API posix)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.