Есть ли какое-то специальное устройство, которое вызывает вечную блокировку чтения?

Технически вы не можете предполагать , что что-то будет присутствовать, потому что ядро ​​Linux используется во множестве встроенных или частично встроенных контекстов, где будет использоваться полный набор утилит оболочки. бессмысленная трата места. Не исключено, например, создание устройства IoT, файловая система которого содержит загрузчик, монолитное ядро, пользовательский / sbin / init , который делает все, что устройству когда-либо понадобится, несколько записей / dev и ничего больше .

POSIX.Спецификация 1-2008 «Оболочка и утилиты» , также связанная в ответе Муру, предназначена для стандартизации оболочки как языка программирования . Поэтому он не включает большинство инструментов системного администрирования, которые ожидаются от «традиционной» установки Unix. К сожалению, это также видимый оставшийся шрам от древнего раскола между System V и BSD - инструменты, которые вы найдете в Linux, отличаются от инструментов FreeBSD, OSX или чего-то еще. Итак, опять же, нет надежной базы.

Чтобы указать, чего не хватает в ответе Мару, это набор пакетов , которые Debian (нестабильная версия) считает «обязательными» (официальное определение : «Системы с только необходимыми пакетами, вероятно, непригодны, но они обладают достаточной функциональностью, чтобы позволить системному администратору загружаться и устанавливать дополнительное программное обеспечение. ") и которые вносят файлы в / bin , / sbin , / usr / bin или / usr / sbin . Те, которые отмечены звездочкой, являются не просто «обязательными», но «необходимыми», что означает, что другому пакетному программному обеспечению разрешено предполагать свое присутствие вне зависимости от него.

base-passwd*            gzip*                   perl-base*
bash*                   hostname*               sed*
bsdutils*               initscripts             sensible-utils
coreutils*              libc-bin*               sysv-rc
dash*                   libpam-modules-bin      sysvinit-utils*
debianutils*            libpam-runtime          tar*
diffutils*              login*                  tzdata
dpkg*                   mawk¹                   util-linux*
e2fsprogs*              mount*                  xz-utils
findutils*              ncurses-bin*
grep*                   passwd

¹ awk-the-language «необходим», но системный администратор может выбрать, нужна ли им реализация «mawk» или «gawk».

И эти пакеты считаются "важными", то же самое; Официальное определение «важного» звучит так: «опытный специалист по Unix, обнаруживший его пропажу, сказал бы:« Что, черт возьми, происходит, где находится foo? »»:

adduser         cpio            ifupdown        man-db          vim-common
apt             cron            iproute2        procps          vim-tiny
apt-utils       debconf         iputils-ping    rsyslog         wget
aptitude        dmidecode       isc-dhcp-client systemd         whiptail
aptitude-common gnupg           kmod            systemd-sysv
at              gpgv            less            traceroute
bsdmainutils    groff-base      logrotate       udev

Обратите внимание, что этот второй набор включает такие важные инструменты системного администрирования, как ps и iproute2 , а также вещи, которые могут быть совершенно ненужными в некоторых установках, например в и dmidecode . Оба набора также содержат специфичные для Debian вещи, такие как dpkg и apt .

Обратите внимание, что оба набора вместе не являются расширенным набором функций, требуемых LSB (или POSIX + XSI, если на то пошло): эти утилиты отсутствуют:

ar              gencat          lpr             msgfmt          strings
bc              gettext         lsb_release     patch           strip
ed              install_initd   m4              pax             time
file            killall         mailx           remove_initd
fuser           lp              make            sendmail

Список утилит, которые есть в вышеупомянутые пакеты, но не в LSB, длинны и утомительны, но я все равно включаю их, чтобы подчеркнуть, сколько «критических инструментов системного администрирования» они включают.

accessdb                        mkhomedir_helper
add-shell                       mklost+found
addgroup                        mkswap
addpart                         modinfo
adduser                         modprobe
agetty                          mountpoint
apropos                         mt-gnu
apt                             namei
apt-cache                       ncal
apt-cdrom                       ncurses5-config
apt-config                      ncursesw5-config
apt-extracttemplates            neqn
apt-ftparchive                  networkctl
apt-get                         newusers
apt-key                         nisdomainname
apt-mark                        nologin
apt-sortpkgs                    nproc
aptitude-create-state-bundle    nroff
aptitude-curses                 nsenter
aptitude-run-state-bundle       nstat
arch                            numfmt
arpd                            oldfind
badblocks                       ownership
base64                          pam-auth-update
bash                            pam_getenv
bashbug                         pam_tally
biosdecode                      pam_tally2
blkdiscard                      pam_timestamp_check
blkid                           partx
blockdev                        perl
bootctl                         perl5.20.2
bridge                          pg
bsd-from                        pgrep
bsd-write                       pic
busctl                          ping
cal                             ping6
calendar                        pinky
captoinfo                       pivot_root
catchsegv                       pkill
catman                          pldd
cfdisk                          pmap
chage                           poweroff
chattr                          preconv
chcon                           printenv
chcpu                           printerbanner
chgpasswd                       prlimit
chpasswd                        ptx
chroot                          pwck
chrt                            pwconv
clear                           pwdx
clear_console                   pwunconv
colcrt                          raw
colrm                           rbash
column                          readlink
cpgr                            readprofile
cppw                            realpath
cron                            reboot
ctrlaltdel                      remove-shell
ctstat                          rename.ul
dash                            reset
debconf                         resize2fs
debconf-apt-progress            resizepart
debconf-communicate             rev
debconf-copydb                  rgrep
debconf-escape                  rmmod
debconf-set-selections          rmt-tar
debconf-show                    routef
debugfs                         routel
delgroup                        rsyslogd
delpart                         rtacct
deluser                         rtcwake
depmod                          rtmon
dhclient                        rtstat
dhclient-script                 run-parts
diff3                           runcon
dir                             runlevel
dircolors                       runuser
dmidecode                       savelog
dnsdomainname                   script
domainname                      scriptreplay
dpkg                            sdiff
dpkg-deb                        select-editor
dpkg-divert                     sensible-browser
dpkg-maintscript-helper         sensible-editor
dpkg-preconfigure               sensible-pager
dpkg-query                      service
dpkg-reconfigure                setarch
dpkg-split                      setsid
dpkg-statoverride               setterm
dpkg-trigger                    sfdisk
dumpe2fs                        sg
e2freefrag                      sha1sum
e2fsck                          sha224sum
e2image                         sha256sum
e2label                         sha384sum
e2undo                          sha512sum
e4defrag                        shadowconfig
eqn                             shred
expiry                          shuf
factor                          skill
faillog                         slabtop
fallocate                       snice
fdformat                        soelim
fdisk                           ss
filefrag                        start-stop-daemon
findfs                          stat
findmnt                         stdbuf
flock                           sulogin
fmt                             sum
free                            swaplabel
fsck                            swapoff
fsck.cramfs                     swapon
fsck.ext2                       switch_root
fsck.ext3                       sysctl
fsck.ext4                       systemctl
fsck.ext4dev                    systemd
fsck.minix                      systemd-analyze
fsck.nfs                        systemd-ask-password
fsfreeze                        systemd-cat
fstab-decode                    systemd-cgls
fstrim                          systemd-cgtop
geqn                            systemd-delta
getent                          systemd-detect-virt
getopt                          systemd-escape
getty                           systemd-hwdb
gpasswd                         systemd-inhibit
gpg                             systemd-machine-id-setup
gpg-zip                         systemd-notify
gpgsplit                        systemd-path
gpgv                            systemd-run
gpic                            systemd-stdio-bridge
groff                           systemd-tmpfiles
grog                            systemd-tty-ask-password-agent
grops                           tabs
grotty                          tac
grpck                           tailf
grpconv                         tarcat
grpunconv                       taskset
gtbl                            tbl
gzexe                           tc
halt                            tcptraceroute.db
hd                              telinit
helpztags                       tempfile
hexdump                         timedatectl
hostid                          timeout
hostnamectl                     tload
hwclock                         toe
i386                            top
iconvconfig                     traceproto.db
ifdown                          traceroute-nanog
ifquery                         traceroute.db
ifup                            traceroute6.db
infotocap                       troff
init                            truncate
insmod                          tset
installkernel                   tune2fs
invoke-rc.d                     tunelp
ionice                          tzconfig
ip                              tzselect
ipcmk                           udevadm
ischroot                        ul
isosize                         uncompress
journalctl                      unix_chkpwd
killall5                        unix_update
kmod                            unlink
last                            unshare
lastb                           unxz
lastlog                         update-alternatives
ldattach                        update-passwd
ldconfig                        update-rc.d
ldconfig.real                   uptime
ldd                             users
less                            utmpdump
lessecho                        vdir
lessfile                        vigr
lesskey                         vim.tiny
lesspipe                        vipw
lexgrog                         vmstat
lft.db                          vpddecode
line                            w.procps
link                            wall
linux32                         watch
linux64                         wdctl
lnstat                          wget
localectl                       whatis
login                           whereis
loginctl                        which
logrotate                       whiptail
logsave                         who
look                            whoami
lorder                          wipefs
losetup                         x86_64
lsattr                          xxd
lsblk                           xz
lscpu                           xzcat
lsipc                           xzcmp
lslocks                         xzdiff
lslogins                        xzegrep
lsmod                           xzfgrep
lspgpot                         xzgrep
lzmainfo                        xzless
mandb                           xzmore
manpath                         yes
mawk                            ypdomainname
mcookie                         zcmp
md5sum.textutils                zdiff
mesg                            zdump
mke2fs                          zegrep
mkfs                            zfgrep
mkfs.bfs                        zforce
mkfs.cramfs                     zgrep
mkfs.ext2                       zic
mkfs.ext3                       zless
mkfs.ext4                       zmore
mkfs.ext4dev                    znew
mkfs.minix                      zramctl

1
18.02.2018, 22:17
1 ответ

Puedes crear uno concryptsetup(o, supongo, dmsetuptambién funciona ).

# truncate -s 8M luksblock.img
# cryptsetup luksFormat luksblock.img
# cryptsetup luksOpen luksblock.img luksblock
# cryptsetup luksSuspend luksblock
# cat /dev/mapper/luksblock
(... no output because it's blocked / suspended... )

Cómo se ve endmsetup:

# dmsetup info luksblock
Name:              luksblock
State:             SUSPENDED
Read Ahead:        256
Tables present:    LIVE
Open count:        0
Event number:      0
Major, minor:      253, 71
Number of targets: 1
UUID: CRYPT-LUKS1-87bc6d9fd7fa419bbf15425c062d0916-luksblock

Puede usar dmsetuppara suspender un dispositivo:

dmsetup suspend luksblock

Por lo tanto, debería ser posible crear un mapeo de dispositivos suspendidos que no necesite estar respaldado por un archivo luksblock.imgen primer lugar, pero le dejaré esa parte final a usted. :-PAG


Por supuesto, este enfoque tiene una gran desventaja. Este dispositivo aparecerá entre todos los demás dispositivos de bloque en /proc/partitions, y todo lo que monitoree o detecte dispositivos (como LVM en busca de nuevos volúmenes físicos )también intentará leer y quedarse atascado en el bloque. Esto evitará que se detecten los dispositivos (porque los procesos que lo hacen están atascados )y es posible que la máquina ya no se reinicie (porque los procesos que manejan los procedimientos de apagado están atascados ).

0
28.01.2020, 00:39

Теги

Похожие вопросы