Восстановление "родной" системы на eeePC

()

На Linux-версиях нетбуков eeePC компании ASUS предустановлена система собственной разработки на базе дистрибутива Xandros, и в комплекте с нетбуком идёт диск для восстановления этой системы в случае какого либо сбоя (хотя уже в самой системе предусмотрена функция восстановления, однако она не спасёт, если вы просто «снесли» систему, установив вместо неё что-либо другое, и теперь хотите вернуть оригинальную систему).

Далее будет показано, как можно восстановить оригинальную систему на eeePC, не имея под рукой USB-привода компакт-дисков. Всё описанное далее основано на личном (успешном) опыте автора.

Начальные условия:

  • нетбук eeePC 701;
  • фирменный диск восстановления системы.

Задача: восстановить оригинальную систему на нетбуке, не имея внешнего USB-привода компакт дисков.

Что нам потребуется (дополнительно):

  • Флэш-карта на два (или более) гигабайта;
  • Образ любого LiveCD с Linux (автор использовал Xubuntu);
  • Компьютер с DVD-приводом.

Решение задачи

Первым делом установим на компьютер утилиту UnetBootIn и с её помощью запишем образ LiveCD с Linux на флэшку. Почему нельзя просто записать таким образом содержимое диска восстановления? Можно, однако потом система всё равно пытается обратиться к DVD-приводу и реально восстановление не работает.

Закончив запись образа на флэшку, скопируем на ту же флэшку (в корень) с диска восстановления системы файл P701L.gz, после чего вставляем флэшку в eeePC и загружаемся с неё.

Файл P701L.gz представляет собой сжатый образ (точнее часть образа) диска на eeePC, собственно он и будет использован для восстановления.

Сразу после загрузки Xubuntu запускаем терминал и вводим команду (ВНИМАНИЕ! Все данные, находящиеся на накопителе нетбука будут уничтожены!):

zcat /cdrom/P701L.gz | sudo dd of=/dev/sda bs=512k

После этого мы имеем восстановленный раздел с системой, и далее у нас два варианта:

  1. Мы можем восстановить точную копию оригинальной системы, установленной на двух разделах, один из которых монтируется в режиме «только для чтения», а второй используется для хранения данных.
  2. Мы можем немного модифицировать инсталляцию, чтобы вся система использовала один раздел. В этом случае не будет возможности восстановления системы после небольших сбоев, однако будет чуть больше свободного места на накопителе.

Для начала рассмотрим первый вариант. Запустим cfdisk командой:

sudo cfdisk /dev/sda

И создадим раздел sda2, который займёт всё оставшееся на накопителе место и будет использоваться системой для хранения данных. После создания раздела нужно записать изменения и отформатировать новый раздел в файловую систему ext3 командой:

sudo mkfs.ext3 /dev/sda2

После этого остаётся только перезагрузить нетбук, загрузиться со встроенного накопителя и начинать пользоваться.

Теперь рассмотрим второй вариант. Здесь нам надо «растянуть» раздел sda1 на весь накопитель. Перед изменением раздела его надо проверить:

sudo fsck.ext2 -f -y /dev/sda1

Затем запускаем cfdisk, удаляем имеющийся раздел sda1 и создаём новый, размером с весь накопитель, после сохранения изменений снова проверяем раздел sda1. Убедившись, что всё прошло гладко, приступаем к изменению файловой системы на разделе (заодно добавим к ней журналирование, которое сделает систему немного более надёжной):

sudo resize2fs /dev/sda1 && sudo tune2fs -j /dev/sda1 && sudo fsck.ext3 /dev/sda1

Теперь нам надо запустить оболочку с правами суперпользователя и модифицировать initrd-образ в системе на eeePC. Запускаем оболочку командой:

sudo su -

Создаём временную директорию:

mkdir 1

Монтируем в неё раздел /dev/sda1:

mount /dev/sda1 1

Переходим в директорию 1/boot, создаём там временную директорию и распаковываем в неё имеющийся initrd-образ:

cd 1/boot && mkdir tmp && cd tmp && gunzip -c ../initramfs-eeepc.img | cpio -i

Далее приводим файл init к виду:

#!/bin/sh 
mount -t proc proc /proc 

if [ -n "$XANDROSBOOTDEBUG" ]; then 
    /bin/busybox sh 
    set -x 
fi 

ROOT=`cat /proc/cmdline | sed 's/.*root=// ; s/ .*//'` 

mount -t ext3 -o rw,noatime $ROOT /mnt 
if [ $? -ne 0 ] ; then 
    echo Could not mount OS on $ROOT. Starting debugging shell.... 
    /bin/busybox sh 
fi 

umount /proc 

if [ -n "$INIT" ]; then 
    if [ -n "$XANDROSBOOTDEBUG" ]; then 
    exec switch_root /mnt $INIT </mnt/dev/console >/mnt/dev/console 
    else 
    exec switch_root /mnt $INIT </mnt/dev/null >/mnt/dev/null 
    fi 
else 
    exec switch_root /mnt /sbin/fastinit "$@" </mnt/dev/console >/mnt/dev/console 
fi 

echo 
echo Init Failed. Starting emergency shell.... 
/bin/busybox sh

Собираем новый initrd-образ командой:

find | cpio -H newc -o | gzip -9 > ../initramfs-eeepc-nounionfs-ext3.img

Модифицируем конфигурацию загрузчика:

sed -i 's/initramfs-eeepc-nounionfs-ext3/initramfs-eeepc/' ../grub/menu.lst

Модифицируем файл fstab:

cat ../../etc/fstab| grep -v sda2 | sed 's/ext2/ext3/' > fstab && mv fstab ../../etc/

Удаляем временную директорию:

cd ../ && rm -rfv tmp

Всё! Теперь можно перезагрузить нетбук, загрузиться со встроенного накопителя и начать пользоваться восстановленной системой.

На этом всё. Приятной работы!

Корректор: Регина Васильева (reggi86@mail.ru)

Ключевые слова: eeepc, recovery.

Подписаться на обновления: RSS-лента Канал в TamTam Telegram канал Канал в ICQ

Комментарии:

2009-10-19 22:27:04 (#)

поделись сектретом, что ты сделал с ноутом, чтобы прибегнуть к такому?

MooSE 2009-10-19 23:32:22 (#)

поставил xubuntu. она мне надоела, соскучился по родной системе. попытался вернуть, привода не было, с флэшки эта тварь не восстанавливалась, раздел восстановления был похоронен под надоевшей xubuntu... короче пришлось разбираться что там на диске и городить весь этот огород:)
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2024 Вадим Калинников aka MooSE
Политика конфиденциальности