LINUX.ORG.RU

Разработчики Fedora обсуждают объединение каталогов для исполняемых файлов

 


0

0

Разработчики Fedora обсуждают возможное объединение каталогов /bin, /sbin/, /usr/bin и /usr/sbin: предлагается все исполняемые файлы помещать в каталог /usr/bin, а другие каталоги сделать символическими ссылками на него для совместимости.

Леннарт Поттеринг в списке рассылки разработчиков предоставляет список преимуществ такого подхода:

  • разделение на /bin и /sbin приводит к усложнению работы разработчиков, которые зачастую ошибаются с выбором каталога, либо бездумно помещают файлы в /usr/bin;
  • первоначальное назначение каталога /sbin (размещение статически собранных файлов, на что указывает буква «s») давно неактуально;
  • разделение на /bin и /sbin не имеет отношения к безопасности (это был бы глупый принцип «security by obscurity»);
  • разделение на /bin и /sbin имеет значение только для переменной $PATH, однако усложнять доступ пользователей к некоторым инструментам - плохая затея; к тому же для этого есть более подходящие каталоги;
  • разделение на /bin и /sbin в любом случае бессмысленно уже пару версий Fedora, поскольку оба каталога включены в переменную $PATH для всех пользователей;
  • разделение приводит к усложнению, а мы должны стремиться к упрощению;
  • различные дистрибутивы размещают некоторые бинарные файлы в различных каталогах, что приводит к проблемам с переносимостью скриптов;
  • разделение на /bin и /usr/bin в основном было сделано для этапа ранней загрузки системы - минимальный набор загрузочных файлов находится в /. Но это давно не работает, и соответствующая опция убрана из инсталлятора anaconda. Более того, размещение /usr на отдельной файловой системе вызывает проблемы при загрузе посредством systemd;
  • разделение на минимальную систему в / и полную в /usr также стало бессмысленно благодаря initrd, а содержание двух уровней «минимальной загрузочной системы» - дурацкая затея;
  • существенно упростится установка «read-only» системы: так, libc и другие системные библиотеки будут доступны только на чтение, а /etc - на чтение и запись;
  • снятие снапшотов станет действительно атомарной операцией. В настоящее время btrfs требует 5 снимков - /lib, /lib64, /bin, /sbin и /usr вместо одного, что неудобно и может приводить к состояниям гонки;
  • существенно упростятся сетевая и контейнерная установки;
  • сборочные скрипты упростятся: в частности, autoconf не знает о разделении на / и /usr, и для правильной работы с ними приходится прилагать специальные усилия;
  • эксперименты уже показали жизнеспособность предложенной схемы и отсутствие серьезных проблем;
  • есть разработчик (Harald Hoyer), готовый выполнить необходимую работу.

Таким образом, подобное изменение многое упрощает для разработчика, мейнтейнера и администратора. Если оно будет принято, то может быть реализовано уже в Fedora 17.

>>> Подробности

★★★★

Проверено: Shaman007 ()
Последнее исправление: JB (всего исправлений: 2)

Ответ на: комментарий от anonymous

>1. я про это не знал, и узнать тогда мне было негде; единственная машина с инетом как раз сломалась;

Пользуйся livecd, если этого не знаешь

2. а это правда будет работать на голой системе, где есть только ядро и шелл? кто создаст этот девайс? initrd разве только?

Да, initrd

3. сейчас посмотрел у себя - даже на рабочей системе этого нет:

# ll /dev/mapper/main-root ls: невозможно получить доступ к /dev/mapper/main-root: Нет такого файла или каталога

Конечно нет, я же не знаю, как ты свою vg и lv назвал.

ЗЫ: говорят аргумент root= здесь не нужен вообще, а по умолчанию он берется из lilo | grub.

anonymous
()

поттеринг достал

по случаю анекдотец:

Трое офицеров играли в карты дома у одного из них. Только раздали, вдруг из детской выскакивает сын хозяина и кричит: «А у папы два туза». Делать нечего - раздали по новой. Снова выскакивает сын и кричит: «А у капитана червовый марьяж!» Снова пересдали. Снова выскакивает сын и кричит: «А у поручика...»
«Постой» - сказал поручик Ржевский, и увел мальчика в детскую. Через пару минут вышел, сели играть дальше. Проходит 5, 10, 15 минут - мальчика нет. Хозяин спрашивает:
- Поручик, вы что, его побили?
- Как можно, я же офицер!
- А что же вы сделали?
- Я его онанировать научил. 
hawai
()
Ответ на: комментарий от Pythonist

> Вот наркоманы! А если у меня /usr отвалится, то у меня даже mount не будет! Ну и сказка.

mount есть в initrd.

Ситуация конечно скверная. Тащить все утилиты, не работающие без /usr в корень тоже не слишком хорошая идея. Впрочем, лучше бы подумали бы как не плодить симлинки и избавиться от initrd.

DukE-M ★★
()
Ответ на: комментарий от unsigned

там, кстати, чуть ниже очень хороший набор аргументов против этого.

anonymous
()
Ответ на: комментарий от unsigned

> Ха, по этому случаю уже собираются во всех скриптах «#! /bin/sh» менять на «#! /usr/bin/env sh».

Этого не будет.

DukE-M ★★
()

первоначальное назначение каталога /sbin (размещение статически собранных файлов, на что указывает буква «s») давно неактуально;

$ find /bin /sbin /usr/bin /usr/sbin -exec file {} \; | grep static
/bin/busybox: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.15, stripped
/bin/static-sh: symbolic link to `busybox'
/sbin/ldconfig.real: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.15, stripped
/usr/bin/wine-preloader: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped
/usr/bin/saveme: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.8, stripped
/usr/bin/rar: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.8, stripped

А теперь посмотрим что из /bin линкуется на /usr/lib:

$ find /bin -type f -exec echo {} \; -exec ldd {} \; | grep -B 2 "/usr"
/bin/ntfsdecrypt
	libntfs-3g.so.814 => /lib/libntfs-3g.so.814 (0x00110000)
	libgnutls.so.26 => /usr/lib/i386-linux-gnu/libgnutls.so.26 (0x0056f000)
	libgcrypt.so.11 => /lib/i386-linux-gnu/libgcrypt.so.11 (0x00263000)
	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00b8c000)
	libtasn1.so.3 => /usr/lib/i386-linux-gnu/libtasn1.so.3 (0x008e2000)
NTFS, ну теперь понятно кто во всём виноват =]

Lampus
()
Ответ на: комментарий от GotF

Надеюсь, debian будет консервативным...

Эту заразу они подхватили быстро. Надеюсь, сабж туда всё же не пролезет.

$ ls /run
ls: невозможно получить доступ к /run: Нет такого файла или каталога
pacify ★★★★★
()
Ответ на: комментарий от unsigned

>>Да там наверняка ссылка символьная на библиотеку в /lib

Нет, настоящая библиотека.

Это МСВС )

мда. наваяли :-)

samy_volosaty ★★★★★
()
Ответ на: комментарий от unsigned

> Ха, по этому случаю уже собираются во всех скриптах «#! /bin/sh» менять на «#! /usr/bin/env sh».

А если в системе нет /usr/bin/env ?

pacify ★★★★★
()
Ответ на: комментарий от anonymous

> по сабжу - ФЕДОРАКАПЕЦ!

Желаю этого же Убунте.

pacify ★★★★★
()

Объединение /bin и /sbin некоторый (небольшой) смысл имеет.

Внос /usr в / может предлагать только упоротый идиот, никогда не писавший для embedded.

ignik
()
Ответ на: комментарий от anonymous

> говорят аргумент root= здесь не нужен вообще, а по умолчанию он берется из lilo | grub

+ может изменяться в `initrd' (e.g. хук для dm-crypt свой ставит, игнорируя переданный)

anonymous
()

> Более того, размещение /usr на отдельной файловой системе вызывает проблемы при загрузе посредством systemd

а-я-яй, вот фигня то какая. сделали такой крутой systemd, а нехорошие пользователи гадят на него посредством разбиения диска на разделы.

ananas ★★★★★
()
Ответ на: комментарий от DukE-M

> mount есть в initrd

А вы уверены, что initrd вообще есть, или предлагается при обновлении любой утилиты, входящей в образ заново генерировать последний?

