Ubuntu на внешней флешке в режиме read only на примере Acer Aspire One A0751h

Купил себе Acer Aspire One A0751h всем порадовал кроме того, что невозможно играть в CS, жаль. Значит настроим для работы. Что бы не гробить винт при работе в машине и т.п. решил дополнительно установить еще и на  SD флешку, естественно которая будет работать в режиме read only, дабы не гробить и флешку 🙂

Для начала поставим Ubuntu 9.04 на Acer Aspire One A0751h как обычно, у меня есть usb-DVD привод, усли у вас его нет, то ставте Ubuntu Netbook Remix. Но об этом позже.

Разрешение экрана.

Первое что не радует, это не правильное разрешение экрана. Исправим на 1366×768. Делаем все по рекомендации официального сайта:

Добавим новый репозитарий, в файл /etc/apt/sources.list добавим:

deb http://ppa.launchpad.net/ubuntu-mobile/ppa/ubuntu jaunty main

Затем выполним в консоли:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C6598A30
sudo apt-get update
sudo apt-get install xserver-xorg-video-psb psb-kernel-source
sudo shutdown -r now

Если разрешение сбилось, то загружаемся до консоли и выполним:

sudo apt-get remove psb-kernel-source
sudo apt-get install psb-kernel-source
sudo shutdown -r now

Выполните именно так, никаких —reinstall ключей.

Затем, рекомендуют поменять /etc/X11/xorg.conf я этого не делал:

Section "Device"
 Identifier      "Configured Video Device"
 Option          "IgnoreACPI"
 Option          "AccelMethod" "exa"
 Option          "MigrationHeuristic" "greedy"
 Option          "NoDDC"
 EndSection
Section "Monitor"
 Identifier      "Configured Monitor"
 EndSection
Section "Screen"
 Identifier      "Default Screen"
 Monitor         "Configured Monitor"
 Device          "Configured Video Device"
 EndSection
#Added for mouse pad
 Section "InputDevice"
 Identifier  "Mouse0"
 Driver      "synaptics"
 Option      "Protocol" "auto"
 Option      "Device" "/dev/input/mouse0"
 Option      "ZAxisMapping" "4 5 6 7"
 Option      "CorePointer"
 Option      "HorizEdgeScroll" "1"
 EndSection

Перезагрузим X-ы (или linux). Все.

Не работает фронтальный микрофон (встроенный в монитор)

На официальном сайте написанно, что должен работать…. НО, НЕ РАБОТАЕТ!

Исправим аналогично другой версии ноутбука. Для этого скачаем и поставим последнюю версию драйверов alsa из исходников:

wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.20.tar.bz2
tar xjvf alsa-driver-1.0.20.tar.bz2
cd alsa-driver-1.0.20
sudo apt-get install build-essential module-assistant
sudo m-a update
sudo m-a prepare.
./configure --with-cards=all
make
sudo make install
sudo shutdown -r now

Все микрофон должен заработать, необходимо только включить громкость (по умолчанию она отключилась), затем в утилите «Параметры звука»  (Система => Параметры => Звук) устанавливаем «ALSA — Advanced Linux Sound Architecture» на всех устройствах. В skype в настройках устанавливаем все устройства «default».

Винт постоянно паркуется.

Возможно у вас уже нет, послушайте звук издаваемый винтом. Частая парковка может негативно сказаться на жизни винчестера. Для того что бы отключить эту навязчивую идею ubuntu, воспользуемся утилитой hdparm. Можно выполнить команду и из командной строки, но это только до первой перезагрузки:

hdparm -B 254 -S 254 /dev/sda

-B 254 это минимальное энергосбережение (255 не все винчестеры пддерживают)
-S 254 это засыпание после 254*5сек=1270сек=21мин+10сек

Либо подправив /etc/hdparm.conf для постоянного эфекта после перезагрузки, добавив строки:

# -B apm setting
apm = 254
# -S standby (spindown) timeout for the drive
spindown_time = 24

Установка Ubuntu на flash-ку

