Тимчасово відключити розширення файлової системи під час першого завантаження


14

Я хотів би створити внутрішнє зображення Raspberry Pi на основі Raspbian Lite, яке вже налаштоване на правильну локаль, часовий пояс і т. Д. На жаль, для мене поточні випуски Raspbian зображень автоматично змінюють розмір файлової системи та перезавантажуються.

Я хочу уникнути клопотів щодо зменшення розміру файлової системи , запобігаючи виникненню розміру. Як би я відредагував зображення після запису, щоб тимчасово відключити автоматичний розмір файлової системи?

Відредаговані для уточнення наслідків повинні бути оборотні; тобто я хочу, щоб моє налаштоване зображення розгорнулося під час першого завантаження.


Це може бути не ідеальним рішенням, але ви думали про використання невеликої картки 4 Гб, де це не представляло б такої проблеми.
Стів Робіллард

2
Цікава ідея .. спалювання на маленькій картці, ефективно обмежуючи розмір. Я вважаю за краще пряме рішення, але це гідна альтернатива. Спасибі
patricktokeeffe

2
Це досить дратує. Я дуже впевнений, що це робиться за допомогою простого сценарію завантаження з самозайманням a la the way raspi-configis run at first boot, і його було б легко відключити. Я можу подивитися, але мені доведеться завантажити нове зображення, останнє у мене - з травня. Перевірте через кілька годин.
золотинки

Відповіді:


13

Є механізм у двох частинах, який несе відповідальність за це на Raspbian; Мабуть, найкраща ідея - подбати про обидві частини, якщо вони включені.

Перший полягає в тому, що оригінал /boot/cmdline.txtвключає в себе це:

init=/usr/lib/raspi-config/init_resize.sh

Посилаючись на скрипт із тим шляхом у кореневому розділі, який буде використовуватися як процес init при завантаженні. Без цього біта було б за замовчуванням значення, вбудоване в ядро /sbin/init, яке на Raspbian є символічним посиланням на /lib/systemd/systemd.

Видаляючи цю частину cmdline.txt, система повинна завантажуватися нормально.

Насправді цей скрипт - це змінити розмір розділу на SD-картці. Це відмітний процес від зміни розміру файлової системи в розділі 1 , що відбувається далі.

Таким чином, система негайно перезавантажується нормально (тобто через systemd) і init.dсценарій встановлюється для запуску на ранній стадії, який слід видалити з другого розділу:

/etc/init.d/resizefs_once

І символічне посилання на нього, яке також слід видалити:

/etc/rc3.d/S01resizefs_once

Ви можете зберегти копію для подальшого використання, якщо хочете, але raspi-configможете створити її знову для вас (вона вбудована в raspi-configсценарій оболонки). Якщо він насправді працює, він видаляє себе, тому це не повториться.

Крім того, це змінити розмір файлової системи в щойно зміненому розділі.

Не слід шкодити, якщо трапляється лише одна чи інша частина; у першому випадку ви отримуєте файлову систему, яка не заповнює розширений розділ, у другому нічого не відбудеться, оскільки файлова система вже заповнює розділ.

Якщо ви згодом використовуєте raspi-configдля розширення файлової системи, вона робить розмір розділу відразу, а потім встановлює скрипт init (як уже згадувалося).

Редагування cmdline.txtпершого розділу просто на будь-якому комп’ютері, оскільки це VFAT-розділ. Для видалення init.dфайлу потрібна система, яка може отримувати доступ та редагувати файлові системи ext4.

Обидва завдання замість цього можна виконати перед самим файлом зображення перед записом картки; для монтажу та зміни зображення Raspbian у системі GNU / Linux дивіться тут . Існує паралельне запитання і відповіді для Windows .

Це також оборотно, але вам потрібно буде повернути обидві частини механізму, як тільки було описано, оскільки перша не включає автоматичну постановку другої.


  1. Хоча повідомлення про помилку цього скрипта, ймовірно, плутає ці терміни, стверджуючи, що не вдалося змінити розмір кореневої файлової системи , але те, що він насправді не зміг зробити, - це змінити розмір розділу з кореневою файловою системою. Виконання одного не завершує автоматично іншого.

1
Коментарі не для розширеного обговорення; ця розмова була переміщена до чату .
Ghanima

Відключення @ goldilock init=/usr/lib/raspi-config/init_resize.shвід /boot/cmdline.txtроботи на ubuntu mate також здається достатньою. У мене зображення 4Gb ubuntu mate спалахнуло на 32gb sdcard і вміст розмірів розділів у вихідному розмірі зображення. Крім того, /etc/init.d/resizefs_onceі /etc/rc3.d/S01resizefs_onceне існує після першого завантаження ubuntu mate.
Сіт

Просто для підтвердження, чи відновлення як cmdline.txtі, так init.dі rc3.dфайлів та посилань дозволить наступному завантажувальному пристрою змінити розмір самих по собі або мені доведеться запускати raspi-configта запускати його вручну?
Oxwivi

@Oxwivi Слід, так. Я прояснив весь цей пост і зробив явний коментар до цього наприкінці.
золотинки

Так дякую. Також зауважте, IDK, від якої версії, але принаймні остання версія не містить посилань на скрипт розміру, які ви згадали зовні cmdline.txt. Проте, я завантажив зображення Raspbian, використовуючи systemd-nspawnі все ще отримав журнали помилок, намагаючись змінити розмір після видалення cmdline.txtречі.
Оксвіві
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.