LINUX.ORG.RU

Не могу смонтировать образ в Arch Linux

 , , ,


0

1

Уже встречался с этим, так и не смог ничего сделать, просто распаковал образ, на этот раз появилось пару свободных дней и захотел поиграть в игрушку, в итоге при попытке запуска выдает следующее

kevlik@om ~/Downloads> ./Civilization.VI.v1.0.0.341.x64.Linux.sh 
./Civilization.VI.v1.0.0.341.x64.Linux.sh: line 62: cd: Mounted /dev/loop1 at /media/disk: No such file or directory
Failed to change directory to Mounted /dev/loop1 at /media/disk

Unmounting /dev/loop1... Unmounted /dev/loop1.

kevlik@om ~> lsmod | grep loop
kevlik@om ~ [0|1]>
kevlik@om ~ [0|1]> modprobe loop


Последнее исправление: kevlik (всего исправлений: 2)
Ответ на: комментарий от Artamudo

Этот скрипт весит 6гб, как я понимаю, это не скрипт, а бинарный файл какой-то. Инструкция в раздаче говорит, что это надо просто запустить, он смонтируется и автоматически выполнится. По ошибке, мне вспомнилось, что я пытался не так давно тоже смонтировать один образ и мне выдавало ту же ошибку, но я забил на это и просто распаковал, это же мне распаковать не вхыодит

kevlik
() автор топика
Ответ на: комментарий от oster2011

И что я должен с этим сделать, я создавал /media/disk, он выдает ту же ошибку, только /media/disk1

kevlik
() автор топика
Ответ на: комментарий от kevlik

После загрузки модуля loop грепал его еще раз в lsmod?

The loop device is a block device that maps its data blocks not to a physical device such as a hard disk or optical disk drive, but to the blocks of a regular file in a filesystem or to another block device. This can be useful for example to provide a block device for a filesystem image stored in a file, so that it can be mounted with the mount(8) command.

Выдает ошибку скорее всего из-за того, что этот модель не загружен в ядро, когда установщик пытается примонтировать сам себя.

RedEyedMan666
()
Последнее исправление: RedEyedMan666 (всего исправлений: 1)
Ответ на: комментарий от kevlik

Значит ставить другую версию ядра с этим модулем внутри. Либо собрать свое ядро той же версии с тем же конфигом, предварительно включив этот модуль.

RedEyedMan666
()
Последнее исправление: RedEyedMan666 (всего исправлений: 1)
Ответ на: комментарий от kevlik

Пробовал монтировать обычные образы .ISO?

У этого установщика должны быть ключи, подобие –unpack, чтобы распаковать данные без монтирования.

RedEyedMan666
()
Ответ на: комментарий от RedEyedMan666

Да, там есть ключ –gasfa-extract, но выводит он ровным счетом то же самое Кстати, сейчас загрузился с другого ядра, ck, и код ошибки другой

Object /org/freedesktop/UDisks2/block_devices/loop0 is not a mountable filesystem. Failed to mount an image to /dev/loop0

