SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Kolega bigos zadał bardzo ciekwe pytanie odnośnie bezpiecznego użytkowania polecenia dd. Osoby często nagrywające obrazy systemów na różnych nośnikach są bardziej narażeni na przypadkowe wymazanie zawartości dysku. Przyznam się szczerze, że sam padłem ofiarą własnej nieuwagi podczas "wypalania" obrazu na nośniku SD i to nie raz.

Naturalnie nic nie zastąpi ostrożności, ale to tylko kwestia czasu, kiedy spotka to również Ciebie. Zastanawiając się nad tym problemem, wpadłem na pewne rozwiązanie filtrowania niebezpiecznych parametrów. Założenie jest proste - utworzyć skrypt bash o nazwie dd o odpowiedniej zawartości, a domyślne polecenie dd przemianować na ddunsafe.

  1. ls -o /bin/dd*
  1. -rwxr-xr-x 1 root   284 Jun 29 22:18 /bin/dd
  2. -rwxr-xr-x 1 root 56880 Feb 27  2013 /bin/ddunsafe

Sktypt dd przed wykonaniem polecenia zadba o to, abyśmy nie popełnili drugi raz gafy:

  1. #!/bin/bash
  2.  
  3. dennyArgs=("^of=/dev/sda$" "^of=/dev/sda1$")
  4.  
  5. for ARG in "$@"
  6. do
  7.     for dennyArg in ${dennyArgs[*]}
  8.     do
  9.     if [ "$(echo "$ARG" | egrep ${dennyArg})" ]
  10.     then
  11.         echo "OPS! Parametr ${dennyArg} zablokowany!"
  12.         exit -1
  13.     fi
  14.     done
  15. done
  16.  
  17. ddunsafe "$@"

Do tablicy dennyArgs, możemy dopisać chronione dyski i partycje. Próba dostępu do chronionengo nośnika zakończy się niepowodzeniem i wyświetleniem komunikatu.

  1. dd id=/dev/zero of=/dev/sda1
  1. OPS! Parametr ^of=/dev/sda1$ zablokowany!

Reklama

Po kilku miesiącach gorączkowego wyczekiwania, na platformie Steam pojawił się w końcu XCOM: Enemy Unknown dla Linuksa. Tak jak się spodziewano - dostępna jest zarówno wersja podstawowa, jaki i wszystkie obecne dodatki DLC oraz większy "Enemy Within".

Ogromnie cieszy dostępność zarówno wersji 32-bitowej oraz 64-bitowej. Gra obecnie dostępna jest jedynie w wersji 64-bitowej. Osobiście jestem wielkim fanem tej gry, a z dodatkiem "Enemy Within" specjalnie czekałem na wersję dla pingwina!

Tak więc kochani wybaczcie, ale Ziemia sama się nie uratuje :)

Przez moje łapska przewinęło się już kilka płytek opartych o układ SoC Allwinner A10/A20, ale tym razem, mam dla Was prawdziwego smoka - CubieTruck lub jak kto woli Cubieboard3. Dzięki ponownej uprzejmości sklepu ArduinoSolutions mam okazję przyjrzeć się mu z bliska.

CubieTruck zapakowany jest w solidne kartonowe pudełko, które zawiera płytkę jak i niezbędne akcesoria. Znajdziemy w nim kabel USB OTG, przyklejany radiator, kabel SATA, akrylowe plexi, zestaw miedzianych kołków dystansowych oraz przejściówkę zasilającą DC«»USB.

CubieTruck wyposażony jest dwurdzeniowy układ AllWinnerTech A20 (ARM® Cortex™-A7) z układem graficznym Mali400 MP2 wspierającym OpenGL ES 2.0. Do dyspozycji dostajemy 2GB pamięci RAM DDR3 taktowaną częstotliwością 480MHz. W komunikacji ze światem pomoże nam port Ethernet 10M/100M/1G oraz wbudowana karta WiFi oraz Bluetooth z wewnętrzną anteną. Płytka została także wyposażona w port SATA 2.0 oraz linię zasilania 5V dla dysków 2.5". Możliwe jest również podłączenie dysku 3.5", jednak będziemy potrzebowali oddzielnego źródła zasilania 12V.

Jeśli chodzi o gniazda to znajdziemy tutaj 2x USB, 1x OTG (do wypalania wbudowanej pamięci NAND o rozmiarze 8GB) oraz optyczne gniazdo SDPIF. Bardzo cieszy również odbiornik podczerwieni IR oraz gniazdo słuchawkowe. Na płytce umieszczono również baterię litową do podtrzymywania zegara RTC.

