Debian Linux ライブシステム toram: /dev/shm デバイスを開けません。

Debian Linux ライブシステム toram: /dev/shm デバイスを開けません。

Linuxシステムをメモリ上でのみ実行するために、ハードドライブのインストールからsquashfsライブシステムを生成するシェルスクリプトを作成しました。

しかし、toramライブシステムを実行すると、dmesgで次のエラーが発生します。

systemd[1]: Failed to open /dev/shm device, ignoring: Inappropriate ioctl for device

このエラーにもかかわらず、トーラムライブシステムは問題なく実行されているようです。

squashfsはACLをサポートしていませんが、/media/username/ディレクトリにはACLが必要なため、このスクリプトはインストールされているLinux上でユーザーを1人だけ作成した場合にのみ機能します。

スクリプトは次のとおりです。

    #!/bin/bash
    
    # Destination directory:
    DEST=$HOME/squashfs
    
    sudo mkdir -p ${DEST}
    
    # Copying installation in destination directory:
    sudo rsync --progress --specials --perms -av -lXEog --delete / ${DEST} --one-file-system \
    --exclude=/proc/* --exclude=/tmp/* --exclude=/dev/* \
    --exclude=/sys/* --exclude=/boot/* \
    --exclude=/etc/mtab --exclude=${DEST}
    
    # Make /media/username ownership to the user, because squashfs doesn't support ACL
    MEDIA="$USER:$USER $DEST/media/$USER"
    sudo chown $MEDIA
    
    # Remove links to mounted drives in destination directory /media/username/:
    MEDIA="$DEST/media/$USER"
    sudo rm -f $MEDIA/*
    
    # Remove unwanted entries in fstab of the future live system: 
    sudo sed -i '/\/boot\/efi/d' ${DEST}/etc/fstab 
    sudo sed -i '/swap/d' ${DEST}/etc/fstab 
    sudo sed -i '/UUID=.*\ \/\ /d' ${DEST}/etc/fstab
    
    # Mount special files in order to chroot:
    sudo mount -o bind /proc ${DEST}/proc
    sudo mount -o bind /dev ${DEST}/dev
    sudo mount -o bind /dev/pts ${DEST}/dev/pts
    sudo mount -o bind /sys ${DEST}/sys
    sudo cp /etc/resolv.conf ${DEST}/etc/resolve.conf
    
    # upgrade the chrooted system, and install live-boot package 
    # as well as the lastest kernel: 
    sudo chroot ${DEST} apt-get update
    sudo chroot ${DEST} apt-get upgrade
    sudo chroot ${DEST} apt-get remove linux-image*
    sudo chroot ${DEST} apt-get install live-boot
    sudo chroot ${DEST} apt-get install linux-image-amd64
    sudo chroot ${DEST} apt-get clean
    sudo chroot ${DEST} apt clean
    
    # Umount the special files:
    sudo umount ${DEST}/proc
    sudo umount ${DEST}/dev/pts
    sudo umount ${DEST}/dev
    sudo umount ${DEST}/sys
    
    # Delete unwanted files:
    [ -n "$DEST" ] && sudo find ${DEST}/var/mail ${DEST}/var/lock ${DEST}/var/backups ${DEST}/var/tmp -type f -exec rm {} \;

    # Delete only OLD log files:
    [ -n "$DEST" ] && sudo find ${DEST}/var/log -type f -iregex '.*\.[0-9].*' -exec rm -v {} \;
    [ -n "$DEST" ] && sudo find ${DEST}/var/log -type f -iname '*.gz' -exec rm -v {} \;
    
    # Clean current log files:
    [ -n "$DEST" ] && sudo find ${DEST}/var/log -type f | while read file; do echo -n '' | sudo tee $file; done
    
    # Clean Pakcage cache:
    [ -n "$DEST" ] && sudo rm -v ${DEST}/var/cache/apt/archives/*.deb
    
    # Remove old kernel and initrd in the partition where will be installed the live system: 
    sudo rm -f /media/$USER/LIVE/live/initrd.img*
    sudo rm -f /media/$USER/LIVE/live/vmlinuz*    
    
    # Copy new kernel and initrd in the partition where will be installed the live system: 
    sudo mv -f ${DEST}/boot/initrd.img* /media/$USER/LIVE/live/initrd.img
    sudo mv -f ${DEST}/boot/vmlinuz* /media/$USER/LIVE/live/vmlinuz
    
    # Remove old shquashfs in the partition where will be installed the live system: 
    sudo rm -f /media/$USER/LIVE/live/filesystem.squashfs
    
    # Make the new squashfs:
    sudo mksquashfs ${DEST} /media/$USER/LIVE/live/filesystem.squashfs -xattrs -processors 4 -noappend -always-use-fragments

`/media/$USER/LIVE/` is where the live system partition is mounted.
   
Then I boot the live system placed on a partition with the kernel options: `toram boot=live`

編集する:

コマンドを実行すると、インストールされているとdf表示されます。/dev/shm/run/live/medium

このコマンドは、もインストールされてmount | grep mediumいることを知らせます。/dev/shm/usr/lib/live/mount/medium

システムはRAMにsquashfsを含むパーティションのコピーを保持しているようです。

を削除しようとすると、/run/live/medium削除できないというメッセージが表示されますthe target is active。しかし、正常に削除しました/usr/lib/live/mount/medium

それで、これらの問題が関連しているのか、それを取り除く方法があるのか​​疑問に思います/run/live/medium

答え1

/dev/shmこれは通常tmpfsまたはRAMディスクであるため、一般的ではない環境でのインストールは問題になる可能性があります。systemd完全なRAMディスク環境では、RAMディスクfsが必要ないため問題にならないので、これを正しく無視しました。

答え2

次の2つのコマンドを追加してエラーを削除してみてください。# Mount Special Files Section

sudo test -L /dev/shm && sudo rm /dev/shm && sudo mkdir /dev/shm sudo chmod 1777 /dev/shm

望むより:Gentoo Wiki:必要なファイルシステムをインストールする

上記のリンクのコマンドを使用してchrootを一度だけ入力することをお勧めします。

答え3

これはライブスタートのバグが原因で発生します。エラーは次のとおりです。アップストリームが修正されました。しかし、リリースには少し時間がかかります。その間、エラーログを無視してもかまいません(有害ではありません)。または直接パッチを適用することもできます。

if [ -f ${DEST}/lib/live/boot/9990-toram-todisk.sh ]; then
  sed -i 's|dev="/dev/shm"|dev="tmpfs"|g' ${DEST}/lib/live/boot/9990-toram-todisk.sh
fi

バグの説明:live-bootはtmpfsを/dev/shmデバイス名でマウントします。ただし、tmpfsには実際にはデフォルトのデバイスがないため、デバイス名として何でも使用できます。一般的にtmpfs使用します。これを使用すると、systemdはデバイスとして開こう/dev/shmとしますが、デバイスではないため失敗して混乱します。/dev/shm/dev/shm

関連情報