Малиновый Прог против Интернета Кирпичей, или Raspberry Pi с графикой на read-only microSD

Raspberry Pi microSD, read-only . - - , . . .


HDMI, . , Pi: . , . , , , à la turnkey box. , , Ubuntu (.. Raspbian Jessie) microSD, swap . , face palm.

. — , . , fsck. , , .

, -, , - . , , . — .


, , .

,
- RPi, (!) . , Raspbian - 720 . , 12 , , «» USB- 4 . , RPi, ECIO28P, .

, : - , . - , - ( PS/2 ). , , über- , . : . , , . - , .

DPMS, GUI-
, LightDM, X- DPMS /etc/lightdm/lightdm.conf:
...
xserver-command=X -s 0 -dpms -nocursor
...

-nocursor . ~/.config/lxsession/LXDE/autostart. , cron(8) 718 xscreensaver-command -deactivate ( , ;-)

: LightDM , ~/.config/lxsession/LXDE/autostart feh '@' . . .. , lxpanel, pcmanfm, xscreensaver, DPMS .

apt-get autostart, , X-, , . , .

UPD
Jaromir unclutter , . , .
Spider55 LightDM noDM. , .


— . GPIO I2C/PWM, CSI-DSI . - HDMI-, «» - , . , , . , «» , . -, . , Sauron .

, , (.. ) . : Raspberry Pi microSD read-only, - .


, SD- . , SSD- , , . microSD? , , , NAND- . , . fsck.

microSD Raspberry Pi read-only , .. ? , (). , . , . , , . , .

: - , «» .

: , , read-only, , .

: UnionFS


UnionFS . , , . , .

, «» (read-only microSD) «» , «» . microSD read-only, , . ? EXT4, , - - - , read-only. noatime , microSD. , /sys/block/mmcblk0/stat 282612 , 96, read-only? , 3000:1, 5:1. (, , )

UPD:
gattopazzo83 Flash Media Kit - ( ). 100,000 , SLC- microSD. read-only, , («» - «» ;-)


UPD:
doga, «» SD- RPi. doga mmc-utils, SD-, Raspbian . - , , , .
SD-
:
udevadm info -a -n /dev/mmcblk0

«» CID CSD, (name), (serial), (date), (hwrev, fwrev, oemid, manfid). www.sdcard.org «» (Simplified Specifications), . Part 1 Simplified, Physical Layer Simplified Specification.
stat, kernel.org. , .
- , lsmmc.c.
« » RPi SD cards Embedded Linux, .
— — , mmc-utils , .



, «» ? , 1 1970 , NTP. «» 46 , . , — .

UPD:
st1373 I2C- DS3231 ( ). : RTC ( ) Raspberry Pi.



. , , , Adobe Flash . , , «» . SquashFS . , «» read-only , .. «» , : (?) . , root, — , .


Rasbian Jessie microSD read-only, . .

DISCLAIMER
. root, sudo. , , sudo, -. , * * , ? -, 0.33, , … : , root sudo bash, .

1.

Raspbian Jessie Lite. raspi-config pi. , Debian — . .

apt-key update
apt-get update

2.

, :

apt-get install --no-install-recommends tightvncserver xtightvncviewer xserver-xorg xinit lxde-core lxappearance lightdm feh xprintidle policykit-1 busybox-syslogd ntpdate watchdog unionfs-fuse

:

dpkg --purge rsyslog
apt-get remove --purge wolfram-engine triggerhappy cron anacron logrotate dphys-swapfile fake-hwclock
apt-get autoremove --purge


tightvncserver, xtightvncviewer, xprintidle feh , .

, ** : xserver-xorg xinit lxde-core lxappearance lightdm policykit-1.

3.

raspi-config , pi. sudo, pi, pi . pu «» . (default shell) ( /usr/sbin/nologin), /usr/local/bin/pu. , SSH, . Sauron et al.

adduser --home /home/pu --shell /usr/local/bin/pu --uid 990 --gecos "RPi p-u" --gid 1000 pu
mkdir -p /home/pu/.config/lxsession/LXDE
cp -p /etc/xdg/lxsession/LXDE/desktop.conf /home/pu/.config/lxsession/LXDE/desktop.conf
touch /home/pu/.config/lxsession/LXDE/autostart
chown -R pu:pi /home/pu
sed -i 's/^#\?xserver-command=.*$/xserver-command=X -s 0 -dpms -nocursor/' /etc/lightdm/lightdm.conf
sed -i 's/^#\?autologin-user=.*$/autologin-user=pu/' /etc/lightdm/lightdm.conf

/etc/lightdm/lightdm.conf , , :

...
xserver-command=X -s 0 -dpms -nocursor
...
autologin-user=pu
...

4. ( )

Raspberry Pi 3 Model B, :

modprobe bcm2835_wdt
echo "bcm2835_wdt " | sudo tee -a /etc/modules

[Install] /lib/systemd/system/watchdog.service:

[Install]
WantedBy=multi-user.target

:

systemctl enable watchdog.service

, . , , , , , .. . watchdog(8) watchdog.conf(5)

5.

swap-, . /boot/cmdline.txt logo.nologo fastboot noswap. :

logo.nologo dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fastboot noswap

6. Raspberry Pi read-only

, , .

, mount_unionfs - /usr/local/bin. +x (chmod 755 555). .orig .rw, ():

#!/bin/sh
DIR=$1
ROOT_MOUNT=$(awk '$2=="/" {print substr($4,1,2)}' < /etc/fstab)
if [ $ROOT_MOUNT = "rw" ]; then
	/bin/mount --bind ${DIR}.orig ${DIR}
else
	/bin/mount -t tmpfs ramdisk ${DIR}.rw
	/usr/bin/unionfs-fuse -o cow,allow_other,suid,dev,nonempty ${DIR}.rw=RW:${DIR}.orig=RO ${DIR}
fi

:

insserv -r bootlogs
insserv -r alsa-utils

rm -rf /var/lib/dhcp/
ln -s /tmp /var/lib/dhcp

/home - , /etc /var /home. UnionFS ( .orig .rw):


cp -al /etc /etc.orig
mv /var /var.orig
mv /home /home.orig
mkdir /etc.rw /var /var.rw /home /home.rw

, fstab(5)

proc            /proc           proc    defaults        0       0
/dev/mmcblk0p1  /boot           vfat    ro              0       2
/dev/mmcblk0p2  /               ext4    ro              0       1
mount_unionfs   /etc            fuse    defaults        0       0
mount_unionfs   /var            fuse    defaults        0       0
mount_unionfs   /home           fuse    defaults        0       0
none            /tmp            tmpfs   defaults        0       0

7.

, .bash_history, - .. , , (, /var.orig var).

, . , , single user root. , read-only read-write :

mount -o rw,remount /

read-only , !
-.

8.

, read-write (. ). fstab(5) , mount_unionfs, ** /var.orig ( /home.orig ). /var, , apt-get , ? apt-get . , ;)


, ( read-only) Raspberry Pi , . , , :)

( HDMI-), , , , . Raspberry Pi , :)

, .

UPD: OverlayFS
ValdikSS OverlayFS, Linux 2014, , initramfs. art_gl : Raspbian with Read-only Root.
, Domoticz, , OverlayFS. Sauron Domoticz.


UPD: SquashFS
Vooon, Vcoderlab, av_in et al SquashFS. , «» union mount, . , SquashFS by-design read-only, .. firmware-, () , . , , . , IoT . , , SquashFS, - ? , , community- SquashFS, .. Raspberry Pi. , OpenELEC.


UPD: F2FS
nlykl F2FS aka «Flash-Friendly File System», HOWTO: Replace the micro SD card's ext4 root partition by f2fs on the Raspberry PI. DISCLAIMER: . . F2FS -.


UPD:
ilmarin77 : Network booting. . , , , , ( ) . USB-Ethernet LAN9514 0..70°C


UPD: USB-
ilmarin77 USB: How to boot from a USB Mass Storage Device on a Raspberry Pi 3. SSD, USB, , microSD, USB 2.0 (- 30-40/, ). , . , read-only microSD, SSD , . USB- , microSD, .


UPD: (watchdog)
homecreate systemd, , . . .


UPD:

?


. , - , S.M.A.R.T HDD SSD. SanDisk, , , EXTCSD. - , Linux . , , smartd(8) .

« Linux- SD- /» , , (.. uptime , 10 ). , ( sudo root):

uptime
cat /sys/block/mmcblk0/stat | awk '{printf "Uptime read: %.3fMiB (%.1f%% I/Os merged) written: %.3f MiB (%.1f%% I/Os merged)\n", $3*512/1048576, $2/$1*100, $7*512/1048576, $6/$5*100}'

, , , «» . , Meklon -, openELEC / KODI. 6 72 66. / 1:1, SquashFS ( SD- ). / 5:1 10:1, . , 10 — , .
, : 512 , , erase- . Optimizations for Cheap Flash Media Arnd Bergmann (, .) «» , .. 32, erase- 4..8. «» , 512 erase-, .. 64 , stat. 6/, microSD- .
, .



Make Raspbian System Read-Only
blog.pi3g.com/2014/04/make-raspbian-system-read-only
()

How to make RaspberryPi truly read-only, reliable and trouble-free
k3a.me/how-to-make-raspberrypi-truly-read-only-reliable-and-trouble-free
( )

Protect your Raspberry PI SD card, use Read-Only filesystem
hallard.me/raspberry-pi-read-only
( sisaenkov, , )

Stopping SD Card Corruption on Raspberry Pi’s Raspbian
ideaheap.com/2013/07/stopping-sd-card-corruption-on-a-raspberry-pi
( )

Raspberry Pi — VNC localhost
habrahabr.ru/post/212661

RTC ( ) Raspberry Pi
raspberrypi.ru/blog/598.html
( I2C- DS3231)

How to boot from a USB Mass Storage Device on a Raspberry Pi 3
www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/msd.md

Network booting
www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net.md

ECIO(TM), a powerful USB programmable single chip computer based on PICmicro microcontroller technology
www.matrixtsl.com/product.php?Prod=ECIO28P

Easy Raspberry Pi Based Screensaver/Slideshow for Exhibitions/Store Front
www.instructables.com/id/Easy-Raspberry-Pi-Based-ScreensaverSlideshow-for-E
( 6)

Flash memory card design (2013)
wiki.linaro.org/WorkingGroups/KernelArchived/Projects/FlashCardSurvey
( , ? FAT; ; 2013)

Optimizing Linux with cheap flash drives, Arnd Bergmann, 2011
lwn.net/Articles/428584
( )

Optimizations for Cheap Flash Media, Arnd Bergmann, 2011
free-electrons.com/blog/elce-2011-videos
( , , )

SD Association, Simplified Specifications, Part 1 Simplified: Physical Layer Simplified Specification
www.sdcard.org/downloads/pls/index.html

Block layer statistics in /sys/block/<dev>/stat
www.kernel.org/doc/Documentation/block/stat.txt
( SD- : cat /sys/block/mmcblk0/stat uptime)

Source: https://habr.com/ru/post/es400011/


All Articles