Попробовать sudo -i -u $user
gerald@book:~$ env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -u ubuntu env |grep HOME
HOME=/home/gerald
gerald@book:~$ sudo -i -u ubuntu env |grep HOME
HOME=/home/ubuntu
Укладка просто означает, что некоторый модуль называет функции, определяемые в другом модуле. Существует пример прямо на странице, которую Вы цитируете. Согласно числу, lp
драйвер для принтеров на параллельных портах. Это выполняет вызовы в универсальный драйвер параллельного порта parport
. Существует несколько различных видов параллельных портов, и у каждого есть его собственный драйвер низкого уровня; наиболее распространенный parport_pc
. На текущих ядрах это на самом деле parport_pc
это призывает функции, определяемые parport
, а не противоположное, поскольку число предлагает. Конечно, все они выполняют вызовы к функциям простого ядра (которые не находятся в модулях).
Существует много подобных случаев. Например, большая часть устройства хранения данных (диск), драйверы общаются с (вариант) протоколом SCSI, таким образом, они выполняют вызовы в дженерик scsi_mod
модуль. usb_storage
модуль выполняет вызовы в обоих sci_mod
(для аспектов устройства хранения данных) и usbcore
(для аспектов USB).
Вы видите зависимости для всех модулей, которые Вы установили (т.е. какие модули вызывают функции от какой другие модули) в /lib/modules/*/modules.dep
(будут многие из них). Вы видите зависимости для модулей, которые в настоящее время загружаются lsmod
; например, следующая выходная строка показывает это parport_pc
, ppdev
и lp
все зависят от parport
:
parport 27954 3 parport_pc,ppdev,lp
Вот маленький сценарий, который генерирует граф зависимостей для модулей, которые Вы загрузили. У Вас должен быть graphviz (доступный в большинстве дистрибутивов).
lsmod | awk '
BEGIN {print "digraph modules {"}
END {print "}"}
NR != 1 {split($4, a, ","); for (i in a) print a[i], "->", $1;}
' | dot -Tpdf >lsmod.pdf
Обычно существует набор функций, связанных с любым физическим устройством, взаимодействующим с компьютером. Например, функции, связанные с дисковыми накопителями, включают в себя файловые системы, шифрование, резервирование и другие. Одним из способов организации и обеспечения различных функциональных возможностей является стекирование .
Это общая карта ядра Linux, где можно заметить "стеки"/"функции" (по вертикали) и "слои" (по горизонтали):
Это немного более подробная версия предыдущей диаграммы:
Ниже приведены примеры стеков драйверов устройств в Linux:
Концептуально:
и более подробно:
'…'
) быть, очевидно, awk сценарием. – Gilles 'SO- stop being evil' 08.04.2011, 22:19