Перейти к содержимому

(499) 940-40-00 подключение
(499) 940-00-00 служба поддержки

не загружается linux


Сообщений в теме: 14

#1 Angel Of Nemesis

    Прохожий


  • Пользователи
  • 236 сообщений
2
Offline

Отправлено 10 января 2009 - 21:01

Проблема такая: восстановил с уже ранее форматнутого харда раздел с asp linux carbon, вся файловая система там целая, файлы на месте. Но он не загружается, как сделать, чтобы он снова загружался через os selector?

#2 never mind

    только хардкор


  • Пользователи
  • 1 577 сообщений
30
Offline

Отправлено 10 января 2009 - 23:15

загрузиться с любого лайв дистра, сделать chroot в старую ось и переустановить grub.
think different

#3 Angel Of Nemesis

    Прохожий


  • Пользователи
  • 236 сообщений
2
Offline

Отправлено 10 января 2009 - 23:32

Просмотр сообщенияnever mind (Jan 10 2009, 23:23) писал:

загрузиться с любого лайв дистра, сделать chroot в старую ось и переустановить grub.
Не мог бы ты подсказать, как grub переустановить?

#4 never mind

    только хардкор


  • Пользователи
  • 1 577 сообщений
30
Offline

Отправлено 10 января 2009 - 23:45

1. качаешь gentoo minimal cd
2. бутаешься
3. mount /dev/hda5 /mnt/gentoo
4. mount -t proc none /mnt/gentoo/proc
5. mount -o bind /dev /mnt/gentoo/dev
6. chroot /mnt/gentoo /bin/bash
7. не знаю что за пакетный менеджер в asp. переустанавливаешь sys-boot/grub
8. grub
8.1 root (hd0.номер раздела)
8.2 setub (hd0)
8.3 quit
9. exit
10. cd /
11. umount /mnt/gentoo/proc
12. umount /mnt/gentoo/dev
13. umount /mnt/gentoo
14. reboot


Добавлено через 3 мин.:
теоретически пункт 7 можно пропустить
think different

#5 Angel Of Nemesis

    Прохожий


  • Пользователи
  • 236 сообщений
2
Offline

Отправлено 11 января 2009 - 14:26

Что то не вышло ^_^
вместо hda5 там был sda5
Вот как делал:

Сообщение отредактировал Angel Of Nemesis: 11 января 2009 - 14:39


#6 never mind

    только хардкор


  • Пользователи
  • 1 577 сообщений
30
Offline

Отправлено 11 января 2009 - 14:35

блин я ж написал...
grub
root (hd0.номер раздела)
setub (hd0)
quit

think different

#7 Angel Of Nemesis

    Прохожий


  • Пользователи
  • 236 сообщений
2
Offline

Отправлено 11 января 2009 - 14:42

Просмотр сообщенияnever mind (Jan 11 2009, 14:43) писал:

блин я ж написал...
grub
root (hd0.номер раздела)
setub (hd0)
quit
установил (hd0,4). Но в загрузчике ссылка на неверный раздел 0,7

Сообщение отредактировал Angel Of Nemesis: 11 января 2009 - 15:08


#8 never mind

    только хардкор


  • Пользователи
  • 1 577 сообщений
30
Offline

Отправлено 11 января 2009 - 15:44

в смысле? груб опознал фс как ext3, а не unknown? если ты про бут груба, то грузись в консоль восстановления и правь конфиг /boot/grub/grub.conf или /boot/grub/menu.lst

Добавлено через 2 мин.:
setub (hd0) должна выглядеть именно так и никак иначе. ты ставишь граб в главную загрузочную область ХД.

Сообщение отредактировал never mind: 11 января 2009 - 15:42

think different

#9 Angel Of Nemesis

    Прохожий


  • Пользователи
  • 236 сообщений
2
Offline

Отправлено 11 января 2009 - 16:39

Просмотр сообщенияnever mind (Jan 11 2009, 15:52) писал:

в смысле? груб опознал фс как ext3, а не unknown? если ты про бут груба, то грузись в консоль восстановления и правь конфиг /boot/grub/grub.conf или /boot/grub/menu.lst

Добавлено через 2 мин.:
setub (hd0) должна выглядеть именно так и никак иначе. ты ставишь граб в главную загрузочную область ХД.
Не, уже исправил. Поставил на загрузку с hd0,4. Начал грузить и полезли ошибки ФС, т.к. раздел ранее был удален. Вобщем i node table бракован.

#10 never mind

    только хардкор


  • Пользователи
  • 1 577 сообщений
30
Offline

Отправлено 11 января 2009 - 19:31

ну таблицы индексных дескрипторов файлов ты не востановишь. чем мог - тем помог.

Добавлено через 6 мин.:
ознакомься с http://www.opennet.r...s_ext3.txt.html
think different

#11 never mind

    только хардкор


  • Пользователи
  • 1 577 сообщений
30
Offline

Отправлено 11 января 2009 - 20:37

Дано: битый раздел, на котором лежит N месяцев работы. Бэкапов нет.
e2fsck теряет волю, ситуацию усугубляет растущее кол-во badblock-ов на
винте.

