Как я собрал свою операционную систему: AUFS, слои и деконструкция себя. aufs.. aufs. devlife.. aufs. devlife. initramfs.. aufs. devlife. initramfs. linux.. aufs. devlife. initramfs. linux. overlayfs.. aufs. devlife. initramfs. linux. overlayfs. whiteout.. aufs. devlife. initramfs. linux. overlayfs. whiteout. выгорание.. aufs. devlife. initramfs. linux. overlayfs. whiteout. выгорание. системное мы.. aufs. devlife. initramfs. linux. overlayfs. whiteout. выгорание. системное мы. файловые системы.

Пролог: Зачем разбирать себя на слои?

Когда я впервые настроил AUFS для контейнеров, осознал: люди — тоже union-монтирование. Мы — наложение паттернов, привычек и ролей. Решил применить это к себе.

Спонсор эксперимента — более 5 лет в IT и знание, что /proc/self/maps не показывает границы внутреннего ада.


Глава 1: AUFS как модель личности

Что такое AUFS в реальности?

Another Union File System — это объединение нескольких слоёв файловой системы в единое целое. Каждый слой может быть:

  • Read-only (базовые установки)

  • Read-write (один, верхний, текущие изменения)

  • Whiteouts (удалённые элементы, спрятанные, но не забытые)

Слоев для чтения может быть много, а для записи — только один. Это неизменное правило.


Моя “личность” в терминах AUFS

Монтирование себя

mount -t aufs -o br:/upper=rw:/lower1=ro:/lower2=ro,udba=reval none /mnt/current_self

Слои:

  1. /lower1/base (Read-only):

    • Детские травмы (/family_dysfunction)

    • Генетика (/biology/irish_depression)

    • Культурный код (/etc/russian_guilt.conf)

  2. /upper/changes (Read-write):

    • Привычки (/usr/bin/procrastinate.sh)

    • Навыки (/lib/modules/coding_skills)

    • Социальные маски (/dev/char/social_role)

  3. Whiteouts:

    • /.wh.deleted_sensitivity (подавленная эмпатия)

    • /.wh.killed_dreams (отказ от музыки в 15 лет)


Как собрать себя заново?

Шаг 1: Анализ слоёв

auplink /mnt/current_self list

/lower1/base/trauma_events.log
/upper/changes/new_beliefs.cfg

Шаг 2: Пересборка

mkdir -p /upper/patches/self_2024
cp /lower1/base/bad_patterns.c /upper/patches/self_2024/
vim /upper/patches/self_2024/bad_patterns.c

Шаг 3: Удаление через whiteout

touch /upper/changes/.wh.never_ask_for_help

Глава 2: Реальные кейсы переслоения

Кейс 1: Импровизация как Overlay

Проблема: страх публичных выступлений.
Код в /lower1/base/social_interaction.c:

if (audience > 1) {
    panic("They see through you!");
}

Решение: временный слой:

mount -t aufs -o br:/tmp/actor_mask=ro:/upper/changes=rw /mnt/stage_persona

Результат: теперь в /usr/bin/talk.py:

def speak():
    if self.mode == "public":
        execute(actor_mask.script)  # Имитация уверенности
    else:
        normal_mode()

Кейс 2: Миграция с Python 2 на 3 (aka идентичность 2.0)

  1. Бэкап слоя:

cp -a /lower1/base /lower1/base_python2_backup
  1. Постепенная замена:

- print "I'm worthless"
+ print("I'm work-in-progress")
  1. Проверка совместимости:

./configure --with-self-compassion=yes
make test

Глава 3: Технические проблемы самоAUFS’а

1. Конфликт слоёв

Симптом: зависания при переписывании базовых установок через /upper/changes
Пример:

echo new > /upper/changes/fear_of_abandonment

Ошибка: kernel panic: conflicting belief systems

Решение:

dmesg | grep -i conflict
echo 1 > /proc/sys/kernel/emotional_crash
reboot  # через терапию

2. Утечки памяти

cat /proc/self/status | grep -i anon

Anonymous memory: 8.7G (память о бывших, невысказанное, тревоги)

Фикс:

void release_memory(void *pain) {
    kfree(pain);
    trigger_grief();   // Плач
    trigger_writing(); // Дневник
}

3. Бесполезные whiteouts

Проблема: whiteout скрывает, но не очищает.

stat /mnt/current_self/.wh.need_for_approval

Size: 0 Blocks: 8

Вывод: suppression != deletion. Нужно пересобирать.


Эпилог: Что осталось в /var/log

Мой эксперимент показал: слои — не решение, а инструмент. Как и в AUFS, важно:

  • Делать auplink flush — синхронизировать и отпускать

  • Не бояться rmmod старых модулей

  • Помнить: даже read-only слои можно переосмыслить через mount

# А пока я переключился на:
mount -t overlay -o lowerdir=childhood,upperdir=init_attempt,workdir=/tmp/initramfs_rebuild none /mnt/boot_self

Сейчас пробую OverlayFS — он позволяет менять нижние слои. Видимо, пора лезть в initramfs детства.


P.S. Все скрипты из статьи — в моём GitHub. Там же конфиги для emotional_cgroupd — демона контроля ресурсов.

P.S.S. Мне 23, я разработчик. Эта статья — не просто метафора, а начало сборки настоящей ОС. Следующая — про init, rootfs, и загрузку своего первого слоя реальности.


P.S.S.S. Если вам откликаются мои размышления о слоистых системах, технологии и жизни, подписывайтесь на мой канал в Telegram “Консоль Души”. Тут я делюсь своими мыслями и опытом в IT, говорю о том, как я пережил паузу в коде, и о том, как мы, как и операционные системы, можем быть многослойными.

Подписаться на канал

_____________________________
/
| mount -t aufs -o br=... |
| Монтирую личность... |
| |
| /lower/base: травмы |
| /upper/changes: опыт |
| /.wh: подавления |
| |
| >> /mnt/current_self |
_______________________________/


|| ||
(o) (o)
| |
___||___/
/
/
(__) (__)

⬢ Mozgolika v1.0 ⬢
"Self is mounted"

Автор: mozgolika

Источник

Rambler's Top100