Тоже было такое предположение. Попробовал вытолкнуть несколько байтов в начале шелл-кода, чтобы уж точно не было записи туда, куда нельзя. В итоге - вместо SIGSEGV - SIGILL.
Спасибо за ответ, все заработало после инициализации переменных. Закономерный вопрос возникает тогда. Каким образом возможна попытка записи в чужую память? Насколько мне известно, имя переменной (если брать из одного кадра стека) эквивалентно адресу памяти, в который будут писаться данные. Выше, в этом-же кадре определена переменная i(непроинициализированна), а цикл for просто обращается и пишет в эту переменную. Логично могу предположить, что все ошибки связаны с тем, что в адресах непроинициализированных переменных лежит какой-то мусор, который и вредит всей программе.
Алексей Черемисин, Попробую. Одного не понимаю - в опциях ядру указывается параметр initrd=/boot/initramfs.img. Как ядро находит этот образ, если не может смонтировать тот раздел, на котором он лежит?
Vitsliputsli, Это понятно. Но мы-же передаем зачем-то путь корневого раздела в опциях ядру, а не загрузчику. Зачем это нужно, ведь initrс скрипт и так знает, что ему нужно монтировать?
В ядре же нет драйверов для ext4. Тогда что будет грузить "детектор оборудования"? И как он узнает о других жестких дисках, если мы указывает только root-раздел? Они, конечно, указаны в fstab, но для этого сначала нужно же корень смонтировать из initrd...
Спасибо за ответ. Вы сказали, что "детектор оборудования" грузит драйвера, но разве в ядре есть драйвера для ext4? И тогда почему мы не указываем пути ко всем жестким дискам, чтобы этот детектор их нашел и подгрузил нужные драйвера? Как я понимаю, это все указано в fstab, но чтобы его прочитать сперва нужно примонтировать настоящий корень, а он монтируется из initrd.
АртемЪ, Перепутал коммутатор с маршрутизатором.
Как я читал, коммутатор, если в его таблице маршрутизации нету того IP, на который узел хочет отправить пакет, то этот коммутатор перекидывает эти пакеты на шлюз. Тут и рождается мое непонимание. С этой точки зрения можно предположить, что тут и не нужно знать "где находится дверь дома", так как тот, кто устраивает экскурсию по дому(коммутатор) и так приведет к этой двери.
Благодарю за ответ, но некоторые моменты остались непонятыми:
1. Получается, маршрутизатор и шлюз могут быть разделены на 2 устройства?
2. Как я читал, маршрутизатор, если в его таблице маршрутизации нету того IP, на который узел хочет отправить пакет, то этот маршрутизатор перекидывает эти пакеты на шлюз. Тут и рождается мое непонимание. С этой точки зрения можно предположить, что тут и не нужно знать "где находится дверь дома", так как тот, кто устраивает экскурсию по дому(маршрутизатор) и так приведет к этой двери.