почему мой модуль настолько велик?

Один

Откройте файл /boot/grub/grub.cfg и найдите раздел, который загружает ваш «обычный» Ubuntu.

Для меня это:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /boot/vmlinuz-4.13.0-39-generic.efi.signed root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 ro  
        initrd  /boot/initrd.img-4.13.0-39-generic
}
[d3 ] Скопируйте этот раздел в новый файл, скажем textmode.txt.

Два

Перейдите к /etc/grub.d и создайте (или отредактируйте) файл 40_custom.

Скопируйте в файл следующий «заголовок»:

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

Добавьте пункт меню из textmode.txt в файл, но измените некоторые значения (см. ниже):

menuentry 'Ubuntu (text mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /vmlinuz root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 systemd.unit=multi-user.target ro
        initrd  /initrd.img
}
8] Значения, которые необходимо изменить:

Текст меню: измените его с 'Ubuntu' на 'Ubuntu (text mode)' (или все, что вам нравится, чтобы появиться в меню) Линия linux: измените его к linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro. Убедитесь, что UUID остается неизменным. Строка initrd: измените ее на /initrd.img

Убедитесь, что у вас есть символические ссылки в каталоге / от /vmlinuz и /initrd.img до текущих версий.

Три

Выполнить

sudo update-grub

Разница между этим подходом и этим ответом на очень похожий вопрос заключается в том, что в последнее время версии Ubuntu, строка

linux   /boot/vmlinuz-3.8.0-31-generic root=UUID=... ro quiet splash $vt_handoff

должна быть заменена на

linux   /vmlinuz root=UUID=... systemd.unit=multi-user.target ro

Я не уверен, что последнее на самом деле означает, но я думаю, что это 16.04, когда была введена система. [ ! d20]

5
задан 20 February 2012 в 08:51

1 ответ

Вероятно, ваши модули ядра содержат отладочную информацию. Если вы установите для переменной среды INSTALL_MOD_STRIP значение 1 при установке модулей, отладочная информация будет удалена.

6
ответ дан 25 May 2018 в 14:07
  • 1
    Удивительно, где вы нашли эту информацию, я сделал быстрый grep через выход make help, и я ничего не нашел – vanjoe 20 February 2012 в 12:42
  • 2
    Вы можете найти информацию о различных переменных среды, которые влияют на процесс сборки в документации ядра: lxr.linux.no/#linux/Documentation/kbuild/kbuild.txt – James Henstridge 20 February 2012 в 13:21

Другие вопросы по тегам:

Похожие вопросы: