Portál AbcLinuxu, 30. dubna 2025 09:04
Dnes si ukážeme, jak provozovat Raspbian z externího disku. Nebudu řešit jaké byste k tomu měli mít důvody, v mém případě byl často USB disk rychlejší jak SD karta a tak proč to nezkusit? Navíc se nemusíte bát o životnost karty, na kterou by mohl nějaký zlý proces pravidelně zapisovat data (logy, statistiky, uptimed,..).
Nejdříve bych ale rád vysvětlil, proč znovu píšu o RaspberryPi, když už tu jeden zápisek mám. Přiznávám se – RaspberryPi jsem nepoužíval jak by si zasloužilo. Původně několik měsíců běželo jako domácí server ke spokojenosti všech, až do úmrtí disku. Koupil jsem nový disk, zkoušel služby spustit znovu, ale narážel jsem na problémy u procesu Minidlna. Jednou za čas (řádově desítky hodin od spuštění) vytuhl a s ním i celé RaspberryPi, které ani neodpovídalo na ping a žilo si vlastním životem.
Neměl jsem připojený monitor a tak nevím co přesně se dělo – možná jen vypadla síťová karta, možná zpanikařil kernel, kdoví. Chybu jsem přisuzoval volbě inotify, díky které Minidlna samo pozná nové soubory na disku – po jejím vypnutí často fungovalo dobře. Bohužel po nějaké době začalo zlobit i s vypnutou volnou inotify. Nakonec jsem tedy přemigroval na původní sestavu s AMD Sempron, kde vše fungovalo vždy bez problémů. Krátce tomu tak bylo, ale poté se začaly pády projevovat i tam.
Asi po půl roce jsem se konečně dokopal k přechodu zpět na RaspberryPi. Tentokrát jsem vynechal Minidlna a malina dlouhou dobu věrně sloužila bez sebemenších problémů...a bez disku. A protože nedávno probíhalo malování pokoje (nutnost vše vystěhovat) a pár věcí se přesunulo, došlo i k přesunu tiskárny s RaspberryPi. Udělal jsem čistku, připojil disk a od včerejšího večera si RaspberryPi spokojeně chroupe s novou instalací Raspbianu
- USB disk
- SD karta (použil jsem 512MB, stačí i menší)
- RaspberryPi
- Obraz Raspbianu
- dd, parted, mount, rsync + software, který uznáte za vhodný
1) Stáhneme obraz Raspbianu. Já stahoval přes wget ze stránky http://www.linuxsystems.it/raspbian-wheezy-armhf-raspberry-pi-minimal-image/, kde lze stáhnout oškubaný Raspbian vhodný pro provoz domácího serveru.
2) Nevím proč tomu tak je, ale RaspberryPi se nelíbí první oddíl a odmítá bootovat. Řešením je stáhnout oficiální Raspbian například odtud http://www.raspberrypi.org/downloads a vzít si první oddíl z něj. A ne, opravdu netuším proč tomu tak je.
3) Připojíme si USB disk a naformátujeme ho podle našeho uvážení. Já vytvářím dva oddíly, jeden pro systém a uživatelská data (/), druhý pro multimediální soubory (/data). K formátování používám Gparted. Počet oddílů, jejich souborové systémy a další drobnosti jsou na vás a podpoře kernelu, já používám ext4.
4) Začneme obrazem osekaného Debianu, který si rozbalíme (archiv 7z, pro rozbalení používám grafický file-roller). Spustíme program parted s právy roota, jako parametr mu předáme cestu k obrazu a příkazy, které má provést:
sudo parted raspbian_wheezy_20130923.img -s unit B printTímto vypíšeme tabulku oddílů s jednotkami v bajtech. První oddíl potřebuje RaspberryPi pro samotné nastartování, bývá formátován jako FAT16 nebo FAT32. Dále je zde oddíl, který obsahuje kompletní systém (ext4) a případně třetí oddíl jako swap. Nás zajímá jen sloupec Start, který udává offset jednotlivých oddílů. Konkrétně ext4 oddíl se systémem (druhý) měl offset 53477376B.
5) Vytvoříme si nějaký adresář, do kterého budeme postupně připojovat jednotlivé oddíly. Já vytvářím /media/rpi, ale můžete si jej vytvořit takřka kdekoli. Připojíme USB disk, přimountujeme jej (můj systém automaticky přimountoval do /media/Raspbian) a začneme do něj sypat data:
(Pozor, u příkazu rsync musí být na koncích cest lomítka!)
sudo mkdir /media/rpiTímto jsme překopírovali druhý oddíl ze staženého obrazu na pevný disk. Disk můžeme odpojit, dále už ho nebudeme potřebovat a zbytek odladíme přes SSH
sudo mount -o loop,ro,offset=53477376 raspbian_wheezy_20130923.img /media/rpi/
sudo rsync -a /media/rpi/ /media/Raspbian/
sudo umount /media/rpi
6) Připojíme SD kartu (můj systém přimountoval do /media/C1FC-1F0A) a vytvoříme na ní jeden oddíl FAT16 nebo FAT32 s příznakem lba. Rozbalíme si obraz standardního Raspbianu (o mnoho větší), obdobným postupem opět zjistíme offset, připojíme a překopírujeme, tentokrát ale první oddíl:
sudo parted 2013-12-20-wheezy-raspbian.img -s unit B printRsync zahlásí chybu, protože nedokáže přenést všechna unixová práva na souborový systém FAT, to nám ale nevadí. Mělo by stačit i běžné cp či přetažení souborů ve vašem oblíbeném programu, ale když už jsem jednou použil rsync...snad mi to odpustíte
sudo mount -o loop,ro,offset=4194304 raspbian_wheezy_20130923.img /media/rpi/
sudo rsync -a /media/rpi/ /media/C1FC-1F0A/
sudo umount /media/rpi
Nyní je čas na malý trik. V textovém editoru otevřeme soubor cmdline.txt uložený na SD kartě a upravíme příkaz. Konkrétně místo root=/dev/mmcblk0p2 napíšeme root=/dev/sda1 a uložíme. Tímto jsme změnili oddíl, kde bude RaspberryPi hledat systém. Ještě po sobě uklidíme....
sudo rmdir /media/rpi...a je nejvyšší čas zapojit vše dohromady a otestovat, co v sobě RaspberryPi skrývá!
Pokud po spuštění nevidíte obraz na monitoru a krátce bliká jedna LED (nevím která, jsou to asi 4 bliknutí), bude zřejmě problém v SD kartě. Pokud si dobře vzpomínám, tak musí být odemčená a musí na ní být rozbaleny soubory z oficiálního obrazu distribuce Raspbian. Opravdu nevím, proč první oddíl z osekané verze nefunguje. Mimochodem, přihlašujeme se jako uživatel root a naše heslo je raspberry. Nezapomeňte, že je defaultně nastavena QWERTY klávesnice. Všechny příkazy ve zbytku zápisku spouštím jako root.
První příkaz který zadávám je tento:
echo -e 'APT::Install-Recommends "0";\nAPT::Install-Suggests "0";' > /etc/apt/apt.confZajistí, že se při instalaci nainstaluje opravdu jen to, co je potřeba a nic navíc. Je samozřejmě jen na vás, co chcete na serveru provozovat. A nyní přehled nejvážnějších problémů a jejich řešení – zatím jsem našel jen dva:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "cs_CZ.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
Tento problém jsem snad vyřešil, i když sám ani pořádně nevím jak. Předem se omlouvám za všechny zbytečnosti v následujícím postupu:
apt-get install console-setup console-data locales(zaškrtnout jen cs_CZ.UTF-8)
dpkg-reconfigure locales
dpkg-reconfigure console-dataMapa klávesnice se musí vybírat z kompletního seznamu, při výběru ze „seznamu podle architektury“ jsem se nedostal ke konci. Pokud bude problém přetrvávat, mohl by pomoci příkaz locale-gen.
dpkg-reconfigure console-setup
Pokud používáte příkaz sudo, mohli jste narazit na následující hlášku:
sudo: unable to resolve host raspberry-piToto je jen taková drobnost, stačí použít oblíbený textový editor (v mém případě JED) a dopsat do souboru /etc/hosts na první řádek raspberry-pi. Výsledek tedy bude:
127.0.0.1 localhost raspberry-pi
Hurá, nejotravnějších hlášek jsme se zbavili. Co dál? Ještě nastavíme pevnou IP adresu:
V oblíbeném editoru otevřeme soubor /etc/network/interfaces, jeho obsah by měl vypadat nějak takto:
auto loMy jej upravíme takto:
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
auto loMá IP adresa tedy bude 192.168.1.100, brána 192.168.1.1 a maska 255.255.255.0. Poté stačí jako root spustit příkaz:
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
ifdown eth0 && ifup eth0a vše by mělo fungovat. IP adresy samozřejmě nastavíte podle vlastní sítě
Příště se pochlubím, co mi na malině běží, pokusím se popsat proč je všechno tak jak je a možná se dozvíte i něco nového.
Tiskni
Sdílej:
Na to existuje jednoduchá odpověď - doteď jsem kpartx vůbec neznal Problém bude zřejmě v tom, že jsem hledal "how to mount....". Tak snad příště a díky za tip
To jsou mi věci...tak příště
Když jsem to před rokem sypal po bitech na flashku (dd if=.. of=..), tak to bez problému jelo, když ale vytvořím oddíl ručně a nakopíruju tam soubory, tak to nefunguje. Možná něco přehlížím, možná to autor nějak divně formátoval, netuším. Když to udělám se soubory z oficiálního obrazu, tak to bootuje na první pokus.
Koukal jsem, že se u obojího trochu liší soubor cmdline.txt, ale těch odlišností tam bude určitě víc
Přesně tak to vidím i já. boot i lba jsem nastavoval, ale nic se nezměnilo. Třeba na to někdo příjde a osvětlí nám v čem je problém
fdisk -l /dev/sde Disk /dev/sde: 2 030 MB, 2 030 043 136 bajtů, 3 964 928 sektorů Jednotky = sektorů po 1 * 512 = 512 bajtech Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů Typ popisu disku: dos Identifikátor disku: 0x00047c7a Zařízení Zavádět Začátek Konec Bloky Id Systém /dev/sde1 8192 122879 57344 c W95 FAT32 (LBA) /dev/sde2 122880 3964927 1921024 83 LinuxJejich image
fdisk -l raspbian_wheezy_20130923.img Disk raspbian_wheezy_20130923.img: 996 MB, 996 147 200 bajtů, 1 945 600 sektorů Jednotky = sektorů po 1 * 512 = 512 bajtech Velikost sektoru (logického/fyzického): 512 bajtů / 512 bajtů Velikost I/O (minimální/optimální): 512 bajtů / 512 bajtů Typ popisu disku: dos Identifikátor disku: 0x00027aa3 Zařízení Zavádět Začátek Konec Bloky Id Systém raspbian_wheezy_20130923.img1 2048 104447 51200 b W95 FAT32 raspbian_wheezy_20130923.img2 104448 1742847 819200 83 Linux raspbian_wheezy_20130923.img3 1742848 1945599 101376 82 Linux swap / Solaris
Teď se musím přiznat že netuším, co tím bylo myšleno, rozdíl vidím jen u lba, velikostí...a začátku prvního oddílu.
Na druhou stranu oddíl vytvářím pořád stejně, liší se jen to, co tam nasypu za soubory - buď z prvního obrazu (nebootuje), nebo z druhýho (bootuje). Zkoušel jsem to s i bez lba a pořád mám pocit, že chyba bude někde v souborech....ale shazovat print server a pobíhat s SD kartou sem a tam se mi moc nechce.
Ono taky qemu != RaspberryPi, ale chápu co tím bylo myšleno. Obojí se může lehce lišit a co zlobí na jednom může jít na druhém bez jakýchkoli problémů.
Nejlepší by bylo otestovat to fyzicky na malině, ale když už tak hezky běží, tak se mi ji opravdu nechce vypínat. Asi před rokem jsem se s tím trápil možná dva dny a zkoušel všechno co mě napadlo, ale ne - vytvořit oddíl a nasypat tam soubory stačí jen u oficiálního obrazu.
Teď se musím přiznat že netuším, co tím bylo myšleno, rozdíl vidím jen u lba, velikostí...a začátku prvního oddílu.To by mohlo být ono, zatímco Linux nemá problém se začátkem oddílu na libovolném místě, tak DOS a některé bootloadery potřebují, aby byl začátek partition zarovnaný na cylindr, zatímco třeba Windows Vista+ chtějí zarovnání na celý megabyte. Stačí zagooglit výraz Partition Alignment ...
S debootstrap jsem pokud vím nikdy nepracoval a tak nemám moc ponětí co by to obnášelo a jak to udělat.
deboostrap
se toho musí udělat ještě o něco více než v tomto návodu.
Osobně bych ocenil, kdyby v Raspbianu nebyly ty grafické aplikace.
Právě proto používám ten osekaný obraz. Osekávat to ručně jsem sice zkoušel, ale nedopadlo to dobře
Samozřejmě existuje jak verze armel, tak i armhf
armel je pro nižší a není problém balíčky prohazovat, ale armhf Debianu je naopak pro vyšší a RaspberryPi se s nima nerozjede (co jsem někde zaslech)
arhmhf
je pro ARMv7 a RPi je jen ARMv6.
mereni teploty trebaNo např. jen pro měření teploty netřeba kupovat žádnou další periferii ani další IO/RS232/RS převodník, protože čidla se dají připojit přímo k RPI na jeho GPIO. Čidla se používají klasická I2C tedy nějaký Dallas DS18XX.
tak 2000 kcNo samotné RPI se dá pořidit s 512MB někde kolem 1400,- krabička se vleze do zhruba 300,-, doporučoval bych nějaký zdroj 5V/1A, který by napájel RPI přes GPIO (klidně ubastlený zdroj, ale musí být v provedení pro 1A). Teplotní čidla stojí myslím někde kolem 55 za kus.
samotné RPI se dá pořidit s 512MB někde kolem 1400,-
Kdo je z Prahy, může zkusit BrmLab, údajně se tam daly koupit i za 800,-
nějaký zdroj 5V/1A
Já nějakou dobu používal nabíječku od mobilu a krásný 5V/2A zdroj, který jsem koupil mám pocit v Penny za 200Kč (přibaleno u 5V/2A zdroje do autozapalovače). Teď používám normální ATX zdroj, kterým kromě RaspberryPi tahám i 3.5" disk. Původně jsem chtěl použít zdroj z USB rámečku, ale ten se s 1TB diskem u RaspberryPi silně zahříval (jiné disky bez problémů) a nechtěl jsem ho zničit.
s 1TB diskemno 1TB disky jsou známé svou žravostí při rozběhu a při zátěži.
To naprosto chápu, v teoretické rovině jsem se domácí automatizací a zálohováním napájení taky zabýval. Když na chvíli padne print server, tak se nic nestane, ale když se zblázní topení a otevírání oken, to už je jinačí kafe
Ohledně zálohování bych to řešil 12V baterkou, zbastlenou nabíječkou (sakra, já se k tomu zase nedokopal!) a spínanými měniči 12V a 5V za ní.
Tohle je nějaký nový Seagate, údajně s nižší spotřebou a tak podobně. Ale dokud mu přes hdparm nevypnu úsporné režimy, tak nemá problém při zapisování parkovat hlavičky, to je opravdu bezva funkce -.-
12V baterkouano 12V baterka klidně ta co se používá do UPS je na to v pohodě a v podstatě jde jen o to uchladit ty stabilizátory, ale 7812/7805 se dělají i v 3A provedení a když jsou dobře chlazené tak toho vydrží dostatek. Neřešil bych zálohování -> napájel bych to natvrdo z 7805/7812 z baterky, která by byla neustále na nabíječce. Vtip je v tom, že když ti cvakne relé při výpadku tak si myslím, že by to RPi i disk asi neudejchalo, ale v tomto případě by RPi nic nepoznalo a disk by běžel stále dál (princip on-line UPS).
toto přes 7805Proč, 7805 dá stabilních 5V z baterky a není problém něco podobného s nějakým 2N udělat pro 12V.
12V se použije přímo, disku je upřímně jednoDisku není upřímně jedno zda jede na 10V nebo na 12V, disk chce už od minulosti svoje tedy +- 10%. A setkal jsem se s tím, že disk měl na 11V problémy.
LM2576-5.0je pro toto zálohování až moc zbytečně složité. V jednoduchosti je síla. měl jsem LM2576-5.0 na nějakém měniči pro kontrolu otvírání dveří a byls tím celkem problém.
sehnat reléProboha proč tam cpát relé, jak jsem již psal copak není zcela jednodušší udělat něco na způsob on-line UPS, kdy je celý systém napájen z baterky přes nějaký měnič/IO apod.?
Řešit toto přes 7805 je zvěrstvo!!!I s těma dvě lithiovkama v sérii, jak psal původně? Tam mi to přijde v pohodě - máš to z nějakých 7 V na 5 V. Spínaný zdroj podle mě o moc vyšší účinnost mít nebude.
Klidně se dá použít po malé úpravě toto.Z toho zdroje poleze tak 15 voltů. Jak dlouho se asi bude nabíjet tímto napětím autobaterka přes odpor 220 Ω? :) A nebo se naopak bude přebíjet, což je taky výhra…
Přesně tak jsem to myslel, hezky za sebou
Kdo je z Prahy, může zkusit BrmLab, údajně se tam daly koupit i za 800,-Podražily, momentálně stojí litr (nákupka z Farnellu 940 včetně daní a poštovného). Ale zkusil bych Raspishop, tam je za 900, ale pro jistotu zase není skladem.
Já nějakou dobu používal nabíječku od mobilu a krásný 5V/2A zdroj, který jsem koupil mám pocit v Penny za 200Kč (přibaleno u 5V/2A zdroje do autozapalovače).Hlavně pokud tam máte žravé USB zařízení (SDR, GPRS, externí disk), tak to normálně ještě jedním káblem připojte napřímo. V plošňáku to potká tenké traces a polyfuse.
Nemohl by si jen kratce sdelit. co pro zacatel koupit.Raspberry
Chtel bych s tim doma delat pres sit zvonky a otevirani dveri a podobne volovinyTo se zbastlí ze základní bižuterie (tranzistory, relé…).
mereni teploty trebaChceš nějaký I2C teploměr, konkrétní nevím.
tedy jaky zakladni system, jestli si koupt tu kartu uz s tim debianem a pod.Karty se systémem se prodávají asi tak 4x dráž. To je docela dost za jedno dd, že? :)
I2C teploměruž jsem mu odpovídal na to, že není problém připojit DS18XXX přes I2C přímo na GPIO (akorát se musí laborovat s tím odporem,já jsem zkoušel 3 čidla z toho 2 na 5m kusu coaxu a nějak to šlo).
tak 4x drážvšak jsem mu psal, že kartu s 2GB/1GB jistě má někde doma a udělat dd je taky v pohodě. No v GM tuším mají kartu za něco kolem 400.- což není zase tak špatná cena na to, že je to na 4GB.
základní bižuterieon měl na mysli ten PiFace třeba tento piface
Ha, ten už jsem taky někde viděl
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.