使用串行控制台或网络控制台 (PCH) 在嵌入式系统上安装 Debian

Hei*_*oit 2 embedded debian system-installation debootstrap

我有一个基于 Intel-Atom 和 PCH 的嵌入式系统,我们正忙于开发。在嵌入式环境中,我有:

  • 通过 PCH 的串行控制台,这意味着这不适用于标准内核。(按CONFIG_SERIAL_PCH_UART_CONSOLE要求)
  • SATA 驱动器仅适用于嵌入式环境,无法取出安装。
  • 我可以通过USB驱动器启动。
  • 该系统确实通过 PCH 具有以太网,我尚未确认它可以工作。

我已经成功构建了一个自定义的 Linux 3.16.7 内核,它可以启动,console=uartPCH0,115200然后在串行线路上显示一个控制台。

但是,从这里移动到实际安装似乎是有问题的。我无法说服使用我的自定义内核构建 debian-installer。

我目前的理论是一个双引导过程,我首先将安装引导到 USB 驱动器,然后引导它,然后将安装引导到系统上的 SATA 驱动器?有什么更好的建议吗?

我不确定是否有某种方法可以通过网络控制台进行安装?

该系统需要 e1000e 驱动程序,我认为它将内置到标准 debian 安装程序 ISO 中,但是到目前为止,我无法找到有关如何说服安装系统启动然后打开 ssh/telnet 的非常明确的文档。

任何提示?

Hei*_*oit 5

我设法用 debootstrap 解决了我的问题,这里是我遵循的过程的简要说明。

  1. 卸载usb
  2. 对 USB (4GB) 进行分区

    Zap out GPT with gdisk, as my board didn't want to boot GPT.
    Created just one linux partition, nothing else.
    I had lots of problems getting a usb drive bootable on my embedded system.        
    
    Run Code Online (Sandbox Code Playgroud)
  3. mkfs.ext4 /dev/sdb1

  4. 挂载 /dev/sdb1 /media/usb
  5. debootstrap jessie /media/usb http://my.mirror/debian

    I highly recommend setting up something like apt-cacher
    
    Run Code Online (Sandbox Code Playgroud)
  6. chroot /媒体/ USB

    Mount all these: 
    mount -t devtmpfs dev /dev
    mount -t devpts devpts /dev/pts
    mount -t proc proc /proc
    mount -t sysfs sysfs /sys
    
    Run Code Online (Sandbox Code Playgroud)
  7. 编辑 /etc/fstab :(我通常使用 nano 进行编辑)

    proc /proc proc defaults 0 0
    sysfs /sys sysfs defaults 0 0
    UUID=xxxx / ext4 errors=remount-ro 0 1
    
    to write UUID into file use: blkid -o value -s UUID /dev/sdb1 >> /etc/fstab
    
    Run Code Online (Sandbox Code Playgroud)
  8. 家政:

    apt-get install locales
    dpkg-reconfigure locales
    apt-get install console-setup
    dpkg-reconfigure keyboard-configuration (optional?)
    apt-get install console-data
    passwd root
    adduser linuxuser
    
    Run Code Online (Sandbox Code Playgroud)
  9. 安装 grub 和内核

    apt-get install grub-pc
    I installed grub into both /dev/sdb and /dev/sdb1 but you can use install-mbr for /dev/sdb I think
    apt-get install linux-image-686-pae
    
    Run Code Online (Sandbox Code Playgroud)
  10. 现在编辑/etc/default/grub:

    uncomment GRUB_TERMINAL=console
    add GRUB_GFXPAYLOAD_LINUX=text
    to GRUB_CMDLINE_LINUX_DEFAULT add: console=tty0 console=ttyPCH0,115200
    run upgrade-grub2 
    
    Run Code Online (Sandbox Code Playgroud)
  11. 编辑 /etc/default/console-setup :

    CODESET="guess"
    FONTFACE=
    FONTSIZE=
    VIDEOMODE=
    
    Run Code Online (Sandbox Code Playgroud)
  12. 在里面创建 /etc/kernel-img.conf :

    image_dest = /
    do_symlinks = yes
    do_bootloader = yes
    do_bootfloppy = no
    do_initrd = yes
    link_in_boot = no
    
    Run Code Online (Sandbox Code Playgroud)
  13. 现在使用 dpkg -i 安装自定义内核

    For me 2 options was important:
    CONFIG_SERIAL_PCH_UART=y
    CONFIG_SERIAL_PCH_UART_CONSOLE=y
    although I did highly customize the kernel after that.
    Currently I am compiling 3.14 with the rt-patch from linux-source-3.14 I downloaded out of wheezy-backports
    
    Run Code Online (Sandbox Code Playgroud)
  14. 重启前要做的其他事情(可选)

    edit /etc/modules to force drivers to load
    edit /etc/network/interfaces
    echo myHostName > /etc/hostname
    apt-get install telnetd
    apt-get install openssh-server
    
    Run Code Online (Sandbox Code Playgroud)

在这个阶段,我可以在目标嵌入式系统上启动 USB 并再次重复整个过程以在 SATA 驱动器上安装 debian。显然,我需要先在 USB 驱动器上安装 debootstrap 之类的东西来促进这一点,但这并不重要。