Начиная с 1.7.5.6-1 модифицированные прошивки поддерживают загрузку с корневой ФС на внешнем USB диске/флешки/внутреннего IDE. Обращаю внимание, что ядро Linux в любом случае грузится из встроенного флеш, поэтому при "апгрейде" прошивки не забывайте обновлять файлы на диске.
Далее приводится пример по загрузке с первого раздела с USB флеша (/dev/scsi/host0/bus0/target0/lun0/part1). Для WL-HDD (IDE диска) путь будет немного другим.
Чтобы заставить устройство "грузиться" оттуда необходимо:
- Создать и отформатировать ext3 раздел
Code:
# запустите fdisk если Вы хотите переразбить диск
fdisk /dev/scsi/host0/bus0/target0/lun0/disc
# отформатируйте раздел
mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1
- Скопируйте начальное содержимое
Code:
# монтируем
mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /mnt
# копируем из встроенного флеша
tar cvO -C / .version bin/ etc/ lib/ sbin/ usr/ www/ var/ | tar x -C /mnt
# создаём нужные директории
mkdir -p /mnt/tmp && mkdir -p /mnt/dev && mkdir -p /mnt/proc && mkdir -p /mnt/mnt
# размонтируем
umount /mnt
- Устанавливаем загрузочное устройство
Code:
nvram set boot_dev="/dev/scsi/host0/bus0/target0/lun0/part1"
nvram commit
После этого при каждой загрузке устройство будет пытаться монтировать внешнюю файловую систему и в случае удачи использовать её. В противном случае загрузка будет продолжаться из встроенного флеша.
После загрузки вы можете перемонтировать файловую систему на чтение-запись используя
Code:
mount -o remount,rw,noatime $(nvram get boot_dev) /
(опция noatime уменьшает число записей на флешку.
Далее Вы можете изменять что Вам нравится и перемонтировать на только чтение:
Code:
mount -o remount,ro,noatime $(nvram get boot_dev) /
Можно поместить команды перемонтирования в post-boot или pre-boot скрипты.
Для освобождения неиспользуемой в дальнейшем области памяти добавьте такие команды в pre-boot:
Code:
#!/bin/sh
[ -d /mnt/dev ] && umount /mnt/dev && umount /mnt/proc && umount /mnt