Для разнообразия установим Ubuntu Netbook Remix, для этого скачаем образ флешки с сайта ubuntu. Затем зальем его на флешку которая будет у нас в место CD-привода, не та на которую будем в дальнейшем ставить Ubuntu. Для этого подключим флешку ( все данные будут удалены! на ней) к ноутбуку и выполним команду df и смотрим каким устройством она примонтировалась:

/dev/sdc1            945M  926M   20M  98% /media/rrv

У меня это устройство /dev/sdc смонтированное в папку /media/rrv , теперь отмонтируем устройство и зальем образ:

sudo umount /media/rrv
sudo dd if=/home/rom/ubuntu-9.04-netbook-remix-i386.img of=/dev/sdc bs=1M

Обратите внимание, что я использовал /dev/sdc а не /dev/sdc1

Теперь перегружаемся, устанавливаем в биосе загрузка с USB-Flash и подключаем вторую flash-карту (у меня это 4G SD-флешка) на которую будем ставить Ubuntu Netbook Remix и ставим все как обычно и как было описано выше за исключением того, что я использовал файовую систему reiserfs (где то читал, что флешкам она самое то)>Не используйте reiserfs, я с ней намучился. И никакого swap-а! (правда потереям возможность засыпать, дампить то память некуда:)

Тема оконного менеджера меня не впечатлила, по этому переключим стандартную Gnome-овскую с помощью desktop-switcher

Теперь нам нужно отключить HDD и что бы он не просыпался (экономим энергию батареи и ресурс винта). Опять же используем знакомую нам утилиту hdparm только с противоположными к установке на винт парамертами. Добавим в оригинальный (исходный) /etc/hdparm.conf следующие строки:

/dev/sda {
 apm = 1
 # -S standby (spindown) timeout for the drive
 spindown_time = 1
}

Здесь:

/dev/sda - устройство нашего HDD
apm = 1  - агресивное энергосбережение
spindown_time = 1 - засыпать через 1 сек

Так как мы не собираемся использовать HDD то он будет постоянно спать (Не советую в этом режиме использовать винт:)

Теперь делаем флешку read only

Для этого на понадобятся пакеты aufs-tools и squashfs-toolsю. aufs-tools для поддержки объедененной файловой системы aufs пришедшей на смену unionfs (синтаксис тот же, так что можно использовать и unionfs), теперь уже интегрировано в систему (ставить не надо aufs-tools). suashfs-tools для поддержки сжатой файловой системы squashfs. Поставим эти пакеты:

sudo apt-get install aufs-tools squashfs-tools

Далее удобнее выполнять настройку на другой системе, например загруженной с основного (или любого другого) винчестера, то есть загрузимся в Ubuntu и затем подключим настраиваемую флешку. Это делается для удобства, экономии времени и создания резервной копии директорий /usr и /srv (в /srv у меня skype в chroot). И так в системе загруженной с винта (дальше будет только о ней до тех пор пока не будет указанно, что загрузились с flesh-ки) создадим папку /home/rom/sdflash/ где будем хранить резервные копии, а в ней создадим папки usr var srv

mkdir -p /home/rom/sdflash/{usr,var,srv}

теперь скопируем в них соответствующие папки с flash-ки

sudo rsync -a /media/disk/usr/ /home/rom/sdflash/usr
sudo rsync -a /media/disk/srv/ /home/rom/sdflash/srv

Пользоватся rsync удобней т.к. копируются только изменения, это удобно когда производятся обнавления или установка новых компанентов.

Теперь удалим папки /usr и /srv с флешки (для экономии места на флешке, но можно этого и не делать) и создадим пустые папки /usr и /srv. Они нам нужны как точки монтирования для использования сжатой файловой системы squashfs которая будет быстрее работать с медленной флеш-памяти.

sudo rm -r /media/disk/usr
sudo rm -r /media/disk/srv
sudo mkdir -p /media/disk/{usr,srv}

Я бы еще почистил кэш скаченных пакетов системы apt (загрузившись с флешки):

sudo apt-get clean

или (что не правильно) удалив их из папки /media/disk/var/cache/apt/archives/ или скопировав в /home/rom/sdflash/var/cache/apt/archives/ :

