Зачем нужны эти монтирования перед обновлением initramfs?

В Linux Mint 18.1 на основе Ubuntu 16.04 с:

bash --version | head -1
 GNU bash, версия 4.3.46 (1) -release ( x86_64-pc-linux-gnu) 
 

Поведение выглядит следующим образом:

echo dog\!\!

приводит к:

 dog !! 
 
echo 'dog!!'

приводит к:

 dog! ! 
 
echo "dog!!"

неожиданно печатает dog , за которой следует последняя команда; например если вы выполнили ls раньше, он напечатает:

 echo "dogls" 
dogls 
 

На GNU / Linux Debian 9 Stretch там является немного более новой версией:

bash --version | head -1
 GNU bash, версия 4.4.11 (1) -release (x86_64-pc-linux-gnu) 
 

Поведение выглядит следующим образом:

echo dog\!\!

приводит к:

 dog !! 
 
echo 'dog!!'

приводит к:

 dog !! 
 
echo "dog!!"

неожиданно печатает dog , за которым следует последняя команда; например если вы сделали ls раньше, он напечатает:

 echo "dogls" 
dogls 
 

Мне это кажется последовательным.

Возможно, что в старых системах со старой версией bash он ведет себя немного иначе. Но в новых системах мы можем ожидать такого поведения.

1
07.08.2017, 07:12
2 ответа

Делать это необходимо только в некоторых особых случаях, например, когда вы подключаетесь к другой системе и пытаетесь сгенерировать или обновить образ initramfs.

Чтобы понять, почему нам нужно связывать эти пути, вы должны знать, что такое initramfsи зачем нам это на самом деле:

Many Linux distributions ship a single, generic Linux kernel image – one that the distribution's developers create specifically to boot on a wide variety of hardware. The device drivers for this generic kernel image are included as loadable kernel modules because statically compiling many drivers into one kernel causes the kernel image to be much larger, perhaps too large to boot on computers with limited memory. This then raises the problem of detecting and loading the modules necessary to mount the root file system at boot time, or for that matter, deducing where or what the root file system is. [1]

В заключение :в моей среде при создании или обновлении initramfs я должен знать, какие у меня устройства, например, :какие диски у меня есть и какие инструменты/модули я должен установить в свою «initramfs» для загрузки систем? откуда берутся эти данные?

Пути типа /devсодержат много полезной информации о подобных вещах, поэтому мы реплицируем путь типа /dev.

Изman hier:

/dev Special or device files, which refer to physical devices.


Что касается вашего другого вопроса, насколько я знаю, когда вы меняете что-либо в любом из смонтированных мест, это будет отражать фактическую файловую систему, вы можете легко проверить это самостоятельно:

$ sudo mount --rbind ~/Documents /mnt
$ touch ~/mnt/foo
$ ls ~/Documents/foo
/home/ravexina/Documents/foo
1
27.01.2020, 23:45

Also if I make any changes to the dev and run they will not be reflected in the system's /dev and /run. Right?

Неправильно, по крайней мере, в целом.

Для монтирования с привязкой можно настроить четыре различных типа поведения, при этом по умолчанию используется равное копирование. См.man 8 mount:

--make-shared
--make-slave
--make-private
--make-unbindable
0
27.01.2020, 23:45

Теги

Похожие вопросы