LINUX.ORG.RU

А у Вас естmount -n -o remount,rw ?


0

0

захожу удаленно:
ssh root@192.168.0.1

Не могу создать каталог и записать в файл.
# mkdir /var-1
mkdir: cannot create directory `/var-1': Read-only file system
#

делаю:
# mount -n -o remount,rw /
mount: block device /dev/hda1 is write-protected, mounting read-only
#

Как это побороть ?
anonymous

Ответ на: комментарий от idle

# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / ext3 ro 0 0               <---  ro :((
/proc /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hdc1 /var ext3 rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
[root@isn root]#

Сделал:
# mount -n -o reboot,rw /
mount: /dev/hda1 already mounted or / busy
mount: according to mtab, /dev/hda1 is already mounted on /
#
А как поправить то ?
и из-за чего это могло произойти ?
Сбой при загрузке ?

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

кажется, я нашел, в чем дело.

fs/super.c:do_remount_sb()
    if (!(flags & MS_RDONLY) && bdev_read_only(sb->s_bdev))
            return -EACCES;

drivers/block/ioctl.c:blkdev_ioctl()
    case BLKROSET:
            set_device_ro(bdev, n);

а я и не знал.

наверное, кто-то выставил этот флаг.
вроде, есть такая утилита blockdev,
может, она это может? если у вас она
есть, посмотрите man. если она этот
ioctl поддерживает, значит, может и
снять ro.

мне самому интересно, в этом ли дело,
так что, напишите плиз.

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

# fdisk /dev/hda
   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1       721   2907040+  83  Linux
/dev/hda2           722       767    185472   82  Linux swap

Делаю:
# blockdev -v --setrw /dev/hda1
set read-write succeeded.
#

Правильно сделал ?
После даю:
# cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / ext3 ro 0 0
/proc /proc proc rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hdc1 /var ext3 rw 0 0
none /dev/pts devpts rw 0 0
none /dev/shm tmpfs rw 0 0
#

# mount -n -o remount,rw /
mount: block device /dev/hda1 is write-protected, mounting read-only
#

Может нужно перегрузить комп нужно?
Или что не так понял ?

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

# strace -e mount mount -n -o remount,rw /
mount("/dev/hda1", "/", "ext3", MS_REMOUNT|0xc0ed0000, 0x805b178) = -1 EROFS (Read-only file system)
mount: block device /dev/hda1 is write-protected, mounting read-only
mount("/dev/hda1", "/", "ext3", MS_RDONLY|MS_REMOUNT|0xc0ed0000, 0x805b5a0) = 0
#

>еще, у blockdev можно спросить ro status?
А как ? 

# blockdev -h
Usage: blockdev [-V] [-v|-q] commands devices
Available commands:
        --setro (set read-only)
        --setrw (set read-write)
        --getro (get read-only)
        --getss (get sectorsize)
        --getsize       (get size)
        --setra READAHEAD       (set readahead)
        --getra (get readahead)
        --flushbufs     (flush buffers)
        --rereadpt      (reread partition table)
#

Как спросить статус ?

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

> А как ?

а man? :) да он и сам пишет: --getro (get read-only)

blockdev --getro /dev/hda
blockdev --getro /dev/hda1
ls -l /dev/hda
ls -l /dev/hda1

но это не то, похоже, был бы ACCESS.

какое ядро, на всякий случай?

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

Хм. вот что мне выдал.

# blockdev --getro /dev/hda1
0
# blockdev -v --getro /dev/hda1
get read-only: 0
#

man ?,  прочитал, как смог, не зная английского.
ядро 2.4.18-14 ; RH-8

Смешно то что еще позавчера все было хорошо,
я монтировал диск и перезагружал, эту машину,
предварительно редактировал файл: /etc/fstab:
вот он:
# cat /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
#/dev/hda1                /                      ext3    defaults        1 1
/dev/hdc1               /var                    ext3    defaults        1 2
#/dev/hdc1               /var                    ext3    defaults        1 2
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
/dev/hda2               swap                    swap    defaults        0 0
#/dev/hdc2               swap                    swap    defaults        0 0
192.168.0.15:/mnt/windows/download/RedHat/RPMS /mnt/RPMS nfs ro,soft,addr=192.168.0.15,noauto 0 0
#

Что там нарушилось ?  не знаю.
Еще отключил одну службу  dhcpd в /etc/rc.d/rc3.d/S11dhcpd -> ../init.d/dhcpd
Удалил эту ссылочку.

Конечно я понимаю что эта информация ни к селу ни к городу, но
 я в этом увы вообще чайник.
Может что присоветуете ?

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

не знаю, смогу ли чем помочь, но я же
просил и у /dev/hda спросить, а также
ls сделать.

еще, что говорит dmesg после mount?

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

Извините пожалуйста я не понял.
Вот сделал:

# blockdev --getro /dev/hda
0
# blockdev --getro /dev/hda1
0
# ls -l /dev/hda
brw-rw----    1 root     disk       3,   0 Aug 31  2002 /dev/hda
# ls -l /dev/hda1
brw-rw----    1 root     disk       3,   1 Aug 31  2002 /dev/hda1
#

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

А как дать эту команду?
#dmesg

Так она мне такой листинг выдает длинный.
Там есть такие строчки
EXT3-fs abort (device ide0(3,1)): ext3_remount: Abort forced by user
ext3_abort called.
EXT3-fs abort (device ide0(3,1)): ext3_remount: Abort forced by user
ext3_abort called.
EXT3-fs abort (device ide0(3,1)): ext3_remount: Abort forced by user
ext3_abort called.
EXT3-fs abort (device ide0(3,1)): ext3_remount: Abort forced by user
ext3_abort called.
EXT3-fs abort (device ide0(3,1)): ext3_remount: Abort forced by user
ext3_abort called.
EXT3-fs abort (device ide0(3,1)): ext3_remount: Abort forced by user
hda: read_intr: status=0x49 { DriveReady DataRequest Error }
hda: read_intr: error=0x04 { DriveStatusError }
ext3_abort called.

Других нет.

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

> EXT3-fs abort (device ide0(3,1)): ext3_remount: Abort forced by user

в ext3_sb_info EXT3_MOUNT_ABORT.

похоже, у вас проблемы с диском!

> hda: read_intr: status=0x49 { DriveReady DataRequest Error }
> hda: read_intr: error=0x04 { DriveStatusError }

сулит большие неприятности, похоже, винчестер умирает.
может, в этом и причина, не уверен.

перезагрузите машину, посмотрите внимательно, что скажет
dmesg после этого, нет ли еще каких-то ошибок?

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

Результат: загрузился как rw.
Но Вы меня напугали теперь буду переставлять на новый диск.
Спасибо еще раз. Сразу не удалось написать. 
Это был интернет сервак. 

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

> теперь буду переставлять на новый диск.

оно того стоит, лучше перебдеть :))

для того, чтобы убедиться, что fs пришла
в EXT3_MOUNT_ABORT из-за апаратных проблем,
вы можете поискать в syslog с помощью grep
строку 'EXT3-fs error'. скорее всего, вы также
найдете там запись 'Remounting filesystem read-only',
что и будет окончательным обьяснением инцидента.

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

Спасибо, посмотрю. 
У меня к Вам есть вопросик.
Я переписал полностью всю систему на новый HDD.
предварительно отформатировав разделы как у источника.
Загрузился с рабочего.
Подмонтировал копию: 
#mount -t ext3 /dev/hdc1 /mnt/hdc
Дальше прописал на целевом диске в /etc/lilo.conf

boot=/dev/hdc
disk=/dev/hdc
 bios=0x80
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear

image=/boot/vmlinuz-2.4.18-14
        label=linux
        initrd=/boot/initrd-2.4.18-14.img
        read-only
        root=/dev/hda1
        append="root=/dev/ram0 init=/linuxrc ro"

У меня грузится RAM-диск.
дальше даю 
#lilo -r /mnt/hdc/

Загрузчик устанавливается.
После пытаюсь загрузиться с копии.
У меня ядро не находит файловую систему.
По идее я должен в ядро передать параметр
 append="root=LABEL=/"
Но тогда не будет работать RAM-диск. :(
А у меня там подгружается модулем ext3 - ну я понимаю. :((
но не я делал сервак.
у меня была строчка в /etc/fstab
# LABEL=/1                /                       ext3    defaults        1 1
я ее заменил на
/dev/hda3               /                       ext3    defaults        1 1

Но ничего не помогло. Ядро не может найти откуда монтировать FS.
Диск-копию ставлю как положено, чтоб был /dev/hda.

Как мне передать правильно параметры в ядро ?
На исходном HDD загрузка идет через GRAB, а я не знаю как
заставить GRAB сработать аналогично: 'lilo -r /mnt/hdc'
Как я понимаю вы ГУРУ, помогите пожалуйста, если не сложно. 

Логи посмотрю - интересно, но они у меня на другом диске.

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

> У меня к Вам есть вопросик.

к сожалению, вряд ли смогу вам помочь, никогда
не пользовался initrd.

одна странность:

> Я переписал полностью всю систему на новый HDD.
> Подмонтировал копию:
> #mount -t ext3 /dev/hdc1 /mnt/hdc

то есть, первая партиция

> я ее заменил на
> /dev/hda3               /

а здесь уже три?

честно говоря, _лично_ я бы избавился от initrd вообще.
перекомпилируйте ядро, включите туда ext3 не как модуль,
и эти проблемы исчезнут.

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

Я описался ->  /dev/hda1.
Я понял, спасибо, попробую так и поступить.

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