Использование пути "/sys"
Posted: Wed Jan 05, 2022 3:20 am
Я сначала начну с предисловия, потом перейду к сути. Надеюсь, что «воды» много не написал, да и во всяком случае это лишним не будет (мало ли пригодится кому-нибудь).
Как все знают, в KolibriOS есть директория /sys, которая всегда существует (в стандартной сборке; независимо от параметров запуска) и (как я понимаю) ее поддержка встроена в ядро. С помощью неё осуществляется доступ к файлам системы.
Однако сложилось так, что KolibriOS обычно используют, работая на физической (или же подключённой в эмулятор) дискете или работая с образом этой же дискеты (например, kolibri.img, который поставляется внутри LiveCD образа). В таких случаях система создаёт рамдиск /rd/1, куда копирует файлы с дискеты, и затем именно на этот путь ссылается /sys. Одновременное наличие /rd/1 и /sys, я думаю, может вызывать путаницу у программистов, отчего они в своём коде могут обращаться напрямую к рамдиску. Это в большинстве случаев не заметно, ведь, как я выше написал, почти все пользуются дискетами.
Но, так как использование KolibriOS на дискете не является обязательным, пользователи могут устанавливать систему, например, на HDD. Да и с относительно недавних пор KolibriOS может загружаться по UEFI. Таким образом, система может запускаться вовсе без дискеты или её образа. Система в таком случае не создаёт рамдиск, а /sys ссылается сразу на директорию, в которой расположены файлы системы на диске. Это все очень хорошо, но возникает проблема с работой некоторых программ. Так как в своём коде они обращаются к /rd/1, а не к /sys, могут возникать непредвиденные ошибки: от невозможности запустить программу (что на данный момент замечено мной в CEdit) до каких-либо ошибок во время выполнения (я нашёл, что компилятор C-- может обратиться к /rd/1/Settings/c--.ini).
Я буду исправлять такое в исходниках существующих программ. Также я думаю, что стоит создать страницу на Wiki «Рекомендации по написанию программ», где написать, как минимум, об этом. В таком случае можно будет надеяться, что новые программы не будут обращаться напрямую к рамдиску, когда нужно обратиться к системной директории /sys.
Как все знают, в KolibriOS есть директория /sys, которая всегда существует (в стандартной сборке; независимо от параметров запуска) и (как я понимаю) ее поддержка встроена в ядро. С помощью неё осуществляется доступ к файлам системы.
Однако сложилось так, что KolibriOS обычно используют, работая на физической (или же подключённой в эмулятор) дискете или работая с образом этой же дискеты (например, kolibri.img, который поставляется внутри LiveCD образа). В таких случаях система создаёт рамдиск /rd/1, куда копирует файлы с дискеты, и затем именно на этот путь ссылается /sys. Одновременное наличие /rd/1 и /sys, я думаю, может вызывать путаницу у программистов, отчего они в своём коде могут обращаться напрямую к рамдиску. Это в большинстве случаев не заметно, ведь, как я выше написал, почти все пользуются дискетами.
Но, так как использование KolibriOS на дискете не является обязательным, пользователи могут устанавливать систему, например, на HDD. Да и с относительно недавних пор KolibriOS может загружаться по UEFI. Таким образом, система может запускаться вовсе без дискеты или её образа. Система в таком случае не создаёт рамдиск, а /sys ссылается сразу на директорию, в которой расположены файлы системы на диске. Это все очень хорошо, но возникает проблема с работой некоторых программ. Так как в своём коде они обращаются к /rd/1, а не к /sys, могут возникать непредвиденные ошибки: от невозможности запустить программу (что на данный момент замечено мной в CEdit) до каких-либо ошибок во время выполнения (я нашёл, что компилятор C-- может обратиться к /rd/1/Settings/c--.ini).
Я буду исправлять такое в исходниках существующих программ. Также я думаю, что стоит создать страницу на Wiki «Рекомендации по написанию программ», где написать, как минимум, об этом. В таком случае можно будет надеяться, что новые программы не будут обращаться напрямую к рамдиску, когда нужно обратиться к системной директории /sys.