Robotycy również znajdą coś dla siebie. Na 54 pinach dwóch portów rozszerzeń dostępne są takie szyny jak: I2S, I2C, SPI, CVBS, LRADC, UART, PS2, PWM, TS/CSI, IRDA oraz TVIN. Wszystko to na płytce o rozmiarze 11 cm x 8 cm.

Montaż

Zlożenie całości zajmuje niewiele czasu i jest kompletnie bezproblemowe. Do jednej z akrylowych plexi możemy przymocować dysk twardy i umieścić go na samym spodzie konstrukcji. Jest to naprawdę fajne rozwiązanie, ponieważ nie musimy się martwić, że coś nam wysunie i zniszczy podczas transportu i użytkowania.

Na koniec pozostaje nam już tylko przymocować CubieTruck, założyć akrylową osłonę oraz podłąćzyć dysk twardy.

Instalacja programu LiveSuit

Aby zainstalować system w pamięci NAND z poziomu Linuksa będziemy potrzebowali programu LiveSuit, który możemy pobrać stąd (zarówno w wersji 32-bitowej jak i 64-bitowej). Jeśli korzystacie z Ubuntu/Debiana wystarczy uruchomić program instalacyjny LiveSuit.run, który skompiluje odpowiedni moduł jądra oraz wgra program do katalogu domowego ~/LiveSuit.

  1. # chmod +x LiveSuit.run
  2. # sudo LiveSuit.run

Jeśli korzystacie natomiast z dystrybucji, której nie wspiera instalator (np. Slackware), należy wypakować zawartość i skompilować moduł jądra samodzielnie:

  1. # tail -n +60 LiveSuit.run > LiveSuit.tar.bz2
  2. # tar xjvf LiveSuit.tar.bz2
  3. # cd LiveSuit
  4. # rpm2cpio awdev-0.5-1dkms.noarch.rpm | cpio -idmv
  5. # cd usr/src/awdev-0.4
  6. # make

Otrzymamy w ten sposób plik awusb.ko, który kopiujemy do katalogu modułów jądra i wydajemy polecenie depmod

  1. # sudo cp awusb.ko /lib/modules/*wersja*jadra*/misc/
  2. # sudo depmod
  3. # sudo modprobe awsusb

Instalacja systemu

Do wyboru mamy sporą ilość dystrybucji Linuksa - ArchLinux, Cubian, Debian, Fedora, Lubuntu oraz Ubuntu. Wszystko co musimy zrobić to pobrać interesujący nas obraz, wypakować oraz wgrać go pamięci NAND za pomocą programu LiveSuit. W tym celu uruchamiamy LiveSuit, wybieramy rozpakowany obraz w formacie img i podłączamy CubieBoard poprzez port USB OTG trzymając jednocześnie przycisk FEL. Po podłączeniu zasilania, LiveSuite powinien zacząć wgrywać obraz do pamięci NAND.

Uruchomienie systemu

Po kilku chwilach uruchamia się wybrany przez nas system. Ja na początek wybrałem Ubuntu Desktop.

Na pierwszy "rzut" postanowiłem sprawdzić wydajność dysku podłączonego pod port SATA oraz pamięci NAND.

Wygląda zachęcająco - średnia prędkość odczytu z dysku twardego to około 80MB/s w porównaniu do 10MB/s dla pamięci NAND. Widoczny pik 160MB/s spowodowany jest właściwością dysku twardego Seagate Momentus XT, który wyposażony jest  8GB pamięci SSD.

Jak przeprowadzić się z system na dysk?

Booloader nie pozwala na bezpośrednie uruchomienie jądra z innego miejsca niż pamięć NAND, dlatego musimy przenieść tylko system plików rootfs na wybrany przez nas dysk. Po ówczesnym założeniu partycji na dysku, musimy skopiować system plików z pamięci NAND na wybraną partycję. Ja na wstępne testy, utworzyłem tylko jedną partycję sda1.

Postępujemy dalej następująco:

  1. # sudo dd if=/dev/nandb of=/dev/sda1 bs=1M
  2. # resize2fs -f /dev/sda1

Na koniec musimy wyedytować plik bootujący na partycji /dev/nanda

  1. # sudo mount /dev/nanda /mnt
  2. # sudo vi /mnt/uEnv.txt