livecd storage # e2fsck -n /dev/hdb1
e2fsck 1.38 (30-Jun-2005)
Superblock has an invalid ext3 journal (inode 8).
Clear? no

e2fsck: Illegal inode number while checking ext3 journal for /dev/hdb1


При попытке сказать yes - e2fsck падал по подобию assert(), когда искал root, к
орневая директория была куском нулей

livecd storage # debugfs -c /dev/hdb1
debugfs 1.38 (30-Jun-2005)
/dev/hdb1: catastrophic mode - not reading inode or group bitmaps
debugfs: show_super_stats -h
...
Inode count: 7340032
Block count: 14659304
...


Узнаем свободные inode и получаем листинг условно-живых директорий

livecd storage # for ((i=2; $i <= 7340032; i++)); do echo testi '<'$i'>'; done
> testi.in
livecd storage # debugfs -f testi.in /dev/hdb1 > testi.out
livecd storage # grep 'Inode [0-9]* is marked in use' testi.out | grep -E -o '[
0-9]+' > used.inodes
livecd storage # cat used.inodes | sed 's,.*,ls <&>,' > ls.in
livecd storage # debugfs -f ls.in /dev/hdb1 > ls.out
livecd storage # bzip2 -c ls.out > ls.out.bz2


Крайне полезно этот ls.out залить в sql-базу (например так), чтобы
шустро собирать по нему статистику... У меня размер основной таблицы
entries (inode, name, curdir, size) индексированной базы (схема
прилагается) получился под 100 мегабайт с 60гигового раздела.

Затем можно пополнить базу следующими (НЕ абсолютно верными)
наблюдениями:

INSERT INTO directories SELECT inode, curdir FROM entries
GROUP BY inode HAVING COUNT(*) > 1;

INSERT INTO inodes SELECT inode, COUNT(*) FROM entries GROUP BY inode;

INSERT INTO broken_dirs SELECT entries.inode FROM entries
LEFT JOIN entries AS dirs ON (dirs.inode = entries.inode AND dirs.name = '.')
WHERE entries.name = '..' AND dirs.name IS NULL GROUP BY entries.inode;

INSERT INTO hardlinks SELECT inodes.inode FROM inodes
LEFT JOIN entries ON (inodes.inode = entries.inode AND (entries.name IN ('.', '..')))
WHERE nlink > 1 AND entries.name IS NULL;


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

Теперь ищем детей / (inode-2) и возвращаем их на место

mysql> select * from entries where inode = 2;
+-------+---------+------+------+
| inode | curdir | name | size | # комментарий, изходя из содержания
+-------+---------+------+------+
| 2 | 2392065 | .. | 12 | /var
| 2 | 6275073 | .. | 12 | /home
...
+-------+---------+------+------+
17 rows in set (0.00 sec)

mysql> select * from entries where curdir = 2392065;
+---------+---------+---------+------+
| inode | curdir | name | size |
+---------+---------+---------+------+
| 2392065 | 2392065 | . | 12 |
| 2 | 2392065 | .. | 12 |
| 2392066 | 2392065 | lock | 12 |
| 2392067 | 2392065 | run | 12 |
| 2392068 | 2392065 | backups | 16 |
| 2392069 | 2392065 | cache | 16 |
... # да, это явно /var
+---------+---------+---------+------+
15 rows in set (0.03 sec)

debugfs: clri <2>
debugfs: set_inode_field <2> mode 040755
debugfs: set_inode_field <2> links_count 17
debugfs: find_free_block 1
Free blocks found: 33869
debugfs: set_inode_field <2> bmap[0] 33869
debugfs: set_inode_field <2> blocks 8
debugfs: mkdir <2>
debugfs: ls <2>
12 (12) . 2 (12) .. 12 (4072) <2>
debugfs: unlink <2>/<2>
debugfs: unlink <2>/.
debugfs: unlink <2>/..
debugfs: ls
0 (4096) .
debugfs: ln <2> <2>/.
debugfs: ln <2> <2>/..
debugfs: ls
2 (12) . 2 (4084) ..
debugfs: ln <2392065> <2>/var
skipped
debugfs: ln <6275073> <2>/home
debugfs: ^D
livecd ~ # e2fsck /dev/hda1


А потом устраиваем большое переименование /lost+found

livecd ~ # ls /mnt/slave/lost+found | { echo "lock tables lostnfound
write;" ; sed 's,#,,;s,.*,insert into lostnfound values(&);,'; } |
mysql ext2backup

livecd ~ # { echo "select inode, curdir, name from lostnfound inner
join entries using (inode) where name != '.' and name != '..';" |
mysql ext2backup | while read inode curdir name; do
base="/mnt/slave/smth-found"; echo "mkdir -p \"$base/#$curdir\"; mv
\"/mnt/slave/lost+found/#${inode}\" \"$base/#$curdir/$name\""; done; }
| sed 1d > renamer.sh

