updates
[KenyonWiki.git] / Debian.mdwn
1 This is my [Debian](http://debian.org/) page.
2
3 [[!toc levels=2]]
4
5 ## Serial port card
6 It took a lot of time to figure out how to get this two-port serial interface card working, so I wanted to document it here for everyone's benefit.
7
8 Here is the card I got from Amazon: [Syba SD-PCI-2S PCI 32-Bit 2x Port Serial DB9 PCIe x1 Card](http://a.co/29bam5S)
9
10 I'm using it with Debian GNU/Linux 9.4 (stretch) and kernel 4.9.88-1+deb9u1 (2018-05-07). Do not use the driver from ASIX Corporation. There is no need for that because the driver is part of the standard Linux kernel these days.
11
12 Without any special configuration, the first port is detected by the kernel and works fine, but not the second port, even though you can see it in `lspci` output.
13
14 The key to getting both serial ports working is to use `setserial` from the [[!debpkg setserial]] package to configure the serial ports. Here is my `/etc/serial.conf`:
15
16     /dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
17     /dev/ttyS1 uart 16650V2 port 0xe000 irq 19 baud_base 115200 spd_normal skip_test
18     /dev/ttyS2 uart 16650V2 port 0xe010 irq 18 baud_base 115200 spd_normal skip_test
19     # have to also do autoconfig to get this second port working
20     /dev/ttyS2 autoconfig
21
22 `ttyS0` is some serial port on my motherboard that is not externally exposed, so it's useless. `ttyS1` and `ttyS2` are the interfaces of the Syba MosChip card. With this `setserial` configuration, both ports are detected and working on boot. For example, accessing the serial console of an Ubiquiti EdgeRouter: `screen /dev/ttyS1 115200`
23
24 Output of `lspci -vv`, for reference:
25
26     02:00.0 Serial controller: Device 0310:9922 (prog-if 02 [16550])
27             Subsystem: Device a000:1000
28             Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
29             Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
30             Interrupt: pin A routed to IRQ 18
31             Region 0: I/O ports at e010 [size=8]
32             Region 1: Memory at f7c03000 (32-bit, non-prefetchable) [size=4K]
33             Region 5: Memory at f7c02000 (32-bit, non-prefetchable) [size=4K]
34             Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
35                     Address: 0000000000000000  Data: 0000
36             Capabilities: [78] Power Management version 3
37                     Flags: PMEClk- DSI- D1- D2- AuxCurrent=320mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
38                     Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
39             Capabilities: [80] Express (v1) Legacy Endpoint, MSI 00
40                     DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <1us, L1 <2us
41                             ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
42                     DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
43                             RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
44                             MaxPayload 128 bytes, MaxReadReq 512 bytes
45                     DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
46                     LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 unlimited
47                             ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
48                     LnkCtl: ASPM L0s Enabled; RCB 64 bytes Disabled- CommClk-
49                             ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
50                     LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
51             Capabilities: [100 v1] Virtual Channel
52                     Caps:   LPEVC=0 RefClk=100ns PATEntryBits=1
53                     Arb:    Fixed- WRR32- WRR64- WRR128-
54                     Ctrl:   ArbSelect=Fixed
55                     Status: InProgress-
56                     VC0:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
57                             Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
58                             Ctrl:   Enable+ ID=0 ArbSelect=Fixed TC/VC=01
59                             Status: NegoPending- InProgress-
60                     VC1:    Caps:   PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
61                             Arb:    Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
62                             Ctrl:   Enable- ID=1 ArbSelect=Fixed TC/VC=00
63                             Status: NegoPending- InProgress-
64             Capabilities: [800 v1] Advanced Error Reporting
65                     UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
66                     UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
67                     UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
68                     CESta:  RxErr+ BadTLP- BadDLLP- Rollover+ Timeout+ NonFatalErr+
69                     CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
70                     AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
71
72     02:00.1 Serial controller: MosChip Semiconductor Technology Ltd. MCS9922 PCIe Multi-I/O Controller (prog-if 02 [16550])
73             Subsystem: Device a000:1000
74             Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
75             Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
76             Latency: 0, Cache Line Size: 32 bytes
77             Interrupt: pin B routed to IRQ 19
78             Region 0: I/O ports at e000 [size=8]
79             Region 1: Memory at f7c01000 (32-bit, non-prefetchable) [size=4K]
80             Region 5: Memory at f7c00000 (32-bit, non-prefetchable) [size=4K]
81             Capabilities: [50] MSI: Enable- Count=1/8 Maskable- 64bit+
82                     Address: 0000000000000000  Data: 0000
83             Capabilities: [78] Power Management version 3
84                     Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0-,D1-,D2-,D3hot+,D3cold+)
85                     Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
86             Capabilities: [80] Express (v1) Legacy Endpoint, MSI 00
87                     DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <1us, L1 <2us
88                             ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
89                     DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
90                             RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
91                             MaxPayload 128 bytes, MaxReadReq 512 bytes
92                     DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
93                     LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s <64ns, L1 unlimited
94                             ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp-
95                     LnkCtl: ASPM L0s Enabled; RCB 64 bytes Disabled- CommClk-
96                             ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
97                     LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
98             Capabilities: [100 v1] Advanced Error Reporting
99                     UESta:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
100                     UEMsk:  DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
101                     UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
102                     CESta:  RxErr+ BadTLP- BadDLLP- Rollover+ Timeout+ NonFatalErr+
103                     CEMsk:  RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
104                     AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
105             Kernel driver in use: serial
106
107
108 ## debconf
109 Make it so all questions are asked: `sudo dpkg-reconfigure debconf` and answer lowest priority.
110
111 ## disable console beep
112 [[!format sh """
113 modprobe -r pcspkr
114 echo blacklist pcspkr >> /etc/modprobe.d/blacklist.conf
115 """]]
116
117 Set 'bell-style' to 'none' in `/etc/inputrc`.
118
119 `setterm -blength 0`
120
121 ### See also
122 * [Removing annoying console beeps](http://www.debian-administration.org/articles/110)
123
124 ## Rebuilding Debian packages
125 This is just my local, condensed version of [Raphaël Hertzog's](http://raphaelhertzog.com/) article [Howto to rebuild Debian packages](http://raphaelhertzog.com/2010/12/15/howto-to-rebuild-debian-packages/).
126
127 1. `apt-get source ntp`
128 1. `sudo apt-get build-dep ntp`
129 1. Make changes to package (or not). If changes were made, use `dch --local foo` to record a changelog entry and increase the version.
130 1. `debuild`
131 1. `dput local whatever.changes` or just install the resulting deb with `gdebi`.
132
133 ## Local Debian package repository
134 Here is how I created a local Debian package repository, also called an archive, using [[!debpkg mini-dinstall]].
135
136 ### ~/.mini-dinstall.conf
137     [DEFAULT]
138     architectures = all, amd64
139     archivedir = ~/repo
140     archive_style = flat
141     generate_release = 1
142     release_signscript = ~/bin/sign-release.sh
143     [squeeze]
144     alias = stable
145
146 Run `mini-dinstall --batch` to initialize the repository.
147
148 ### ~/bin/sign-release.sh
149 [[!format bash """
150 #!/bin/bash
151 # -*- coding: utf-8 -*-
152 # Based on Sample script to GPG sign Release files
153 # Copyright © 2002 Colin Walters <walters@debian.org>
154 # License: GPLv2
155 set -e
156 KEYID=0x98FF3EF9C9B912D5
157 rm -f Release.gpg.tmp
158 gpg --default-key "$KEYID" --detach-sign -o Release.gpg.tmp "$1"
159 mv Release.gpg.tmp Release.gpg
160 """]]
161
162 Now `gpg --armor --export 0xc9b912d5 | sudo apt-key add -` to get APT to trust the local repository.
163
164 ### ~/.dput.cf
165     [local]
166     method = local
167     run_dinstall = 0
168     post_upload_command = mini-dinstall --batch
169     incoming = ~/repo/mini-dinstall/incoming
170
171 Run `dput local pkg.changes` to upload the package to the repository.
172
173 ### ~/.devscripts
174 [[!format bash """
175 DEBUILD_DPKG_BUILDPACKAGE_OPTS="-k0x98FF3EF9C9B912D5 -sa"
176 DSCVERIFY_KEYRINGS="~/.gnupg/pubring.gpg"
177 """]]
178
179 ### sources.list entries
180     deb file:///home/kenyon/repo squeeze/
181     deb-src file:///home/kenyon/repo squeeze/
182
183 Now after a `sudo aptitude update` you should be able to install packages from the local repository.
184
185 ### References
186 * manual pages and `/usr/share/doc` (read with `debmany` from [[!debpkg debian-goodies]]: sources.list, mini-dinstall, dput
187 * <http://wiki.freegeek.org/index.php/Debian_Package_Repositories>
188 * <http://upsilon.cc/~zack/blog/posts/2009/04/howto:_uploading_to_people.d.o_using_dput/>
189 * <http://wiki.debian.org/HowToSetupADebianRepository>
190
191 ## External links
192 * <http://debian.org/>
193
194 [[!tag Debian Linux]]