Что обязательно вывалится приглашение; или можно как-то заставить (не правя скрипт `init')?

AFAIU, это скорее, для определение устройств и создания окружения было придумано, чем для восстановления.

anonymous
()

> Разработчики Fedora обсуждают объединение каталогов для исполняемых файлов

Прямо из заголовка было очевидно, что «разработчики» - это Леннарт. Он - единственный «разработчик», который не только считает, что принципы и стандарты юникс - это отстой, который тормозит прогресс, но еще и имеет наглость открыто об этом заявлять.

anonymous
()


# for F in `ls /bin/*` ; do ldd $F | grep usr > /dev/null; [ $? -eq 0 ] && echo $F ; done
/bin/mail
/bin/mailx
/bin/ntfsdecrypt
/bin/rpm

# for F in `ls /sbin/*` ; do ldd $F | grep usr > /dev/null; [ $? -eq 0 ] && echo $F ; done
/sbin/mount.nfs
/sbin/mount.nfs4
/sbin/rpcbind
/sbin/rpc.statd
/sbin/umount.nfs
/sbin/umount.nfs4
/sbin/umount.udisks
/sbin/ypbind



о чем разговор то? пофиксить десять утилит?

anonymous
()
Ответ на: комментарий от ananas

> а-я-яй, вот фигня то какая. сделали такой крутой systemd, а нехорошие > пользователи гадят на него посредством разбиения диска на разделы.

Новость написана не совсем корректно. Systemd может работать без /usr.

DukE-M ★★
()
Ответ на: Ненависть. от legolegs

>Лучше бы вы сделали так, чтобы /etc можно было в ридонли смонтировать.

Запросто. Только mtab сделать симлинком на /proc/mtab.

Кстати, на LVM таких проблем нет

initrd - костыль, вот его-то надо выкинуть.

Лол.

По теме: всё правильно делают. Ждём, пока ГНУ/Линукс разделится на десктопный, убунту и специальный (embedded и прочее).

x3al ★★★★★
()
Ответ на: комментарий от anonymous

А вы уверены, что initrd вообще есть

Fedora уже некоторое время нельзя загрузить без initrd из-за SELinux и Plymouth.

unsigned ★★★★
() автор топика

Кстати, из новости неясно: Леннарт не придумал все это, а лишь поддержал.

unsigned ★★★★
() автор топика
Ответ на: комментарий от Magister2k7

> Только вот непонятно - почему проще поломать иерархию ФС, чем добавить в зависимости этих программ смонтированный /usr?

Потому что это - Леннарт, черт побери. Нормальные разработчики, когда их софт глючит, исправляют глюки в своем софте, а Леннарт, когда глючит его софт, требует переписать весь остальной софт в мире, изменить стандарты и переучить пользователей. Ведь «моя программа работает правильно, это у других баги». У него всегда так - все не в ногу, один он в ногу.

anonymous
()
Ответ на: комментарий от anonymous

> А вы уверены, что initrd вообще есть, или предлагается при обновлении любой утилиты, входящей в образ заново генерировать последний?

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

AFAIU, это скорее, для определение устройств и создания окружения было придумано, чем для восстановления.

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

DukE-M ★★
()
Ответ на: комментарий от anonymous

> Ну а бородатые старперы, застрявшие наглухо в черт знает каких временах (ну на кой, скажите мне сейчас /usr на отдельном разделе в linux нужен?)

man exports

anonymous
()
Ответ на: комментарий от ignik

> Внос /usr в / может предлагать только упоротый идиот, никогда не писавший для embedded.

Вообще-то в эмбедед это уже давно делают. Тут и так система минимальная, зачем разносить на / и /usr?

x86_64 ★★★
()
Ответ на: комментарий от x3al

>>Лучше бы вы сделали так, чтобы /etc можно было в ридонли смонтировать.

Запросто. Только mtab сделать симлинком на /proc/mtab.

А еще resolv.conf и еще пяток файлов. LOL

anonymous
()

Ждем новости о том, что Линус Торвальдс перешел с федоры на дебиан.

anonymous
()

Ну в принципе, должен признать, они правы.

Те же пути в два каталога. Раньше приходилось все время путь добавлять вручную, потому что каждый раз писать sudo /sbin/... затрахаешься. В ubuntu прописано по умолчанию и никто не умер.

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

Файлы во всех каталогах все равно рутовые. Кто хочет большей безопасности, использует selinux, apparmor и т.п.

jackill ★★★★★
()
Ответ на: комментарий от anonymous

> /Users/

Ах ну да -

Home == /Users/%UserName%/

подзабыл чет...

uin ★★★
()
Ответ на: комментарий от unsigned

>Fedora уже некоторое время нельзя загрузить без initrd из-за SELinux и Plymouth.

Редхата эдак с девятого, если не вкомпиливать все в ядро. А чем мешает initrd? :)

jackill ★★★★★
()
Ответ на: комментарий от Xenius

> например /etc/mtab вообще не нужен, ибо есть /proc/mounts

ls -l /etc/mtab
lrwxrwxrwx 1 root root 17 Май 15 04:40 /etc/mtab -> /proc/self/mounts

Внезапно :D

imul ★★★★★
()
Ответ на: комментарий от geekless

> разделение на минимальную систему в / и полную в /usr также стало бессмысленно благодаря initrd

Не надо. Есть четкое разделение функций.

initrd/initramfs должен решать одну единственную задачу - монтировать корень и запускать с него /sbin/init. Именно эту задачу он и решает. Он не монтирует внешние NFS-разделы, он не выполняет настройку звука, он не содержит в себе торрента и Х-ов с кедами и не запускает сетевые демоны.

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

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

Но Леннарт принципиально не читает стандартов, он считает их устаревшими, и считает своим долгом переписать как можно больше из них. Это его жизненная позиция такая - нагадить в как можно большее число мест, чтобы потом рассказывать «вот, смотрите как я крут, я и тут нагадил, и здесь, и там, и вон там от меня тоже воняет...»

anonymous
()
Ответ на: комментарий от imul

>> например /etc/mtab вообще не нужен, ибо есть /proc/mounts

lrwxrwxrwx 1 root root 17 Май 15 04:40 /etc/mtab -> /proc/self/mounts

Правда при этом начинают глючить `mount --bind`-ы и `mount -o loop`, ну да какая разница, правда?

anonymous
()

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

anonymous
()
Ответ на: комментарий от anonymous

> Правда при этом начинают глючить `mount --bind`-ы и `mount -o loop`, ну да какая разница, правда?

Пользуюсь и тем и другим, особенно часто --bind. Где посмотреть на глюки?

imul ★★★★★
()
Ответ на: комментарий от anonymous

Вообще давно замечено, что доводы в стиле «надо чтобы все было так же как и раньше», «чтоб всё было\„как у людей\“» и вообще слепое, бездумное преклонение перед всякими правилами, традициями - признак низкого интеллекта.

anonymous
()
Ответ на: комментарий от anonymous

>И заметьте, что характерно, ни одного вменяемого возражения от противников этой идеи в комментариях - одни только истеричные эмоциональные крики и упоминание какой-то надуманной ситуации «на серверах», когда /usr навернется и якобы можно будет используя только / получить минимальную рабочую систему. Вобщем, товарищи правильным путем идут.

Говорят можно, и мне она помогает примерно раз в год или два восстановить работоспособность системы.

anonymous
()
Ответ на: комментарий от anonymous

> Когда попробуешь восстановить без {CD-ROM,DVD-ROM,floppy,USB,etc}, вот тогда и высказывай своё «компетентное» мнение.

Было время я в лфс, на котором сидел года три, в /bin и /sbin вообще статические бинарники делал, а в /usr/bin и /usr/sbin их дублировал динамическими и при успешной загрузке в PATH ни /bin ни /sbin не было.

imul ★★★★★
()
Ответ на: комментарий от unsigned

> Проблема в том, что многие программы лезут в /usr до его монтирования. Неполный список программ

Внезапно, все эти программы тоже лежат в /usr, поэтому полезть в него до его монтирования они ну никак не могут. Дело обстоит немного иначе. Это systemd пытается найти их в usr раньше, чем он сам успевает его смонтировать. Вот это и вызывает проблемы. И причина проблемы - не в usr.

anonymous
()
Ответ на: комментарий от anonymous

> Это systemd пытается найти их в usr раньше, чем он сам успевает его смонтировать. Вот это и вызывает проблемы. И причина проблемы - не в usr.

ППКС
ЕМНИП это уже было озвучено в топике неоднократно, такое ощущение, что комментарии никто не читает, но все старательно пишут.

imul ★★★★★
()
Ответ на: комментарий от anonymous

> Совершенно внезапно, /run был сделан потому, что /var может грузиться с другого раздела.

Нет, не так. /run был сделан потому, что systemd пытался писать в /var/run раньше, чем успевал смонтировать /var. Леннарт посчитал, что это - Фатальный недостаток, но не в systemd, а в стандарте FHS.

anonymous
()
Ответ на: комментарий от imul

>ЕМНИП это уже было озвучено в топике неоднократно, такое ощущение, что комментарии никто не читает, но все старательно пишут.

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

ЗЫ: для тех кто ходит по ссылкам, не правда ли забавна аргументация, что systemd не кривой, потому что CUPS, colord и д.р. нужна /usr для работы.

anonymous
()
Ответ на: комментарий от HerrWeigel

> Да ладно вам, пусть балуются. Они ж не FHS меняют.

//тьфу-тьфу-тьфу

Are you sure? Read again!

anonymous
()
Ответ на: комментарий от unsigned

> Зачем разные ФС на / и /usr?

Однокристальный роутер, корень - это флешка на ubifs, которая один раз настраивается и переводится в read-only, /usr и /var монтируются с внешнего USB-диска, вставленного в usb-порт. Причем, если флешка не вставлена, то роутер все равно работает как роутер, просто не запускается торрент-клиент, который лежал на внешнем диске и качал туда же.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.