Создать корневой каталог linux
Первым делом надо создать саму структуру каталогов. Я создаю всех клиентов в каталоге /clients/имя_машины , я буду использовать это в примерах, приведенных ниже. Это, конечно, можно изменить на что-нибудь другое. Сначала создадим соответствующие каталоги в корневом каталоге клиента. Нужно создать следующие каталоги:
bin , dev , etc , home , lib , mnt , proc , sbin , server , tmp , usr , var
и другие, которые вы возможно захотите иметь в своей системе.
Каталоги local , proc , и dev будут использоваться отдельно на каждой машине, в то время как остальные каталоги будут частично или полностью с другими клиентами.
Несмотря на то, что каталог dev может быть разделен, правильнее будет создать отдельный каталог для каждого клиента. Вы можете создать клиентский каталог dev при помощи соответствующего скрипта MAKEDEV, хотя, в большинстве случаев значительно проще скопировать его с сервера командой:
bash# cp -a /dev /clients/hostname
Вы должны помнить, что /dev/mouse , /dev/cdrom и /dev/modem это символьные ссылки на настоящие устройства, поэтому необходимо убедиться в том, что они указывают на правильные устройства, в соответствии с конфигурацией клиентской машины.
Несмотря на то, что мы подключаем все с сервера, существует минимум, который необходимо скопировать каждому клиенту. Во-первых нам необходим «init», наша система не сможет ничего запустить до запуска «init» (это автор выяснил в результате долгих и мучительных поисков ;-). Итак, во-первых, вам надо скопировать файл /sbin/init в каталог sbin вашего клиента, и для того, чтобы заработал rc.S , надо скопировать /bin/sh в каталог bin клиента. Также для того, чтобы подключить все, что надо, скопируйте /sbin/mount в каталог sbin клиента. Это минимум, предполагающий, что первая строка в вашем файле rc.S содержит команду mount -av . Однако, я советую скопировать еще немного файлов: update , ls , rm , cp и umount , чтобы у вас был минимальный набор средств в том случае, если будут проблемы с подключением. Также, если вы решите оставить включение swap до подключения файловых систем, необходимо будет скопировать программу swapon .
Так как большинство этих программ по умолчанию созданы с использованием динамических связей, вам также будет нужна большая часть каталога /lib :
bash# cp -a /lib/ld* /lib/libc.* /lib/libcursses.* /client/hostname/lib
Лучше будет создать жесткие ссылки на эти файлы, вместо их копирования. Прочтите комментарии к этому в разделе 2.1 этого Howto.
Заметьте также, что вся приведенная выше информация предполагает, что сетевые параметры передаются ядру при загрузке. Если вы планируете использовать rarp или bootp, то вам для этого, возможно, также понадобятся соответствующие программы.
В общем случае, вам понадобится минимум файлов, который позволит сконфигурировать сеть и запустить скрипт rc.S до точки, где он подключает остальную файловую систему. Убедитесь в том, что вы проверили файлы /etc/init и rc.S , и уверены, что там нет «сюрпризов», которые потребуют доступа к другим файлам до подключения файловых систем. Если таковые есть, найдите эти файлы и либо скопируйте их тоже, либо удалите соответствующие части файлов init и rc.S .
Каталог var , в большинстве случаев, должен быть уникален для каждого клиента. Однако, многое может быть разделено. Создайте в каталоге /server подкаталог var . Сюда мы подключим каталог /var сервера. Чтобы создать локальный каталог var , наберите:
bash# cp -a /var /clients/hostname/
Теперь у вас есть выбор, что сделать отдельно для каждого клиента, а что сделать разделенным. Любой каталог файл, который вы хотите разделить между клиентами, удалите из клиентского каталога, и создайте для него символьную ссылку или на /server/var/ , или на ../server/var , но НЕ НА /clients/hostname/server/var , так как это не будет работать, поскольку корень системы изменяется.
Обычно я советую создать для каждого клиента отдельные каталоги /var/run , /var/lock , /var/spool , и /var/log .
etc подробно описывается в следующем разделе.
mnt и proc существуют для локальных целей.
usr и home — обычные точки подключения.
tmp — это решать вам. Вы можете создать отдельные каталоги tmp для каждого клиента или создать несколько каталогов /clients/tmp , и подключить их для каждого каталога в их /tmp . Я бы рекомендовал иметь для каждого клиента отдельный каталог tmp .
Замечание: Заметьте, что в этой секции описывается построение каталога etc, который большей частью разделен между клиентами. Если ваши бездисковые клиенты имеют отдельных системных администраторов, лучше создать отдельный каталог etc для каждого клиента.
Несмотря на то, что мы создаем отдельные каталоги etc для каждого клиента, большинство файлов в них мы все-таки разделим между клиентами. Вообще, разделение файлов etc с каталогом /etc сервера — это плохая идея, поэтому я советую создать каталог /clients/etc , в котором будет информация, необходимая клиентам. Для начала просто скопируйте каталог /etc сервера в каталог /clients/etc .
Вы должны добавить в этот каталог все не-машинно-уникальные файлы конфигурации, например motd , issue , и т.п. и те файлы, которые одинаковы для всех клиентов.(т.е. inittab или fstab )
Наиболее важным изменениям подвергнется ваш каталог rc.d . Во-первых, вам надо будет изменить файл rc.inet1 для того, чтобы он соответствовал локальной настройке. Я передаю все мои сетевые параметры ядру через LILO/Loadlin, поэтому я почти все удалил из файла rc.inet1 . Единственное, что я там оставил — это ifconfig и route для локальной машины. Если вы используете rarp или bootp, то придется настроить его соответственно.
Во-вторых, отредактируйте ваш файл rc.S . Сначала уберите оттуда все части, ответственные за проверку дисков fsck, так как fsck запускается при загрузке сервера. Затем найдите строки, в которых подключаются ваши файловые системы. Они должны выглядеть примерно так:
mount -avt nonfs
Ключ -t nonfs присутствует здесь потому, что обычные машины сначала запускают rc.S и только потом конфигурируют Ethernet в скрипте rc.inet1 . Так как эта строка не подключает NFS-разделов, то ее можно удалить. Поменяйте ее на mount -av . Если вам надо запустить rarp/bootp для настройки сети, сделайте это в rc.S (или запустите соответствующий скрипт из rc.S ) до команды mount и убедитесь в том, что ваши каталоги bin и sbin содержат все необходимые файлы.
После того, как выполнится команда mount -av , вы получите работоспособную файловую систему. Создайте общий fstab, чтобы скопировать его позднее каждому клиенту. Ваш файл fstab должен выглядеть примерно так:
Таблица 1. fstab
server:/clients/hostname | / | nfs | default | 1 | 1 |
server:/bin | /bin | nfs | default | 1 | 1 |
server:/usr | /usr | nfs | default | 1 | 1 |
server:/sbin | /sbin | nfs | default | 1 | 1 |
erver:/home | /home | nfs | default | 1 | 1 |
server:/lib | /lib | nfs | default | 1 | 1 |
server:/clients/etc | /server/etc | nfs | default | 1 | 1 |
server:/clients/var | /server/var | nfs | default | 1 | 1 |
none | /proc | proc | default | 1 | 1 |
Заметьте, что ключевое слово default может не работать в некоторых версиях команды mount. Вам возможно придется сменить его на rw или ro , или убрать все части default 1 1 .
Также убедитесь, что ваш файл /etc/exports на сервере выглядит примерно так:
Таблица 2. /etc/exports
/clients/hostname | hostname.domainname(rw,no_root_squash) |
/clients/etc | hostname.domainname(ro,no_root_squash) |
/clients/var | hostname.domainname(ro,no_root_squash) |
/usr | hostname.domainname(ro,no_root_squash) |
/sbin | hostname.domainname(ro,no_root_squash) |
/bin | hostname.domainname(ro,no_root_squash) |
/lib | hostname.domainname(ro,no_root_squash) |
/home | hostname.domainname(rw,no_root_squash) |
В отличие от первой строки, которая должна быть отдельна для каждого хоста, остальные строки могут содержать маску хостов для того, чтобы использоваться для всех ваших машин (например, pc*.domain — однако помните, что * подходит для всех строк, не содержащих внутри себя точку). Я предполагаю, что вы сделаете большинство каталогов только для чтения, но это зависит от вас. Флаг no_root_squash указывает на то, что пользователи root на клиентских машинах будут иметь настоящие права root-а также и на nfsd. Читайте man exports(5). Если вы хотите, чтобы пользователи на клиентских машинах могли запускать passwd , убедитесь что каталог /etc имеет разрешение на запись. Однако, я бы этого вам не советовал.
Отметьте также еще одну вещь, касающуюся файла rc.S . В дистрибутиве Slackware по умолчанию файлы /etc/issue и /etc/motd создаются заново каждый раз, как система запускается. Эта функция ДОЛЖНА быть запрещена, если эти файлы подключаются в режиме «только для чтения» с сервера, я бы посоветовал отключить эту функцию в любом случае.
И последнее. Если вы хотите, чтобы на клиентской машине был тот же набор пользователей, что и на сервере, вы должны выбрать между 1) использованием NIS (Желтые Страницы — прочтите yp-howto), и поэтому у каждого клиента будут свои файлы /etc/passwd и /etc/group , так как он получает их с NIS-сервера. 2) В большинстве случаев, обычной символьной ссылки будет достаточно. Таким образом, вам придется сделать ссылку /clients/etc/passwd на файл /etc/passwd , жесткую или символьную — какую вы предпочитаете (и не как то по-другому, так как клиенты не подключают каталог /etc сервера). Проделайте то же самое для файла /etc/group .
В общем случае, большинство файлов в каталогах etc клиентов будут представлять из себя символьные ссылки на соответствующие файлы в каталоге /server/etc . Однако, некоторые файлы различны для каждой машины, и некоторые просто должны быть там, пока загружается ядро. Минимум файлов, который вы должны иметь в клиентском каталоге etc приведен ниже:
resolv.conf |
hosts |
inittab |
rc.d/rc.S |
fstab |
В то время, как эти 5 файлов могут быть одинаковыми у всех клиентов, вы можете создать жесткие ссылки или просто скопировать их. Однако, я рекомендую создать отдельные файлы rc.S и fstab для каждого клиента. Вам также может понадобиться отдельный файл etc/HOSTNAME для каждого клиента. Я лично советую иметь отдельные rc.d -файлы для каждого клиента, так как конфигурация и оборудование могут различаться.
Для каждого клиента добавьте в fstab соответствующую строку, касающуюся swap :
Таблица 3. fstab
/dev/swap_partition | swap | swap | default | 1 | 1 |
Остальные файлы каталога /etc клиента могут представлять из себя или жесткие ссылки на файлы /clients/etc* или символьные ссылки на файлы каталога /server/etc (который является точкой подключения каталога /clients/etc ).
Убедитесь в том, что ваша машина правильно распознает (resolve) хосты, с помощью named или через etc/hosts . Не очень плохая идея — хранить IP-адрес сервера в файле etc/hosts , нежели полагаться на распознавание (resolving). Если вы будете полагаться только на named, проблема с named не даст загрузиться вашим клиентам.
Теперь, вы сделали все для того, чтобы ваша машина загрузилась, скрестите пальцы и надейтесь, что все будет работать так, как оно должно :-).
Источник
Как создавать каталоги в Linux (команда mkdir)
В системах Linux вы можете создавать новые каталоги либо из командной строки, либо с помощью файлового менеджера вашего рабочего стола. Команда, позволяющая создавать каталоги (также известные как папки), — это mkdir .
В этом руководстве рассматриваются основы использования команды mkdir , включая повседневные примеры.
Синтаксис команды Linux mkdir
Синтаксис команды mkdir следующий:
Команда принимает в качестве аргументов одно или несколько имен каталогов.
Как создать новый каталог
Чтобы создать каталог в Linux, передайте имя каталога в качестве аргумента команды mkdir . Например, чтобы создать новый каталог newdir вы должны выполнить следующую команду:
Вы можете убедиться, что каталог был создан, перечислив его содержимое с помощью команды ls :
При указании только имени каталога без полного пути он создается в текущем рабочем каталоге.
Текущий рабочий каталог — это каталог, из которого вы запускаете команды. Чтобы изменить текущий рабочий каталог, используйте команду cd .
Чтобы создать каталог в другом месте, вам необходимо указать абсолютный или относительный путь к файлу родительского каталога. Например, чтобы создать новый каталог в каталоге /tmp вы должны ввести:
Если вы попытаетесь создать каталог в родительском каталоге, в котором у пользователя недостаточно прав, вы получите сообщение об ошибке Permission denied :
Параметр -v ( —verbose ) указывает mkdir печатать сообщение для каждого созданного каталога.
Как создать родительские каталоги
Родительский каталог — это каталог, который находится над другим каталогом в дереве каталогов. Чтобы создать родительские каталоги, используйте параметр -p .
Допустим, вы хотите создать каталог /home/linuxize/Music/Rock/Gothic :
Если какой-либо из родительских каталогов не существует, вы получите сообщение об ошибке, как показано ниже:
Вместо того, чтобы создавать недостающие родительские каталоги один за другим, вызовите команду mkdir с параметром -p :
Когда используется опция -p , команда создает каталог, только если он не существует.
Если вы попытаетесь создать каталог, который уже существует, а параметр -p не mkdir , mkdir выведет сообщение об ошибке File exists :
Как установить разрешения при создании каталога
Чтобы создать каталог с определенными разрешениями, используйте параметр -m ( -mode ). Синтаксис для назначения разрешений такой же, как и для команды chmod .
В следующем примере мы создаем новый каталог с разрешениями 700 , что означает, что только пользователь, создавший каталог, сможет получить к нему доступ:
Когда опция -m не используется, вновь созданные каталоги обычно имеют права доступа 775 или 755 , в зависимости от значения umask .
Как создать несколько каталогов
Чтобы создать несколько каталогов, укажите имена каталогов в качестве аргументов команды, разделенные пробелом:
Команда mkdir также позволяет создать сложное дерево каталогов с помощью одной команды:
Приведенная выше команда создает следующее дерево каталогов :
Выводы
Команда mkdir в Linux используется для создания новых каталогов.
Для получения дополнительной информации о mkdir посетите страницу руководства mkdir .
Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.
Источник