Jakiś czas temu zrobiłem sobie z mojego odtwarzacza mp3 (WIWA made in china) który działa również jako pendrive 1GB przenośną instalację Debiana Lenny ze środowiskiem GNOME (w minimalnej postaci dosyć w przypadku 1GB).
W ostatnim czasie używam go coraz cześciej (czy to do testowania cudzego sprzętu, łamania wifi, używania komputerów w kafejkach, czy na uczelni gdzie nie mam konta). Naprawdę wygodna sprawa, szczególnie że na moim pendrivie dane mam zaszyfrowane (choć nie chroni to przed wszystkimi możliwymi atakami, jestem bezpieczny w razie zgubienia pendriva, gdzie mam różne hasła, klucze ssh czy osobiste informacje, historię przeglądania).
Postaram opisać sie jak skonfigurować taki pendrive.
Będzięmy potrzebowali pendrive o rozmiarze minimum 1GB. Może to być player mp3, ale ponieważ potrzebują one do odtwarzania mp3 partycji FAT, z reguły uda się wysupłać tylko 100MB na pliki mp3 na partycji FAT. W/g mnie bardzo wygodnie będzie pracować na pendrivie 4GB (tanie są już po 60zł, a szybkie w rodzaju Cruiser Voyager GT, OCZ Really2 czy OCZ AVT Turbo trochę drożej. ten ostatni super, ale trudno dostepny). Na 4GB uda się znaleść około 800-900MB na partycje FAT gdzie umiścić możemy dane dla głupich Windowsów czy odtwarzaczy MP3, a rozmiar pozwoli nam wpakować jeden obraz ISO (przydatne przy instalacji systemów na dysku). Oczywiście czym więcej tym lepiej. Przy 1GB zdarza mi sie kombinować (np. problem z aktualizacjami bo sie nie mieści wszystko, więc trzeba robić etapami korzystając z /tmp albo sshfs i innego komputera, albo wyrzucanie ręcznie plików z /usr/share/doc/ czy kompresja słowanika języka polskiego w /usr/share/dict )
Na początku musimy przygotować partycję oraz sam dysk. Ponieważ będziemy używać szyfrowania (naprawdę warto, a spadek wydajności jest pomijalny) najlepiej robić to na świeżo kupionym pendrivie. Jeśli pendrive był już przez Ciebie używany, to niestety nie istnieją dobre sposoby na upewnienie się że dane zostaną usuniętę, a to m.in. z powodu sprzętowych mechanizmu wearliving chroniących przed zniszczeniem pamięci flash w przypadku częstych nadpisań. W razie czego warto zrobić
badblocks -vv -w /dev/sdX # sprawdź 4 razy czy dysk jest sprawny, niszczy dane
wipe /dev/sdX # "wyczyść" dysk przy pomocy 30 wzorców do niszczenia
Ostatnie może potrwać wieki (kilka dni).
Po przygotowaniu sprzetowym dysku, warto skopiować obraz pendriva do pliku na dysk, wykonanie wszystkiego z emulatora qemu a potem z powrotem wgranie na pendriva. Tak jest znacznie szybciej, ponieważ pendrive jest naprawdę wolny, a w dodatku używana jest często operacja sync, a to zabija wydajność podczas instalacji (ja się niedoczekałem).
dd if=/dev/sdX of=./obraz_pendrive.img
Potrwa to jakieś 2-3 godzinki, jak masz większy niż 4GB pendrive możesz pokombinować.
Następnie odpalamy albo instalację przy pomocy zwykłego instalatora z cd/dvd czy co tam chcesz (ja lubię CD-bussinescard ponieważ jest mała i ściąga odrazu najświeższe pakiety) przy pomocy qemu, albo przy pomocy debootstrap. To ostatnie jest o tyle nie wygodne że będziesz musiał się trochę znać na konfiguracji LVM oraz szyfrowania.
qemu -hda ./obraz_pendrive.img -cdrom ./debian-500-CD-bussinescard.iso -m 256
Jak ktoś jest cierpliwy może zamiast obrazu .img stosować odrazu /dev/sdX, albo jak ma pod ręką komputer którego może nie używać przez powiedzmy jeden-dwa dni to zrobić normalna ludzką instalację na komputerze. Ja wolę przez qemu, szybko i nie trzeba sie podnosić z krzesła.
Wybieramy instalacje eksperta w języku Polskim.
Partycje:
| Partycja | Cel | 1GB | 4GB |
| sdX1 (vfat) | pliki dla playera MP3, czy Windowsa | 100MB | 900MB |
| sdX2 (ext2) | /boot z jądrem, grubem, initrd | 25MB | 60MB |
| sdX3 (luks) | LVM z / (ext2) | 810MB | 3000MB |
Mały jest sens robienia katalogu /home na oddzielnej partycji czy robienia partycji wymiany swap. Można spróbować zrobić partycje ext3, ale zalecałbym wyłączyć journaling (ale chyba ext3 tego nie supportuje), ponieważ journaling zabijć może pendriva (i jest powolne przez sync), ale ext3 jest troche szybszy (np. dzięki dir_index). Jak ktos ma dużo zaparcia to kompilacja nowszego jądra (2.9.29 lub .30) i odpalenie ext4 bez journalingu (to już jest wspierane), mogła by dużo przynieść. JFFS nie mam pojęcia jak skonfigurować. Dlatego na początek, ext2, może ext4+nojournal. W każdym wypadku warto włączyć opcje noatime oraz user_xattr zapewne. (A na partycji vfat dodatkowo nodev,nosuid)
Po skonfigurowaniu i zainstalowaniu systemu bazowego (nic więcej, ponieważ zainstaluje się nam za dużo softu), musimy przedewszystkim zmienić fstab i crypttab aby uzywały UUIDów. Niestety są pewne błędy w Lennym związane, ale da się je obejść.
proc /proc proc defaults 0 0
# see bug #287879 in Ubuntu
/dev/disk/by-uuid/0a678c87-e490-4f74-90e6-9c175102cd96 / ext2 noatime,user_xattr,errors=remount-ro 0 1
UUID=eadd15af-4c80-45ad-b676-ccccf51b83f3 /boot ext2 noatime,ro 0 2
/dev/cdrom /media/cdrom0 udf,iso9660 user,noauto 0 0
UUID=8B4F-24B3 /mnt/wbpen1fat vfat rw,nosuid,nodev,uid=1000,gid=100,noatime,fmask=0133,dmask=0022,iocharset=iso8859-2 0 0
tmpfs /tmp tmpfs defaults 0 0
Prawidłowe wartości UUID można znaleść najszybciej w katalogu /dev/disk/by-uuid/
Tu narazie są pewne wskazówki. Zredaguję to dokładniej.
# dobre prendrive; OCZ Really2, albo costam Voyager
mkfs.ext2 -L WB_PEN1_EXT2 /dev/sdc2_jakis
mount /dev/sdc2_jakis /mnt/pendrive
# debootstrap i insalacje najlepiej odpalic na dysku,
# a dopiero potem przegrac wszystko
deboostrap lenny /mnt/pendrive
mount --bind /dev/ /media/WB_PEN1_EXT2/dev/
chroot /mnt/pendrive
mount /proc
apt-get clean
echo "deb http://ftp.pl.debian.org/debian lenny main contrib non-free" > /etc/apt/sources.list
apt-get update
apt-get install locales # d-i: nie potrzebne, instalowany domyslnie
export LC_ALL=pl_PL.UTF-8 # d-i: nie potrzebne
export LANG=pl_PL.UTF-8 # d-i: nie potrzebne
apt-get install localepurge deborphan # do usuwania zbędnych śmieci
localepurge
# to sie przydaje w apt.conf
# moze zmniejszyszc i ulatwic instalacje gnome (z 160MB do 60MB)
APT::Install-Recommends "false";
APT::Install-Suggests "false";
# jak ktos chce, moze zrobic nastepujące, aby pytał się dokładniej
dpkg-reconfigure debconf # i zmienic na low
apt-get install bash-completion # d-i: nie potrzebne
. /etc/bash_completion
apt-get install dash mc sshfs
apt-get install linux-image-2.6.26-1-686 unionfs-modules-2.6.26-1-686 squashfs-modules-2.6.26-1-686 # d-i: nie potrzebne
# trzeba wybrac "No" w debconf po drodze
apt-get install unionfs-tools squashfs-tools grub live-initrams # d-i: nie potrzebne
apt-get install mc bzip2 unzip xpdf links file less openssh-client # d-i: nie potrzebne file, less, openssh-client
# generalnie w/g uznania
dpkg --purge vim-tiny vim-common tasksel tasksel-data ed nano
dpkg --purge liblzo2-2 libgnutls13 libconsole libsigc++-1.2-5c2 libldap-2.3-0 man-db
dpkg --purge info manpages dgroff-base libsasl2 cyrus-sasl2-doc
dpkg --purge aptitude libsigc++-2.0-0c2a libcwidget3
dpkg --purge libept0 libttf2 libxapian15 perl-doc
# 78MB
apt-get install xserver-xorg-video-vesa xserver-xorg-video-nv xserver-xorg-input-wacom xserver-xorg-input-all- xbase-clients libgl1-mesa-dri mesa-utils xfonts-biznet-75dpi xfonts-base
# 15 MB
apt-get install wireless-tools
apt-get install lvm2 pciutils attr sshfs nfs-common ntfs-3g reiserfsprogs reiser4progs xfsprogs jfsutils ntfsprogs dosfstools rdesktop xvnc4viewer # d-i: nie potrzeba: pciutils, nfs-common
apt-get install nmap tcpdump telnet # d-i: nie potrzeba: telnet
# w tym miejscu, mozemy sobie przeniesci /var/cache/apt/archives na jakis komputer w sieci (np. po sshfs), co ulatwia i przyspiesza zabawe
# mozna to zrobic wczesniej jak ktos chce, lub chce podmontowac cache / pool przez nfs, czy co tam
# oprocz przyszpieszania procesu, oszczedza to zywotnosc pendriva
# jak mamy duzo ramu to zrobić to w /tmp (w tmpfs), będziemy musieli zrobić apt-get update co reboot, ale śmiga.
# 70 MB (normalnie 160MB, localepurge usuwa 46 MB dokumentacji!, lacznie 24MB)
apt-get install epiphany-browser aspell-pl gamin gnome-keyring
# +30MB
apt-get install gdm mplayer netselect fping # uwaga instalacja gdm jest niebezpieczna w qemu (bedzie problem ze zmienianiem konsol)
# +100MB
apt-get install gnome-panel gnome-keyring gnome-keyring-manager nautilus metacity
# +84MB
apt-get install alsa-utils alsa-base gnome-terminal rxvt-unicode-lite tcsh gnome-themes gnome-applets gnome-netstatus-applet cpufreqd lm-sensors gnome-system-monitor alsa-oss
apt-get install ca-certificates empathy claws-mail lastfm gedit evince openoffice.org-impress openoffice-writer
apt-get install psi libqca2-plugin-gnupg libqca2-plugin-ossl
apt-get install xserver-xephyr
apt-get install gqview
apt-get install xserver-xorg-video-{intel,nv,vesa}
apt-get install alsa-oss alsa-base
# sieć
apt-get install network-manager-gnome network-manager-openvpn-gnome gnome-network-admin
apt-get install wireshark aircrack-ng wpasupplicant wodim
apt-get install ipw2200-firmware madwifi-tools
apt-get install ttf-dejavu msttcorefonts ttf-liberation xfonts-biznet-75dpi
apt-get install ntpdate # przydaje sie jak podlaczym sie do maszyny z windowsem
# instalcja innych debianów
apt-get install debootstrap
# z non-free / contrib. Z flasha można zrezygnować, niestety gnash jeszcze średnio działa
apt-get install unrar flashplugin-nonfree
# 217MB
apt-get install sun-java6-jre
apt-get clean
# d-i: nie potrzebne
echo "movax-pen1" > /etc/hostname # d-i: nie potrzebne
# d-i: nie potrzebne
cat >>/etc/network/interfaces <<-EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOF
# d-i: nie potrzebne
cat >>/etc/fstab <<-EOF
proc /proc proc defaults 0 0
unionfs / unionfs rw,noatime 0 0
LABEL=WB_PAN1_EXT2 /boot ext2 rw,noatime 0 0
tmpfs /tmp tmpfs rw 0 0
EOF
echo > /etc/motd.tail
apt-get --purege remove cron
# wylaczyc atd i cron
# wylaczyc sysklog log
# eydtowac rzeczy w /etc/default
# doinstalowac zfs-fuse
# zmienic /etc/fstab z sztywnych urzadzen na UUID lub LABEL, lub /dev/disk/by-uuid/ (lepiej to ostatnie)
# poddodawac labele przy pomocy e2label
# zmienic /etc/crypttab na /dev/disk/by-uuid, nazwe zmienic na UUID rozszyfrowany
# zmienic /boot/grub/menu.lst na UUID= (dodac rowniez vga=791)
cdn
Dyskusja