Существует несколько шагов в процессе начальной загрузки (я описываю традиционный ПК BIOS):
/boot/grub
.(hd0)/boot/grub
) это определяет, где найти grub.cfg
и дальнейшие модули Личинки.grub.cfg
выполняется, обычно чтобы показать меню и загрузить ОС.Загрузочный сектор сгенерирован grub-setup
, обычно вызванный через grub-install
. Загрузочный сектор заканчивается на любом диске, который Вы указали (в синтаксисе Linux) на grub-install
или grub-setup
командная строка. Можно проверить, что у Вас есть загрузочный сектор на диске путем выполнения file -s /dev/sda
. Так как Вы добавляете новый диск и хотите загрузиться от него, необходимо работать grub-install
на новом диске. Выполнение grub-install
многократно на том же диске безопасно.
Трудная часть находится на шаге 2 выше. Если во всей возможной, помещенной Личинке (т.е. /boot/grub
каталог) на загрузочном диске BIOS (или, приближаясь к этому от другого направления, говорят Вашему BIOS загружаться от диска где /boot/grub
). Это то, где device.map
играет роль. Удостоверьтесь это (hd0)
отображается на диске, который содержит /boot/grub
, затем выполненный grub-install
на том диске.
Если Ваши два диска будут в программном обеспечении RAID 1 конфигурация, то у Вас будут идентичные загрузочные секторы. Это - желательное поведение: если один диск, который является сбоями загрузочного диска BIOS, загружающимися от другого, будет просто работать (так как они содержат те же байты в тех же соответствующих местоположениях). Если Вы только зеркально отразили определенные разделы, то установка загрузочного сектора только влияет на один из дисков. Необходимо работать grub-install
снова на втором диске, после изменения device.map
связаться (hd0)
с диском, содержащим вторую зеркальную копию /boot/grub
.
Шаг 3 довольно сложен, но обычно работает из поля. На шаге 4 Личинка определяет местоположение файловых систем UUID или ищет именованные файлы, таким образом, Вы больше не должны волноваться о различных способах определять диски.
Используя find
в сочетании с pwd
прекрасный ответ, но он создает две подоболочки и не необходим. Существует команда, которая сделает то, что Вы хотите:
readlink -f .htaccess
$ cd /tmp && touch foo
$ ls ./foo
./foo
$ readlink -f ./foo
/tmp/foo
Необходимо будет использовать find
и pwd
.
Что-то как:
find `pwd` -name .htaccess -maxdepth 1
ИЛИ
Из этого ответа:
ls -d `pwd`/.htaccess
Вы могли использовать $PWD
переменная для включения нежелательных подоболочек:
find $PWD -name .htaccess -maxdepth 1
ls -d $PWD/.htaccess
См. также:
realpath
существует с этой целью (находящий канонические полные пути):
$ realpath .htaccess
/home/user/public_html/.htaccess
realpath
был obsoleted readlink -f
в GNU coreutils, таким образом, у меньше и меньшего количества систем Linux есть он. (И readlink -f
также существует на OpenBSD, таким образом, это не является абсолютно определенным для Linux.)
– Gilles 'SO- stop being evil'
08.11.2010, 23:20
find
не нужно,`pwd`
только одна подоболочка и может быть заменена$PWD
.readlink -f
также переходит по символьным ссылкам, который не всегда желаем. – Gilles 'SO- stop being evil' 08.11.2010, 23:19readlink: illegal option -- f
. У кого-либо есть решение для другого *BSDs? – Stefan Lasiewski 20.05.2011, 02:12ls
, вызовrealpath
на каждом. – gravitation 27.07.2014, 13:46