Зачем нужно монтировать и chroot при загрузке с работающего USB?

Прямолинейный -ish in bash:

declare -A wordcount
while read -ra words; do 
    # unique words on this line
    declare -A uniq
    for word in "${words[@]}"; do 
        uniq[$word]=1
    done
    # accumulate the words
    for word in "${!uniq[@]}"; do 
        ((wordcount[$word]++))
    done
    unset uniq
done < file

Просмотр данных:

$ declare -p wordcount
declare -A wordcount='([possible]="1" [one]="1" [different]="1" [this]="1" [a]="1" [hello]="1" [world]="2" [man]="2" [0]="1" [1]="1" [2]="1" [is]="3" [the]="3" )'

и форматирование по вашему желанию:

$ printf "%s\n" "${!wordcount[@]}" | sort | while read key; do echo "$key:${wordcount[$key]}"; done
0:1
1:1
2:1
a:1
different:1
hello:1
is:3
man:2
one:1
possible:1
the:3
this:1
world:2
0
03.03.2021, 11:59
2 ответа

chrootне обязательно для всего. Если вы просто хотите отредактировать файл, вы обычно можете сделать это без него.

Некоторые системные инструменты предполагают, что система будет организована определенным образом. Такие вещи, как менеджеры пакетов (rpm, yum, dpkg, apt, apk... ). Невозможно сообщить этим командам, что ваша система организована по-другому.

Итак, давайте возьмем реальный пример, такой как Debian dpkg. Он отслеживает установленные пакеты в /var/lib/dpkg. Когда вы загружаетесь с Live USB и монтируете сломанную систему в /mnt, библиотека dpkg теперь будет не в том месте... она будет в /mnt/var/lib/dpkg. Вы не можете указать dpkg использовать это, поэтому вы не можете использовать dpkg для исправления вашей сломанной системы, если только...

Если вы chroot /mntпереместитесь туда, где все есть. Таким образом, /mnt/var/lib/dpkgвозвращается к /var/lib/dpkg, где он должен быть, и поэтому dpkg снова будет работать правильно.


Нет, обычно вам не нужно добавлять своп. Непрофессиональное описание свопа заключается в том, что он использует некоторое пространство на жестком диске для расширения вашей оперативной памяти. Для этого вида деятельности вам обычно требуется только часть оперативной памяти, которая у вас есть. Если у вас закончилась оперативная память, вы можете добавить ее в любое время... Так что, если SWAP монтируется из файла /var/swap, вы можете либо

swapon /mnt/var/swap

Перед вами chrootили

swapon /var/swap

После chroot.

1
18.03.2021, 22:27

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

Теперь, когда /относится к мёртвой системе, каждая команда хорошо играет. Мне нравится, что моя история оболочки теперь содержит содержимое того, что я сделал с мертвой системой, а не с живой системой, которую я загрузил. Кроме того, я могу использовать aptи многие другие инструменты, которые неявно полагаются на /как на систему для работы, а не на /mnt. Многие инструменты (, например. journalctl,grub-install)имеют свои собственные варианты переключения корня, но вводить их становится довольно утомительно и подвержено ошибкам -.

2
18.03.2021, 22:27

Теги

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