Unmounting /dev/loop0… Error unmounting /dev/loop0: GDBus.Error:org.freedesktop.UDisks2.Error.NotMounted: Device `/dev/loop0’ is not mounted Failed to unmount /dev/loop0

kevlik
() автор топика
Ответ на: комментарий от kevlik

Чексуммы скачанного установщика сверял? Может он битый? Если с торрентов качал то перехешируй и посмотри что изменится. Скорее всего это бинарник с шелл-скриптом вначале, который монтирует упакованный образ данных игры. Обычно в таких бандлах данные просто сжаты.

RedEyedMan666
()
Последнее исправление: RedEyedMan666 (всего исправлений: 2)
Ответ на: комментарий от kevlik

5я - моя самая нелюбимая часть из всей серии

flant ★★★★
()

Покажь [code] ls -l /media[/code] у тебя скорее всего просто прав нет на создание там папок и монтирование

anonymous
()
Ответ на: комментарий от kevlik

Монтирование исишки проверь

udisksctl loop-setup -r -f '/home/путь/название.iso'
если все нормально смотри скрипт что он там делает, в media просто так монтировать юзер не может

anonymous
()
Ответ на: комментарий от kevlik

ls -all /media

какие прова на /media ?

прав скорее всего нет юзеру на создание и монтирование

anonymous
()

Посмотри начало этого скрипта, что он вообще делает. Полюбас на баше, а дальше бинарник идёт.

fehhner ★★★★★
()
Ответ на: комментарий от kevlik

сделай head -n 1000 Civilization.VI.v1.0.0.341.x64.Linux.sh, почисти в конце нечитаемое и выложи на pastebin

undef ★★★
()
cd: Mounted /dev/loop1 at /media/disk: No such file or directory

Где-то в скрипте есть баг. Он делает что-то вроде

dir=$(some-command)
cd "$dir"

И почему-то some-command печатает на стандартный вывод Mounted /dev/loop1 at /media/disk, а скрипт ожидает, что команда напечатает только /media/disk. Отсюда ошибка: скрипт хочет перейти в /media/disk, а команду даёт на переход чёрт знает куда.

Дело не в ядре и не в модулях. Иногда помогает запускать скрипты явным образом через bash whatever.sh (если авторы понапихали башизмов, но оставили первой строкой #!/bin/sh), а иногда исправлять за авторов ошибки совместимости приходится вручную. Откройте скрипт при помощи less (или любым другим просмотрщиком, который не стошнит от 6G файла: нам нужно только самое начало), найдите смещение до начала tar.gz и распакуйте вручную:

offset=12345 # подставьте свой
tail -c +$offset file.sh | tar -C куда -xvvf -

(или, если там не .tar.gz, подмонтируйте этот файл, или что там этот скрипт сам с собой делает)

После распаковки вручную же запускайте продолжение установочного скрипта.

anonymous
()
Ответ на: комментарий от anonymous

А образы iso монтирую так

mount -o loop /что/монтируеш /куда/монтируеш 
anonymous
()
Ответ на: комментарий от undef

#!/bin/sh

{{{ INFO

vim: foldmethod=marker

GASFA: Gazelle’s Automatic SquashFs Application

Main script

Written by ZeDoCaixao

Licence: WTFPL - http://www.wtfpl.net/about/

}}} INFO

{{{ Basic variables

VERSION=0.5.2 OFFSET=8192 IMAGE=«$0» RUNNING_DIR=«$(pwd)» read_usage () { USAGE=$(cat); } read_usage <<EOF USAGE: «$IMAGE» [APPLICATION OPTIONS] «$IMAGE» [–gasfa-options]

kevlik
() автор топика
Ответ на: комментарий от undef
gasfa options:
    --gasfa-mount
        Only mount an image without running anything.
    --gasfa-extract [DIR]
       Extract the content of image to DIR.
       If DIR isn't specified, extract to "gasfa-content" in current directory.
    --gasfa-help
        Show this help message.
kevlik
() автор топика
Ответ на: комментарий от undef

Вот полная версия скрипта, дальше бинарная часть видимо начинается

#!/bin/sh
# {{{ INFO 
# vim: foldmethod=marker
# GASFA: Gazelle's Automatic SquashFs Application
# Main script
# Written by ZeDoCaixao
# Licence: WTFPL - http://www.wtfpl.net/about/
# }}} INFO

# {{{ Basic variables
VERSION=0.5.2
OFFSET=8192
IMAGE="$0"
RUNNING_DIR="$(pwd)"
read_usage () { USAGE=$(cat); }
read_usage <<EOF
USAGE:
    "$IMAGE" [APPLICATION OPTIONS]
    "$IMAGE" [--gasfa-options]

gasfa options:
    --gasfa-mount
        Only mount an image without running anything.
    --gasfa-extract [DIR]
       Extract the content of image to DIR.
       If DIR isn't specified, extract to "gasfa-content" in current directory.
    --gasfa-help
        Show this help message.

Can also be mounted with:
    sudo mount -o loop,offset=$OFFSET "$IMAGE" /mnt

gasfa-script version $VERSION
EOF
# }}} Basic variables

# {{{ Functions
fail () {
    echo "$2" >&2
    exit "$1"
}

image_mount () {
    LOOP="$(
        udisksctl loop-setup \
        --offset "$OFFSET" -f "$IMAGE" --no-user-interaction \
        | sed -e 's@.* \(/.*\)\.$@\1@'
    )"

    [ -z "$LOOP" ] && fail 1 "ERROR: Mounting $IMAGE failed"

    DIRECTORY="$(
        udisksctl info -b "$LOOP" | sed -ne 's/.*MountPoints: *\(.*\)/\1/p'
    )"

    [ -z "$DIRECTORY" ] && DIRECTORY="$(
        udisksctl mount -b "$LOOP" --no-user-interaction \
            | sed -e 's@.* \(/.*\)\.$@\1@'
    )"

    [ -z "$DIRECTORY" ] && fail 1 "Failed to mount an image to $LOOP"
    cd "$DIRECTORY" || fail 1 "Failed to change directory to $DIRECTORY"

    echo "Image mounted as $DIRECTORY"
}

image_unmount () {
    cd / || fail 1 "Can't cd to /"
    printf "\n%s" "Unmounting $LOOP... "
    UNMOUNTED=NO
    while [ $UNMOUNTED = NO ]; do
        if udisksctl unmount -b "$LOOP" --no-user-interaction ; then
            UNMOUNTED=YES
        else
            echo "Failed to unmount $LOOP" >&2
            echo "CD from the mounted directory in another terminal/FM" >&2
            echo "CD from the mounted directory and press ENTER" >&2
            read -r
        fi
    done
    udisksctl loop-delete -b "$LOOP" --no-user-interaction 2> /dev/null
}

image_run () {
    cd "$DIRECTORY" || fail 1 "Can't cd to $DIRECTORY"

    # Find the executable file
    [ -f "AppRun" ] && EXEC="./AppRun"

    [ -z "$EXEC" ] && [ -f "start.sh" ] && EXEC="./start.sh"

    [ -z "$EXEC" ]  \
        && [ "$(find . -maxdepth 1 -type f -executable | wc -l)" -eq 1 ] \
        && EXEC="$(find . -maxdepth 1 -type f -executable)"

    [ -z "$EXEC" ] && [ "$(uname -m)" = "x86_64" ] \
        && [ "$(find . -maxdepth 1 -type f -executable -name '*.x86_64' \
                | wc -l)" -eq 1 ] && EXEC="$(ls ./*.x86_64)"

    [ -z "$EXEC" ] \
        && [ "$(find . -maxdepth 1 -type f -executable -name '*.x86' \
                | wc -l)" -eq 1 ] && EXEC="$(ls ./*.x86)"

    [ -z "$EXEC" ] \
        && fail 64 "No executeable file found check your squashfs content"

    # Finally run the application
    if [ -z "$APPRUNNER" ]; then
        "$EXEC"  "$@"
        RESULT=$?
    else
        $APPRUNNER "$EXEC" "$@"
        RESULT=$?
    fi

    # Exit with the same result as the application exited with
    exit $RESULT
}
# }}} Functions

# {{{ Main script
[ "$1" = "--gasfa-help" ] || [ "$1" = "--gasfa-info" ] && {
    echo "$USAGE"
    exit 0
}

# Unmount the image if the script stops in any way
trap image_unmount EXIT
trap 'exit 127' 1 2 3 6 15
# Mount the image
image_mount

[ "$1" = "--gasfa-mount" ] && {
    while true; do
        sleep 600
    done
}
[ "$1" = "--gasfa-extract" ] && {
    cd "$RUNNING_DIR" || fail 1 "ERROR: Can't change directory to $RUNNING_DIR"
    TARGET="$2"
    [ -z "$TARGET" ] && TARGET=gasfa-content
    [ -d "$TARGET" ] && fail 1 "Can't extract to $TARGET - directory exists"
    [ -f "$TARGET" ] && \
        fail 1 "Can't extract to $TARGET - file with same name exists"

    printf "%s" "Now extracting $IMAGE data to $TARGET... "
    cp -R "$DIRECTORY" "$TARGET" || {
        echo "Failed extracting application data."
        fail 1 "Do you have enough drive space and permission to write here?"
    }
    echo "Done"
    exit 0
}

# And finally, if none --gasfa-* options given, run the application
image_run "$@"
# }}} Main script

kevlik
() автор топика
Ответ на: комментарий от anonymous

Про истал скрипты было известно давно. Если не догнал - в клинику.

hbars ★★★★★
()
Ответ на: комментарий от kevlik

сделай less Civ*.sh и скопируй строки с первой и пока не начнется хрень нечитаемая. только в code их закинь.

а перед этим

tail -c +8193 Civilization.VI.v1.0.0.341.x64.Linux.sh | file - 

что говорит?

может это то самое смещение

undef ★★★
()
Ответ на: комментарий от undef

Чуть выше нашел кусок, запастил, на твою команду консоль говорит вот это

/dev/stdin: Squashfs filesystem, little endian, version 4.0, zlib compressed, 13335958580 bytes, 34207 inodes, blocksize: 1048576 bytes, created: Mon Oct  7 21:43:21 2019

Судя по скрипту, у меня есть мнение, что у меня проблемы с udisk

kevlik
() автор топика
Ответ на: комментарий от undef

Да, работает, но почему у скрипта не получалось это сделать? Как я понимаю, он спотыкался на udisksctl ? Я помню, у меня были проблемы раньше при монтировании образов, благо я это делаю не так часто, видимо, у меня что-то неверно настроено в системе…

kevlik
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.