sudo rm /media/disk/var/cache/apt/archives/*.deb

Так систему почистили, теперь займемся созданием образа сжатой файловой системы squashfs.

sudo mksquashfs  /home/rom/sdflash/usr /home/rom/sdflash/usr.sqfs
sudo mksquashfs  /home/rom/sdflash/srv /home/rom/sdflash/srv.sqfs

Скопируем образы на flash-ку

sudo mkdir /media/disk/usrsquash
sudo cp /home/rom/sdflash/*.sqfs /media/disk/usrsquash

Так же необходимо создать дерево папок для монтирования виртуальной файловой системы tmpfs (расположенной в оперативной памяти) всех директорий корневой системы (ну почти, /sys и /proc не требуются, т.к. они и так в памяти:)

sudo mkdir -p /media/disk/ramdisk/{bin,boot,etc,home,lib,media,mnt,opt,root,sbin,selinux,srv,tmp,usr,var}

Теперь изменим fstab создав два дополнительных используемых нами в зависимости от потребностей ro или rw

С защитой от записи fstab.ro:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sdc1 during installation
UUID=57223c86-c0a1-410b-a5f7-9e9c84cb48a5 /               reiserfs defaults,noatime,nodiratime,notail,relatime,ro 0       1

/usrsquash/usr.sqfs   /usr     squashfs ro,loop,nodev 0 0
/usrsquash/srv.sqfs   /srv     squashfs ro,loop,nodev 0 0

tmpfs      /ramdisk/bin                tmpfs        defaults      0 0
tmpfs      /ramdisk/boot                tmpfs        defaults      0 0
tmpfs      /ramdisk/etc                tmpfs        defaults      0 0
tmpfs      /ramdisk/home                tmpfs        defaults      0 0
tmpfs      /ramdisk/lib                tmpfs        defaults      0 0
tmpfs      /ramdisk/media                tmpfs        defaults      0 0
tmpfs      /ramdisk/mnt                tmpfs        defaults      0 0
tmpfs      /ramdisk/opt                tmpfs        defaults      0 0
tmpfs      /ramdisk/root                tmpfs        defaults      0 0
tmpfs      /ramdisk/sbin                tmpfs        defaults      0 0
tmpfs      /ramdisk/selinux                tmpfs        defaults      0 0
tmpfs      /ramdisk/srv                tmpfs        defaults      0 0
tmpfs      /ramdisk/tmp                tmpfs        defaults      0 0
tmpfs      /ramdisk/usr                tmpfs        defaults      0 0
tmpfs      /ramdisk/var                tmpfs        defaults      0 0

/ramdisk/bin    /bin                  aufs      nodev,noatime,dirs=/ramdisk/bin=rw:/bin=ro 0 0
/ramdisk/boot    /boot                  aufs      nodev,noatime,dirs=/ramdisk/boot=rw:/boot=ro 0 0
/ramdisk/etc    /etc                  aufs      nodev,noatime,dirs=/ramdisk/etc=rw:/etc=ro 0 0
/ramdisk/home    /home                  aufs      nodev,noatime,dirs=/ramdisk/home=rw:/home=ro 0 0
/ramdisk/lib    /lib                  aufs      nodev,noatime,dirs=/ramdisk/lib=rw:/lib=ro 0 0
/ramdisk/media    /media                  aufs      nodev,noatime,dirs=/ramdisk/media=rw:/media=ro 0 0
/ramdisk/mnt    /mnt                  aufs      nodev,noatime,dirs=/ramdisk/mnt=rw:/mnt=ro 0 0
/ramdisk/opt    /opt                  aufs      nodev,noatime,dirs=/ramdisk/opt=rw:/opt=ro 0 0
/ramdisk/root    /root                  aufs      nodev,noatime,dirs=/ramdisk/root=rw:/root=ro 0 0
/ramdisk/sbin    /sbin                  aufs      nodev,noatime,dirs=/ramdisk/sbin=rw:/sbin=ro 0 0
/ramdisk/selinux    /selinux                  aufs      nodev,noatime,dirs=/ramdisk/selinux=rw:/selinux=ro 0 0
/ramdisk/srv    /srv                  aufs      nodev,noatime,dirs=/ramdisk/srv=rw:/srv=ro 0 0
/ramdisk/tmp    /tmp                  aufs      nodev,noatime,dirs=/ramdisk/tmp=rw:/tmp=ro 0 0
/ramdisk/usr    /usr                  aufs      nodev,noatime,dirs=/ramdisk/usr=rw:/usr=ro 0 0
/ramdisk/var    /var                  aufs      nodev,noatime,dirs=/ramdisk/var=rw:/var=ro 0 0
/dev            /srv/schroot/sid/dev            auto bind 0 0
/proc           /srv/schroot/sid/proc           auto bind 0 0
/tmp/.ICE-unix  /srv/schroot/sid/tmp/.ICE-unix  auto bind 0 0
/tmp/.X11-unix  /srv/schroot/sid/tmp/.X11-unix  auto bind 0 0

Для возможности редактирования fstab.rw:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sdc1 during installation
UUID=57223c86-c0a1-410b-a5f7-9e9c84cb48a5 /               reiserfs defaults,noatime,nodiratime,notail,relatime 0       1
tmpfs      /tmp                    tmpfs        defaults      0 0
tmpfs      /var/tmp                tmpfs        defaults      0 0
tmpfs      /var/lock               tmpfs        defaults      0 0
tmpfs      /var/log                tmpfs        defaults      0 0
/dev            /srv/schroot/sid/dev            auto bind 0 0
/proc           /srv/schroot/sid/proc           auto bind 0 0
/tmp/.ICE-unix  /srv/schroot/sid/tmp/.ICE-unix  auto bind 0 0
/tmp/.X11-unix  /srv/schroot/sid/tmp/.X11-unix  auto bind 0 0

Теперь, что бы использовать флешку в режиме read only скопируем fstab.ro в место /etc/fstab на флешке, для того что бы перевести в режим записи, например для обнавления или изменения списка пакетов, необходимо восстановить на флешке папки /usr и /srv и скопировать файл fstab.rw в место fstab на флешке. Или использовать какой то компромисс, в зависимости от того что нам требуется, например можно разрешить на запись /home закомментировав строку «/ramdisk/home /home aufs nodev,noatime,dirs=/ramdisk/home=rw:/home=ro 0 0» и изменив ro на rw в строке монтирования корня «/». Команды все знакомы по аналогии выше, повторять не буду устал 🙂 После внесения изменений повторяем процедуру создания образов сжатых файловых систем, вот тут то мы и увидим могущество rsync.

Немного раскажу о aufs, это очень мощьная и гибкая система создания фиртуальных файловых систем на основе нескольких. Можно собрать несколько файловых систем в одну причем как в режиме read only так и с возможность записи. Например удобно собрать папки с фильмами с разных винтов в одну и расшарить по ftp. Тут мы использовали тот же принцип, только запись осуществлялась на виртуальную файловую систему tmpfs расположенную в памяти (размер можно задать в ручную ключ size= по умолчанию 50% от всей памяти). В общем мат. часть в man-ах и на просторах интернета.

Ссылки: https://help.ubuntu.com/community/AspireOne

5 комментариев to “Ubuntu на внешней флешке в режиме read only на примере Acer Aspire One A0751h”

  1. sergo:

    Установка Ubuntu на flash-ку.пытался поставить Ubuntu Remix ru с помощью проги UNetbootin но что то не так, не сохраняет изменения,по умолчанию англиш не переставить,а можно поподробней описать установку,(для чайников)

  2. rrv:

    Не надо никаких прог 🙂
    Просто ставьте как на обычный винт!

  3. tobrazo:

    после выполнения всех высшесказаных манипуляций ubuntu 11.04 не загрузилась вообще

  4. Kradllit:

    Приветствую! Спасибо за подробную инструкцию, только вроде все сделал по инструкции, а флешка не загружается. Можешь, пожалуйста на почту скинуть аську или скайп, пожалуйста? Почта моя в профиле..

  5. rrv:

    Странно, надо разбираться с папками, видимо произошли изменения. Этот эксперимент был произведен на Ubuntu 9.10. Но идея я думаю осталось рабочей. Удачи 🙂

Leave a Reply