Bezpieczna destrukcja dysku, czyli polecenie dd
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.
- ls -o /bin/dd*
- -rwxr-xr-x 1 root 284 Jun 29 22:18 /bin/dd
- -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:
- #!/bin/bash
- dennyArgs=("^of=/dev/sda$" "^of=/dev/sda1$")
- for ARG in "$@"
- do
- for dennyArg in ${dennyArgs[*]}
- do
- if [ "$(echo "$ARG" | egrep ${dennyArg})" ]
- then
- echo "OPS! Parametr ${dennyArg} zablokowany!"
- exit -1
- fi
- done
- done
- 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.
- dd id=/dev/zero of=/dev/sda1
- OPS! Parametr ^of=/dev/sda1$ zablokowany!
Reklama
XCOM: Enemy Unknown dostępny dla Linuksa!
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 :)
CubieTruck - prawdziwy smok z układem Allwinner A20
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.
- # chmod +x LiveSuit.run
- # 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:
- # tail -n +60 LiveSuit.run > LiveSuit.tar.bz2
- # tar xjvf LiveSuit.tar.bz2
- # cd LiveSuit
- # rpm2cpio awdev-0.5-1dkms.noarch.rpm | cpio -idmv
- # cd usr/src/awdev-0.4
- # make
Otrzymamy w ten sposób plik awusb.ko, który kopiujemy do katalogu modułów jądra i wydajemy polecenie depmod
- # sudo cp awusb.ko /lib/modules/*wersja*jadra*/misc/
- # sudo depmod
- # 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:
- # sudo dd if=/dev/nandb of=/dev/sda1 bs=1M
- # resize2fs -f /dev/sda1
Na koniec musimy wyedytować plik bootujący na partycji /dev/nanda
- # sudo mount /dev/nanda /mnt
- # 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 :)
- # sudo umount /mnt
- # sudo sync
- # 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.
SteamBoy - Maszyna parowa w dłoniach
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 Unknown, Homefront: 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?