我有一个基于 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 的非常清晰的文档。
有什么提示吗?
答案1
我设法通过 debootstrap 解决了我的问题,这里是我所遵循的过程的快速概述。
- 卸载USB
对 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.
mkfs.ext4 /dev/sdb1
- 挂载 /dev/sdb1 /media/usb
debootstrap jessie /媒体/USBhttp://my.mirror/debian
I highly recommend setting up something like apt-cacher
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
编辑 /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
家政:
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
安装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
现在编辑/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
编辑 /etc/default/console-setup :
CODESET="guess" FONTFACE= FONTSIZE= VIDEOMODE=
创建 /etc/kernel-img.conf 并在其中包含以下内容:
image_dest = / do_symlinks = yes do_bootloader = yes do_bootfloppy = no do_initrd = yes link_in_boot = no
现在使用 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
重启前要做的其他事情(可选)
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
在此阶段,我可以在目标嵌入式系统上启动 USB,并再次重复整个过程以在 SATA 驱动器上安装 debian。显然,我需要首先在 USB 驱动器上安装 debootstrap 之类的东西来促进这一点,但这只是次要的。
答案2
您可以通过以下方式激活 Debian 安装程序的网络控制台预播。安装指南实际上包含以下内容例子:
# Use the following settings if you wish to make use of the network-console # component for remote installation over SSH. This only makes sense if you # intend to perform the remainder of the installation manually. #d-i anna/choose_modules string network-console #d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key #d-i network-console/password password r00tme #d-i network-console/password-again password r00tme
您必须取消注释该anna/choose_modules
设置。如果您想使用 SSH 密钥登录,请通过某个 URL 访问公钥并取消注释该network-console/authorized_keys_url
设置。如果您想使用密码,请取消注释其他两项设置。
当然,您还必须预先准备好前面的所有问题,因为在按上述设置启动网络控制台之前,您没有界面可以回答这些问题。在 DHCP 环境中,这意味着您还需要类似的东西
d-i debian-installer/language string en d-i debian-installer/country string US d-i debian-installer/locale string en_US.UTF-8 d-i keyboard-configuration/xkb-keymap select us
preseed.cfg
您可以在内核命令行上提供所有这些设置,而不是向 initrd添加文件(您的引导加载程序可能不直接支持)
linux language=en country=US locale=en_US.UTF-8 keymap=us anna/choose_modules=network-console network-console/authorized_keys_url="http://..." initrd=initrd.gz
(参见缩略语表)。