Na początek dopisujemy do linii parametrów rootdelay=3 oraz zamieniamy wpis nand_root=/dev/nanda na nand_root=/dev/sda1

Zapisujemy i restartujemy :)

  1. # sudo umount /mnt
  2. # sudo sync
  3. # sudo reboot

Po restarcie mamy już uruchomiony system z dysku twardego.

Kilka uwag na koniec

CubieTruck to kawałek dobrego sprzętu, który idealnie nada się zastosowania sieciowe w naszej sieci domowej. Gigabitowy port Ethernet oraz możliwość podłączenia dysku SATA daje niemałe możliwości. Oczywiście nielubiany układ graficzny Mali400 nie uraduje wszystkich zainteresowanych, jednak uzyskanie akceleracji sprzętowej do odtwarzania filmów jest możliwe - pokazałem to na przykładzie własnej dystrybucji Sunflower dla Iteaduino Plus A10. Z tego co zauwazyłem dystrybucja Fedora 20 korzysta już ze sterownika fbturbo i posiada wszelkie niezbędne moduły jądra do akceleracji sprzętowej video. Warto również zaznacznyć, że w przypadku Cubieboardów działa prężnie działająca społeczność zgromadzona na forum dyskusyjnym oraz jest dostępna obszerna dokumentacja.

Jeśli macie jakieś pytania odnośnie Cubietruck chętnie sprawdzę to dla Was, a w między czasie "ugotuję" własną dystrybucję!


Sprzęt do testu dostarczył sklep
ArduinoSolutions.

Na platformie Steam pojawia się co raz więcej tytułów dla systemu SteamOS. Dostępne stały się dla nas takie hity jak: Civilization V, Wiedźmin 2: Zabójcy królów czy Metro: Last Light. Na chwilę obecną biblioteka gier dla SteamOS to już 529 pozycji, a do jej grona mają dołączyć w przyszłości mają XCOM: Enemy UnknownHomefront: The Revolution i wiele innych. Ucichło natomiast o "Maszynach parowych" oraz kontrolerze Steam Controller. Do teraz.

Na targach E3 2014 podobno przedstawiono handheld SteamBoy i choć nie zdradzono o niej wiele szczegółów to wiadomo już, że posiada 4-rdzeniowy procesor, 4GB pamięci RAM, wbudowaną pamięć 32GB i 5" dotykowy wyświetlacz w formacie 16:9. Konsola SteamBoy posiada również możliwość łączenia się siecią Internet za pomocą WiFi i 3G.

Premiera SteamBoy planowana jest na 2015 rok wraz z innymi maszynami parowymi Steam Machienes.

Jak myślicie? Fake?

Do rodziny dołączy niebawem nowy model Arduino Zero wyposażony w 32-bitowy mikrokontroler Atmela ATSAMD21G18 (ARM Cortex® M0+). Nowa płytka ma być kontynuacją bardzo popularnego modelu Arduino UNO. Jednym z jego najważniejszych funkcji jest  wbudowany debugger (EDBG), który udostępnia interfejs debugowania poprzez wirtualny port COM.

Napięcie operacyjne Arduino Zero w odróżnieniu od Arduino UNO wynosi 3.3V. Udostępnia 14 cyfrowych pinów I/O z czego aż dwanaście może pracować jako wyjścia PWM. Tradycyjnie spotkamy tutaj  6 pinów analogowych wykorzystujących 12 bitowy przetwornik ADC.  Nowością jest tutaj jeden pin analogowy pracujący jako wyjście o rozdzielczości 10 bitów.

Obciążenie wejść/wyjść cyfrowych to niestety tylko 7mA. Na pocieszenie udostępniono 256 kB pamięci Flash na  wgrywany program, 32kB pamięci SRAM i 16kB pamięci EEPROM dostępnej w trybie emulacji. Cieszy również zegar o częstotliwości 48 MHz.


Jeśli interesuje Was sam mikrokontroler Atmela ATSAMD21G18 to pozwala na ustawienie aż sześciu portów komunikacyjnych (SPI, I2C, UART), gdzie sami możemy zdecydować o ich ilości. Z "automatu" otrzymujemy również 20 wejść/wyjść I/O oraz 14 kanałów ADC. ATSAMD21G18 posiada również wybudowany interfejs USB oraz zegar RTC z możliwością ustawienia alarmów. Rarytasem jest również kontroler PTC obsługujący 120 przycisków dotykowych (12x10).

Jak myślicie? Odniesie sukces jak Arduino UNO?