Я использую этот общий рекурсивный метод:
Предположение об этом методе состоит в том, что если элемент управления T, чем метод не смотрит в его дочерние элементы. Если вам также нужно посмотреть на своих детей, вы можете легко его изменить.
public static IList<T> GetAllControlsRecusrvive<T>(Control control) where T :Control
{
var rtn = new List<T>();
foreach (Control item in control.Controls)
{
var ctr = item as T;
if (ctr!=null)
{
rtn.Add(ctr);
}
else
{
rtn.AddRange(GetAllControlsRecusrvive<T>(item));
}
}
return rtn;
}
Мое предположение - то, что Ваше встроенное микропрограммное обеспечение (по любой причине) только представляет один диск загрузчику, диск, от которого это "загрузилось" (чтение и выполнил код в MBR). Это объясняет, почему, когда sda является первым в начальной загрузке, Вы можете загрузиться, потому что только один диск включен. Необходимо смочь подтвердить это путем выполнения "ls" от рабочей личинки на sda и видеть, что только один диск перечислен.
причина, что Вы не получили "такого раздела" ошибки, состоит в том, что все команды в личинке хранятся в модулях, и если модуль для данной команды еще не был загружен, когда Вы пытаетесь выполнить команду (как "справка"), личинка пытается считать $prefix/help.mod. Когда оказывается, что раздел в $prefix не существует, Вы получаете это сообщение об ошибке. core.img личинки иногда должен помещаться в очень небольшую площадь и таким образом, очень немного модулей включены в него по умолчанию, означая, что очень немного команд доступны, если/boot/grub/не может быть считан. Самые полезные из этих команд перечислены здесь: http://www.gnu.org/software/grub/manual/grub.html#GRUB-only-offers-a-rescue-shell (отмечают что, в то время как простой "ls" может функционировать, "ls-l" и другие опции к ls требуют большего количества модулей).
Я как бит, подозрительный к Вашей подкачке, находящейся на sdb1.... Я мог быть неправым, но.... Я на самом деле не сделал системы, в которой ОС распространена по двум жестким дискам, как является Вашим. Домой на другом диске, да, но подкачке на другом диске, я просто не уверен. Тем более, что первый раздел.
Вы могли бы попытаться загрузиться в опцию 'Try Ubuntu' на карте с интерфейсом USB и шпионить вокруг там. Вы могли также попытаться переустановить личинку оттуда и обновить ее. Я уверен с Вами, опыт, который Вы будете знать, как сделать это.