Π ΡΠΏΠΈΡΠΊΠ΅ ΡΠ°ΡΡΡΠ»ΠΊΠΈ linux-api Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (RFC) Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΆΡΡΠ½Π°Π»ΠΎΠ² lastlog, btmp, utmp ΠΈ wtmp Π½Π° Π½ΠΎΠ²ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ SQLite Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΡΠΊΠ΅Π½Π΄Π°. ΠΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΊΠΎΠΏΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΡΡΡΡΠΈΠΊΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² 2038 Π³ΠΎΠ΄Ρ, ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ, Π½ΠΈΠ·ΠΊΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠ΅Π°Π½ΡΠ°Ρ ΠΈ ΠΏΠΎΠΏΡΡΠΊΠ°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² Linux ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ:
- /var/log/lastlog β Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²Ρ ΠΎΠ΄Π° (ΡΡΡΡΠΊΡΡΡΠ° Β«struct lastlogΒ» Ρ ΠΏΠΎΠ»Π΅ΠΌ Β«ll_timeΒ» 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° time_t);
- /var/log/btmp β Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°;
- /var/run/utmp β ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ΅Π°Π½ΡΡ;
- /var/log/wtmp β ΠΈΡΡΠΎΡΠΈΡ Π²Ρ ΠΎΠ΄ΠΎΠ² ΠΈ Π²ΡΡ ΠΎΠ΄ΠΎΠ².
Π€ΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΠΉ Π½Π°Π·Π°Π΄ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ΄ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ:
- ΠΠΎΠ»Π΅ Β«tv_secΒ» Π² ΡΡΡΡΠΊΡΡΡΠ΅ Β«utmpxΒ» ΠΈ ΠΏΠΎΠ»Π΅ Β«ll_timeΒ» Π² Β«lastlogΒ» ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ Β«int32_tΒ», Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΡΠΈΠΊΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½ΠΈΡΡΡ 19 ΡΠ½Π²Π°ΡΡ 2038 Π³ΠΎΠ΄Π°. ΠΠ·-Π·Π° ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ABIβΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π΄Π°ΠΆΠ΅ Π½Π° 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΠΈ ΠΏΠΎΠ»Ρ ΠΎΡΡΠ°ΡΡΡΡ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΌΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΡΡΠΎΠ½Π΅Ρ Π²ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Linux.
- Π€ΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΈΠΌΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, IP-Π°Π΄ΡΠ΅Ρ) Π±Π΅Π· ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΎΡΠΌΠ°ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΡΠ΅Ρ ΡΡΠΈΠ»ΠΈΡ.
- Π£ΡΠΈΠ»ΠΈΡΡ last, lastb, who ΠΈ lastlog Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΆΡΡΠ½Π°Π»ΠΎΠ² Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ², ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΠΈΡΠΈ, Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΠΈ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΌΠΈ.
- ΠΠ°ΠΏΠΈΡΡ Π² Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ. ΠΡΠΈ ΡΠ±ΠΎΠ΅ Π·Π°ΠΏΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π°.
- ΠΠ»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΏΡΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΆΡΡΡΠ°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, sshd ΠΈ login) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ flock-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π²Π·Π°ΠΈΠΌΠ½ΡΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°ΠΌ.
ΠΠ²ΡΠΎΡ RFC ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ SQLite. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΌ C-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ: liblastlog2, libbtmp2, libutmp2 ΠΈ libwtmp2. ΠΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΠ, ΡΡ Π΅ΠΌΠ° ΠΊΠΎΡΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ 64-ΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ (ΡΠΈΠΏ INTEGER) ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠΌΠ΅Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π±Π΅Π· Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ (ΡΠ΅ΡΠ΅Π· ALTER TABLE).
Π‘ΡΠ΅Π΄ΠΈ Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠ² Π² ΠΏΠΎΠ»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SQLite ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ 64-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° INTEGER Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΏΠΎΡ Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° Π·Π° ΡΡΡΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π·Π°ΠΏΠΈΡΡΠΌΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ACID-ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΡΠ΅ΠΆΠΈΠΌ WAL (Write-Ahead Logging) Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ, ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½Π°Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ SQLite.
ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ Β«Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈΒ» (dual-write):
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΈΡΡΡ Π² Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ (login, sshd, sudo, cron ΠΈ Π΄Ρ.), ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΏΠΈΡΡ ΠΈ Π² ΡΡΠ°ΡΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΈ Π² Π½ΠΎΠ²ΡΡ SQLite-Π±Π°Π·Ρ ΡΠ΅ΡΠ΅Π· ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ.
- Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΈΠ»ΠΈΡ (last2, lastb2, who2, lastlog2), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· SQLite-Π±Π°Π·, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΡ. Π‘ΡΠ°ΡΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
- Π§Π΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ΄Π°Π²Π»ΡΡΡΠ΅Π΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΡΡΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠ°ΡΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π°, Π° ΡΡΠ°ΡΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ β ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ.
ΠΠΎΠΏΡΠΎΡΡ, Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ:
- Π¦Π΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² ΠΎΠ΄Π½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, libsession2).
- ΠΡΠ±ΠΎΡ ΠΈΠΌΡΠ½ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΡΡΠΈΠ»ΠΈΡ (ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΠΌ).
- Π Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π· Π΄Π°Π½Π½ΡΡ (/var/lib/ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ /var/log/ ΠΊΠ°ΠΊ Π΄Π»Ρ Π»ΠΎΠ³ΠΎΠ²).
- ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡ Π΅ΠΌΡ ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ.
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ SQLite Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² (ΡΠ΅ΡΠ²Π΅ΡΡ, Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ).
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ fallback-Π±ΡΠΊΠ΅Π½Π΄Π°, Ρ ΡΠ°Π½ΡΡΠ΅Π³ΠΎ ΠΆΡΡΠ½Π°Π»Ρ Π² ΡΠΏΡΠΎΡΡΠ½Π½ΠΎΠΌ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅, Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ SQLite ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΆΡΡΡΠΊΠΈΠΌΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΠΏΠ°ΠΌΡΡΠΈ).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
