LINUX.ORG.RU
решено ФорумAdmin

aufs в качестве root

 , , , ,


0

1

Здравствуйте.
Ударила мне моча в голову сделать aufs в качестве рута.
В aufs содержатся две файловые системы.
Первая с чистым и настроеным debian wheezy - ro, ext2
Вторая пустая - rw, ext4
Задумка в том, что все изменения пишутся на вторую фс.
И в случае чего я ее просто форматирую и получаю настроенную и рабочую систему.

Проблема: Чтобы aufs стала рутом нужно модифицировать initrd. Нашел в гугле уже готовый скрипт для монтирования.

#!/bin/sh -e

case $1 in
  prereqs)
    exit 0
    ;;
esac

for x in $(cat /proc/cmdline); do
  case $x in
    root=*)
      ROOTNAME=${x#root=}
      ;;
    aufs=*)
      UNION=${x#aufs=}
        case $UNION in
          LABEL=*)
            UNION="/dev/disk/by-label/${UNION#LABEL=}"
            ;;
          UUID=*)
            UNION="/dev/disk/by-uuid/${UNION#UUID=}"
            ;;
        esac    
      ;;
  esac
done

if [ -z "$UNION" ]; then
    exit 0
fi

modprobe -Qb aufs

# make the mount points on the init root file system
mkdir /aufs /ro /rw

# mount read-write file system
if [ "$UNION" = "tmpfs" ]; then
  mount -t tmpfs rw /rw -o noatime,mode=0755
else
  mount $UNION /rw -o noatime
fi

# move real root out of the way
mount --move ${rootmnt} /ro

mount -t aufs aufs /aufs -o noatime,dirs=/rw:/ro=ro

# test for mount points on union file system
[ -d /aufs/ro ] || mkdir /aufs/ro
[ -d /aufs/rw ] || mkdir /aufs/rw

mount --move /ro /aufs/ro
mount --move /rw /aufs/rw

# strip fstab off of root partition
grep -v $ROOTNAME /aufs/ro/etc/fstab > /aufs/etc/fstab

mount --move /aufs /root

exit 0

Пытаюсь обновить initrd путем запуска update-initramfs -u
И получаю фигу: Syntax error: word unexpected (expecting «in»)
Вроде ошибок нет.
Баш знаю плохо, но суть процесса мне понятна.



Последнее исправление: Cactus64k (всего исправлений: 1)

Зачем?

Юзай btrfs, настраивай сабвольюмы, снапшоть и откатывайся при необходимости.

dvrts ★★★
()
Ответ на: комментарий от xaizek

Не помогло.
Небольшое дополнение к инфе о ошибке:
Тройку раньше не замечал.
Скрин
Если добавить кавычки к $1, то ошибка остается.

Cactus64k
() автор топика
Ответ на: комментарий от dvrts

Почему костыль? Тут больше подойдет слово велосипед.
При этом я тут считай ничего не пишу.
Вообщем для btrfs я еще не созрел.
Поиграюсь в виртуалке с задумкой, не понравится или найду какие глюки\баги, то попробую btrfs

Cactus64k
() автор топика
Ответ на: комментарий от Cactus64k

для btrfs я еще не созрел

на больших дисках очкую, а на загрузочных флешках юзаю во все поля, не перестаю удивляться как они так сделали

rootfs на древней 2Gb флешке - летает

armbox
()
Ответ на: комментарий от turtle_bazon

Немного не в тему, но сейчас, вроде, модно overlayfs.

Ну это для тех у кого ядро свежее, а для старых ядер вытаскивать патч не просто.

для overlayfs смущает необходимость третьего каталога workdir, да еще и требование чтоб upperdir был на той-же ФС что и workdir.

Я все раздумываю на какой остаться. Для контейнеров такая ФС очень удобна, а держать 2 ФС - бардак!

vel ★★★★★
()
Ответ на: комментарий от turtle_bazon

В дебиан вообще такого нет.
А накладывать патчи и пересобирать ядро из за такой мелочи извращение.

Cactus64k
() автор топика
Ответ на: комментарий от Cactus64k

Локализовал ошибку.
Ошибка выбивается только в виртуалке, где я собсно и пытаюсь проверить жизнеспособность задумки.
Причем выбивается не только при попытке обновить initrd, но и при простом запуске.
На хостовой машине все нормально выполняется.
Версии баша одинаковые.
Даш версию не выдает. Дашевые пакеты одинаковой версии.

Cactus64k
() автор топика
Ответ на: комментарий от Cactus64k

Благими намерениями выложена дорога в ад.
Я поленился монтировать папку в виртуалку.
Залил скрипт на пастэбин и стянул его через wget.
За что и поплатился.
Получил я файл с CRLF внутри.
От чего у баша и сносит крышу.
То же самое будет и с BOM.

Задумка работает.
Если кто будет использовать скрипт, то его нужно немного поправить.
у modprobe нет параметра Q
В /etc/initramfs-tools/modules нужно добавить aufs
И перенести все монтирование в /mnt/, а то непривычно видеть в корне каталоги ro и rw

Cactus64k
() автор топика

Начиная вот отсюда

Нашел в гугле уже готовый скрипт для монтирования.

У тебя ошибка. А потому что мало «найти» надо ещё и понять а для этого делать желательно самому.

init_6 ★★★★★
()
Ответ на: комментарий от Cactus64k

хе! Я помню, как давным-давно, виндузятники отредактировали файл hosts, залили его через ftp в ascii-mode и долго ругались на линух, что в нем даже hosts не работает.

хорошо vim все показал.

vel ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.