livecd ~ # { echo "select lostnfound.inode as lostinode,
if(parent.name <=> null, concat('#', entries.inode), parent.name) from
lostnfound inner join entries on (entries.name = '..' and curdir =
lostnfound.inode) left join entries as parent on (parent.name != '.'
and parent.name != '..' and parent.inode = entries.inode);" | mysql
ext2backup | while read inode curdir; do base="/mnt/slave/smth-found";
echo "mkdir -p \"$base/$curdir\"; mv
\"/mnt/slave/lost+found/#${inode}\" \"$base/$curdir/#$inode\""; done;
} | sed 1d > renamer.sh


После чего почти все в почти читаемом виде с ФС почти восстановлено (в
lost+found у меня осталось после данной махинации процентов 15% от
первоначального объема).


debugfs-ls-scan.pl

#!/usr/bin/perl
use DBI;
use strict;
my $db = DBI->connect("dbi:mysql:database=ext2backup", "root", "")
or die $DBI::errstr;
my $inserter = $db->prepare(
"INSERT INTO `entries`(`inode`,`curdir`,`name`, `size`) VALUES (?,?,?,?)");
my $counter = 0;
my $curdir = undef;
while (<>) {
my @chunks = split / /;
foreach my $chunk (@chunks) {
$chunk =~ s/ +$//;
if ($chunk =~ /^ ?([0-9]+) \(([0-9]+)\) (.*)$/) {
my ($inode, $size, $name) = ($1, $2, $3);
if ($name eq ".") {
$curdir = $inode;
}
# print "($inode, $size, $name) at $curdir\n";
$inserter->execute($inode, $curdir, $name, $size)
or die $DBI::errstr;
}
else {
die "Invalid chunk: $chunk"
}
}
$counter++;
if (($counter % 100) == 0) {
print "$counter lines...\n";
}
}

# vim:set tabstop=4 softtabstop=4 shiftwidth=4:
# vim:set foldmethod=marker foldlevel=32 foldmarker={,}:



debugfs-mysql-schema.sql

-- MySQL dump 10.10
--
-- Host: localhost Database: ext2backup
-- ------------------------------------------------------
-- Server version 5.0.22-Debian_0ubuntu6.06.2-log

--
-- Table structure for table `broken_dirs`
--

DROP TABLE IF EXISTS `broken_dirs`;
CREATE TABLE `broken_dirs` (
`inode` int(11) NOT NULL,
PRIMARY KEY (`inode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Table structure for table `entries`
--

DROP TABLE IF EXISTS `entries`;
CREATE TABLE `entries` (
`inode` int(11) NOT NULL,
`curdir` int(11) NOT NULL,
`name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
`size` int(11) NOT NULL,
KEY `inode` (`inode`),
KEY `curdir` (`curdir`),
KEY `name` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Table structure for table `hardlinks`
--

DROP TABLE IF EXISTS `hardlinks`;
CREATE TABLE `hardlinks` (
`inode` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Table structure for table `inodes`
--

DROP TABLE IF EXISTS `inodes`;
CREATE TABLE `inodes` (
`inode` int(11) NOT NULL,
`nlink` int(11) NOT NULL,
PRIMARY KEY (`inode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Table structure for table `lostnfound`
--

DROP TABLE IF EXISTS `lostnfound`;
CREATE TABLE `lostnfound` (
`inode` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
think different

#12 Xlynx


  • Гости
Offline

Отправлено 23 февраля 2009 - 19:51

Забавная штука debugfs .
debugfs mi <номер в inode>
И меняем там размер файла ( 700 м --> 70м ) После этого на любой файлообменник эти условно 70м закачиваются одной частью :)

#13 Angel Of Nemesis

    Прохожий


  • Пользователи
  • 236 сообщений
2
Offline

Отправлено 25 апреля 2010 - 11:27

Просмотр сообщенияXlynx (Feb 23 2009, 20:50) писал:

Забавная штука debugfs .
debugfs mi <номер в inode>
И меняем там размер файла ( 700 м --> 70м ) После этого на любой файлообменник эти условно 70м закачиваются одной частью ;)
здорово)

Ну, этот топик тоже не нужен, переустановил, переделал линукс как был и зарезервировал.

Сообщение отредактировал Angel Of Nemesis: 25 апреля 2010 - 11:28


#14 typp

    Осматривающийся


  • Пользователи
  • 88 сообщений
4
Offline

Отправлено 15 февраля 2012 - 11:36

archlinux-2011.08.19-core-i686.iso

возникла проблема: ставлю ее на компьютер, в процессе установки в предпоследнем пункте появляется черный экран настройки загрузчика grub - что там вводить и как выйти оттуда ума не приложу, нужна помощь. Если просто перезагрузить компьютер - появляется надпись на экране " не найден загрузчик".
мне б ссылку или команду, для решения проблемы.

#15 never mind

    только хардкор


  • Пользователи
  • 1 577 сообщений
30
Offline

Отправлено 10 марта 2012 - 21:32

странно. именно консоль? просто bash или консоль самого grub? на сколько я помню инсталятор арча только должен уточнить на mbr какого винта пихнуть загрузчик. нужно больше информации. не получается обрисовать ситуацию на словах - было бы круто увидеть фотку монитора
think different





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных