<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Suse on TurboVision</title>
    <link>https://turbovision.in6-addr.net/tags/suse/</link>
    <description>Recent content in Suse on TurboVision</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 21 Apr 2026 14:06:12 +0000</lastBuildDate>
    <atom:link href="https://turbovision.in6-addr.net/tags/suse/index.xml" rel="self" type="application/rss&#43;xml" />
    
    
    
    <item>
      <title>Early VMware Betas on a Pentium II: When Windows NT Ran Inside SuSE</title>
      <link>https://turbovision.in6-addr.net/linux/early-vmware-betas-on-a-pentium-ii-when-windows-nt-ran-inside-suse/</link>
      <pubDate>Fri, 03 Apr 2009 00:00:00 +0000</pubDate>
      <lastBuildDate>Fri, 03 Apr 2009 00:00:00 +0000</lastBuildDate>
      <guid>https://turbovision.in6-addr.net/linux/early-vmware-betas-on-a-pentium-ii-when-windows-nt-ran-inside-suse/</guid>
      <description>&lt;p&gt;Some technical memories do not fade because they were elegant. They stay because they felt impossible at the time.&lt;/p&gt;
&lt;p&gt;For me, one of those moments happened on a trusty Intel Pentium II at 350 MHz: early VMware beta builds on SuSE Linux, with Windows NT running inside a window. Today this sounds normal enough that younger admins shrug. Back then it felt like seeing tomorrow leak through a crack in the wall.&lt;/p&gt;
&lt;p&gt;This is not a benchmark article. This is a field note from the era when virtualization moved from &amp;ldquo;weird demo trick&amp;rdquo; to &amp;ldquo;serious operational tool,&amp;rdquo; one late-night experiment at a time.&lt;/p&gt;
&lt;h2 id=&#34;before-virtualization-felt-practical&#34;&gt;Before virtualization felt practical&lt;/h2&gt;
&lt;p&gt;In the 90s and very early 2000s, common service strategy for small teams was straightforward:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one service, one box, if possible&lt;/li&gt;
&lt;li&gt;maybe two services per box if you trusted your luck&lt;/li&gt;
&lt;li&gt;&amp;ldquo;testing&amp;rdquo; often meant touching production carefully and hoping rollback was simple&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hardware was expensive relative to team budgets, and machine diversity created endless compatibility work. If you needed a Windows-specific utility and your core ops stack was Linux, you either kept a separate Windows machine around or you dual-booted and lost rhythm every time.&lt;/p&gt;
&lt;p&gt;Dual-boot is not just inconvenience. It is context-switch tax on engineering.&lt;/p&gt;
&lt;h2 id=&#34;the-first-time-nt-booted-inside-linux&#34;&gt;The first time NT booted inside Linux&lt;/h2&gt;
&lt;p&gt;The first successful NT boot inside that SuSE host is still vivid:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU fan louder than it should be&lt;/li&gt;
&lt;li&gt;CRT humming&lt;/li&gt;
&lt;li&gt;disk LED flickering in hard, irregular bursts&lt;/li&gt;
&lt;li&gt;my own disbelief sitting somewhere between curiosity and panic&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I remember thinking, &amp;ldquo;This should not work this smoothly on this hardware.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Was it fast? Not by modern standards. Was it usable? Surprisingly yes for admin tasks, compatibility checks, and software validation that previously required physical machine juggling.&lt;/p&gt;
&lt;p&gt;The emotional impact mattered. You could feel a new operations model arriving:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;isolate legacy dependencies&lt;/li&gt;
&lt;li&gt;test risky changes safely&lt;/li&gt;
&lt;li&gt;snapshot-like rollback mindset&lt;/li&gt;
&lt;li&gt;consolidate lightly loaded services&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A new infrastructure model suddenly had a shape.&lt;/p&gt;
&lt;h2 id=&#34;why-this-mattered-to-linux-first-geeks&#34;&gt;Why this mattered to Linux-first geeks&lt;/h2&gt;
&lt;p&gt;For Linux operators in that 1995-2010 transition, virtualization solved very specific pain:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keep Linux as host control plane&lt;/li&gt;
&lt;li&gt;run Windows-only dependencies without dedicating separate hardware&lt;/li&gt;
&lt;li&gt;reduce &amp;ldquo;special snowflake server&amp;rdquo; count&lt;/li&gt;
&lt;li&gt;rehearse migrations without touching production first&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This was not ideology. It was practical engineering under budget pressure.&lt;/p&gt;
&lt;h2 id=&#34;the-machine-constraints-made-us-better-operators&#34;&gt;The machine constraints made us better operators&lt;/h2&gt;
&lt;p&gt;Running early virtualization on a Pentium II/350 forced discipline:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;memory was finite enough to hurt&lt;/li&gt;
&lt;li&gt;disk throughput was visibly limited&lt;/li&gt;
&lt;li&gt;poor guest tuning punished host responsiveness immediately&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You learned resource budgeting viscerally:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;host must remain healthy first&lt;/li&gt;
&lt;li&gt;guest allocation must reflect actual workload&lt;/li&gt;
&lt;li&gt;disk layout and swap behavior decide stability&lt;/li&gt;
&lt;li&gt;&amp;ldquo;just add RAM&amp;rdquo; is not always available&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These constraints built habits that still pay off on modern hosts.&lt;/p&gt;
&lt;h2 id=&#34;early-host-setup-principles-that-worked&#34;&gt;Early host setup principles that worked&lt;/h2&gt;
&lt;p&gt;On these older Linux hosts, stability came from a few rules:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;keep host services minimal&lt;/li&gt;
&lt;li&gt;reserve memory for host operations explicitly&lt;/li&gt;
&lt;li&gt;use predictable storage paths for VM images&lt;/li&gt;
&lt;li&gt;separate experimental guests from critical data volumes&lt;/li&gt;
&lt;li&gt;monitor load and I/O wait, not just CPU percentage&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A conceptual host prep checklist looked like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ ] host kernel and modules known-stable for your VMware beta build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ ] enough free RAM after host baseline services start
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ ] dedicated VM image directory with free-space headroom
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ ] swap configured, but not treated as performance strategy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[ ] console access path tested before heavy experimentation&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;None of this is glamorous. All of it prevents lockups and bad nights.&lt;/p&gt;
&lt;h2 id=&#34;the-nt-guest-use-cases-that-justified-the-effort&#34;&gt;The NT guest use cases that justified the effort&lt;/h2&gt;
&lt;p&gt;In our environment, Windows NT guests were not vanity installs. They handled concrete compatibility needs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;testing line-of-business tools that had no Linux equivalent&lt;/li&gt;
&lt;li&gt;validating file/print behavior before mixed-network cutovers&lt;/li&gt;
&lt;li&gt;running legacy admin utilities during migration projects&lt;/li&gt;
&lt;li&gt;reproducing customer-side issues in a controlled sandbox&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This meant less dependence on rare physical machines and fewer risky &amp;ldquo;test in production&amp;rdquo; moments.&lt;/p&gt;
&lt;h2 id=&#34;performance-truth-no-miracles-but-enough-value&#34;&gt;Performance truth: no miracles, but enough value&lt;/h2&gt;
&lt;p&gt;Let us be honest about the period hardware:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;boot times were not instant&lt;/li&gt;
&lt;li&gt;disk-heavy operations could stall&lt;/li&gt;
&lt;li&gt;GUI smoothness depended on careful expectation management&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yet the value proposition still won because the alternative was worse:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;more hardware to maintain&lt;/li&gt;
&lt;li&gt;slower testing loops&lt;/li&gt;
&lt;li&gt;higher migration risk&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In operations, &amp;ldquo;fast enough with isolation&amp;rdquo; often beats &amp;ldquo;native speed with fragile process.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;snapshot-mindset-before-snapshots-were-routine&#34;&gt;Snapshot mindset before snapshots were routine&lt;/h2&gt;
&lt;p&gt;Even with primitive feature sets, virtualization changes how we think about change risk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;make copy/backup before risky config change&lt;/li&gt;
&lt;li&gt;test patch path in guest clone first when feasible&lt;/li&gt;
&lt;li&gt;treat guest image as recoverable artifact, not sacred snowflake&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This was the beginning of infrastructure reproducibility culture for many small teams.&lt;/p&gt;
&lt;p&gt;You can draw a straight line from these habits to modern immutable infrastructure ideas.&lt;/p&gt;
&lt;h2 id=&#34;incident-story-the-host-freeze-that-taught-priority-order&#34;&gt;Incident story: the host freeze that taught priority order&lt;/h2&gt;
&lt;p&gt;One weekend we overcommitted memory to a guest while also running heavy host-side file operations. Result:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;host responsiveness collapsed&lt;/li&gt;
&lt;li&gt;guest became unusable&lt;/li&gt;
&lt;li&gt;remote admin path lagged dangerously&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We recovered without data loss, but it changed policy immediately:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;host reserve memory threshold documented and enforced&lt;/li&gt;
&lt;li&gt;guest profile templates by workload class&lt;/li&gt;
&lt;li&gt;heavy guest jobs scheduled off peak&lt;/li&gt;
&lt;li&gt;emergency console procedure printed and tested&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Virtualization did not remove operations discipline. It demanded better discipline.&lt;/p&gt;
&lt;h2 id=&#34;why-early-vmware-felt-like-cool-as-hell&#34;&gt;Why early VMware felt like &amp;ldquo;cool as hell&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;The phrase is accurate. Seeing NT inside SuSE on that Pentium II was cool as hell.&lt;/p&gt;
&lt;p&gt;But the deeper excitement was not novelty. It was leverage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one host, multiple controlled contexts&lt;/li&gt;
&lt;li&gt;faster validation cycles&lt;/li&gt;
&lt;li&gt;safer migration experiments&lt;/li&gt;
&lt;li&gt;better utilization of constrained hardware&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It felt like getting extra machines without buying extra machines.&lt;/p&gt;
&lt;p&gt;For small teams, that is strategic.&lt;/p&gt;
&lt;h2 id=&#34;from-experiment-to-policy&#34;&gt;From experiment to policy&lt;/h2&gt;
&lt;p&gt;By the late 2000s, what began as experimentation became policy in many shops:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;new service proposals evaluated for virtual deployment first&lt;/li&gt;
&lt;li&gt;legacy service retention handled via contained guest strategy&lt;/li&gt;
&lt;li&gt;test/staging environments built as guest clones where possible&lt;/li&gt;
&lt;li&gt;consolidation planned with explicit failure-domain limits&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &amp;ldquo;limit&amp;rdquo; part matters. Over-consolidation creates giant blast radii. We learned to balance efficiency and fault isolation deliberately.&lt;/p&gt;
&lt;h2 id=&#34;linux-host-craftsmanship-still-mattered&#34;&gt;Linux host craftsmanship still mattered&lt;/h2&gt;
&lt;p&gt;Virtualization did not excuse sloppy host administration. It amplified host importance.&lt;/p&gt;
&lt;p&gt;Host failures now impacted multiple services, so we tightened:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;patch discipline with maintenance windows&lt;/li&gt;
&lt;li&gt;storage reliability checks and backups&lt;/li&gt;
&lt;li&gt;monitoring for host + guest layers&lt;/li&gt;
&lt;li&gt;documented restart ordering&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A clean host made virtualization feel magical.
A messy host made virtualization feel cursed.&lt;/p&gt;
&lt;h2 id=&#34;the-migration-connection&#34;&gt;The migration connection&lt;/h2&gt;
&lt;p&gt;Virtualization became a bridge tool in service migrations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;run legacy app in guest while rewriting surrounding systems&lt;/li&gt;
&lt;li&gt;test domain/auth changes against realistic guest snapshots&lt;/li&gt;
&lt;li&gt;stage cutovers with rollback confidence&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This reduced pressure for immediate rewrites and gave teams time to modernize interfaces safely.&lt;/p&gt;
&lt;p&gt;In that sense, virtualization and migration strategy are the same conversation.&lt;/p&gt;
&lt;h2 id=&#34;economic-impact-for-small-teams&#34;&gt;Economic impact for small teams&lt;/h2&gt;
&lt;p&gt;In budget-constrained environments, early virtualization offered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hardware consolidation&lt;/li&gt;
&lt;li&gt;lower power/space overhead&lt;/li&gt;
&lt;li&gt;faster provisioning for test scenarios&lt;/li&gt;
&lt;li&gt;reduced dependency on old physical hardware&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It was not &amp;ldquo;free.&amp;rdquo; It was cheaper than the alternative while improving flexibility.&lt;/p&gt;
&lt;p&gt;That is a rare combination.&lt;/p&gt;
&lt;h2 id=&#34;lessons-that-remain-true-in-2009&#34;&gt;Lessons that remain true in 2009&lt;/h2&gt;
&lt;p&gt;Writing this in 2009, with virtualization now far less exotic, the lessons from that Pentium II era remain useful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;constrain resource overcommit with explicit policy&lt;/li&gt;
&lt;li&gt;protect host health before guest convenience&lt;/li&gt;
&lt;li&gt;treat VM images as operational artifacts&lt;/li&gt;
&lt;li&gt;document recovery paths for host and guests&lt;/li&gt;
&lt;li&gt;use virtualization to reduce migration risk, not to hide poor architecture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The tools got better. The principles did not change.&lt;/p&gt;
&lt;h2 id=&#34;a-practical-starter-checklist&#34;&gt;A practical starter checklist&lt;/h2&gt;
&lt;p&gt;If you are adopting virtualization in a small Linux shop now:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;define host resource reserve policy&lt;/li&gt;
&lt;li&gt;classify guest workloads by criticality&lt;/li&gt;
&lt;li&gt;put VM storage on monitored, backed-up volumes&lt;/li&gt;
&lt;li&gt;script basic guest lifecycle tasks&lt;/li&gt;
&lt;li&gt;test host failure and guest recovery path quarterly&lt;/li&gt;
&lt;li&gt;keep one plain-text architecture map updated&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Do this and virtualization becomes boringly useful, which is exactly what operations should aim for.&lt;/p&gt;
&lt;h2 id=&#34;a-note-on-nostalgia-versus-engineering-value&#34;&gt;A note on nostalgia versus engineering value&lt;/h2&gt;
&lt;p&gt;It is easy to romanticize that era, but the useful takeaway is not nostalgia. The useful takeaway is method: use constraints to sharpen design, use isolation to reduce risk, and use repeatable host hygiene to make experimental technology production-safe.&lt;/p&gt;
&lt;p&gt;If virtualization teaches nothing else, it teaches this: clever demos are optional, operational clarity is mandatory.&lt;/p&gt;
&lt;h2 id=&#34;closing-memory&#34;&gt;Closing memory&lt;/h2&gt;
&lt;p&gt;I still remember that Pentium II tower: beige case, 350 MHz label, fan noise, and the first moment NT desktop appeared inside a Linux window.&lt;/p&gt;
&lt;p&gt;It looked like a trick.&lt;br&gt;
It became a method.&lt;/p&gt;
&lt;p&gt;And for many of us who lived through the 90s-to-internet transition, that method made the next decade possible.&lt;/p&gt;
&lt;p&gt;Related reading:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://turbovision.in6-addr.net/retro/linux/storage-reliability-on-budget-linux-boxes/&#34;&gt;Storage Reliability on Budget Linux Boxes: Lessons from 2000s Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://turbovision.in6-addr.net/retro/linux/migrations/from-mailboxes-to-everything-internet-part-3-identity-file-services-and-mixed-networks/&#34;&gt;From Mailboxes to Everything Internet, Part 3: Identity, File Services, and Mixed Networks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://turbovision.in6-addr.net/retro/linux/migrations/from-mailboxes-to-everything-internet-part-4-perimeter-proxies-and-the-operations-upgrade/&#34;&gt;From Mailboxes to Everything Internet, Part 4: Perimeter, Proxies, and the Operations Upgrade&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Making ISDN Dial-On-Demand Work with SuSE and ipfwadm</title>
      <link>https://turbovision.in6-addr.net/linux/home-router/making-isdn-dial-on-demand-work-with-suse-and-ipfwadm/</link>
      <pubDate>Sun, 14 Feb 1999 00:00:00 +0000</pubDate>
      <lastBuildDate>Sun, 14 Feb 1999 00:00:00 +0000</lastBuildDate>
      <guid>https://turbovision.in6-addr.net/linux/home-router/making-isdn-dial-on-demand-work-with-suse-and-ipfwadm/</guid>
      <description>&lt;p&gt;Now the box is not only booting, it is doing useful work.&lt;/p&gt;
&lt;p&gt;I still have the DSL hardware connected, but the modem LED is still blinking and not stable. So this means: the real life is still ISDN. But because of the T-Online/DSL package I can already use ISDN for internet without this old fear of counting every minute too hard. That makes it much more realistic to really use the Linux router every day and not only as some weekend test setup.&lt;/p&gt;
&lt;p&gt;The main thing I wanted was dial on demand. I do not want the machine online all the time if nobody uses it. Also I do not want manual dial each time. The right thing is: local machine sends packet, router notices it, line goes up, internet works. Later, when no traffic is there anymore, the line goes down again.&lt;/p&gt;
&lt;p&gt;In theory this sounds very logical. In practice it takes me enough evenings.&lt;/p&gt;
&lt;h2 id=&#34;ipppd-and-the-general-direction&#34;&gt;ipppd and the general direction&lt;/h2&gt;
&lt;p&gt;The important parts for me are &lt;code&gt;isdn4linux&lt;/code&gt; and &lt;code&gt;ipppd&lt;/code&gt;. isdn4linux does the low-level ISDN side and &lt;code&gt;ipppd&lt;/code&gt; does the PPP part. After reading enough HOWTO text and trying enough wrong settings I end up with a setup that is at least understandable.&lt;/p&gt;
&lt;p&gt;The main config is not beautiful, but it is mine:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;# /etc/ppp/options.ippp0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;asyncmap 0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;noauth
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;crtscts
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;modem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;lock
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;proxyarp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;defaultroute
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;noipdefault
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;usepeerdns
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;persist
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;idle 300
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;holdoff 5
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;maxfail 3&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The important line for me here is &lt;code&gt;idle 300&lt;/code&gt;. Five minutes. That means if there is no traffic for five minutes, the line goes down again. This feels practical. Long enough that browsing is not annoying. Short enough that the box is not just hanging online forever.&lt;/p&gt;
&lt;p&gt;The actual dial and hangup I bind to &lt;code&gt;isdnctrl&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/usr/sbin/ipppd file /etc/ppp/options.ippp0   connect &lt;span class=&#34;s1&#34;&gt;&amp;#39;/usr/sbin/isdnctrl dial ippp0&amp;#39;&lt;/span&gt;   disconnect &lt;span class=&#34;s1&#34;&gt;&amp;#39;/usr/sbin/isdnctrl hangup ippp0&amp;#39;&lt;/span&gt;   ippp0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;When it works the result is nice. First request is a bit slow. The line comes up. Then surfing feels normal enough for that time. Mail works. IRC works. FTP works if it behaves.&lt;/p&gt;
&lt;h2 id=&#34;the-first-click-effect&#34;&gt;The first-click effect&lt;/h2&gt;
&lt;p&gt;One thing is always there and I think everybody who does this knows it: the first click is special.&lt;/p&gt;
&lt;p&gt;If the line is down and a browser tries to fetch a page, sometimes the first request times out before the line is really ready. Then the user clicks reload and now it works because the link is already up. So I keep telling people in the flat: if the page does not come on first try, just click again, the router is maybe still dialing.&lt;/p&gt;
&lt;p&gt;This sounds stupid, but after a week everybody knows it and then it is just normal life.&lt;/p&gt;
&lt;h2 id=&#34;lan-sharing-with-ipfwadm&#34;&gt;LAN sharing with ipfwadm&lt;/h2&gt;
&lt;p&gt;Kernel 2.0 means &lt;code&gt;ipfwadm&lt;/code&gt;. I already heard about &lt;code&gt;ipchains&lt;/code&gt; and I would like to try it, but on this box I am still on SuSE 5.3 with the 2.0 kernel, so for now it is &lt;code&gt;ipfwadm&lt;/code&gt;. The syntax is not exactly poetry, but it works.&lt;/p&gt;
&lt;p&gt;I use masquerading so the local machines can share the one connection. Internal side is private addresses, router has the public side via ISDN, and packets get masked on the way out.&lt;/p&gt;
&lt;p&gt;Minimal direction looks like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &amp;gt; /proc/sys/net/ipv4/ip_forward
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ipfwadm -F -p deny
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ipfwadm -F -a m -S 192.168.42.0/24 -D 0.0.0.0/0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;That is not the full ruleset, only the basic idea. I keep the real script in &lt;code&gt;/etc/rc.d/&lt;/code&gt; and comment it because otherwise I forget the arguments in one week.&lt;/p&gt;
&lt;p&gt;I like that with Linux 2.0 one can still see the whole moving pieces without too much abstraction. On the other hand, things like FTP quickly show where the limits are.&lt;/p&gt;
&lt;h2 id=&#34;ftp-and-the-small-pain-of-old-protocols&#34;&gt;FTP and the small pain of old protocols&lt;/h2&gt;
&lt;p&gt;Passive FTP is mostly okay. Active FTP is not so nice. With &lt;code&gt;ipfwadm&lt;/code&gt; and this generation there is no good helper for it. So active FTP can fail in stupid ways and then you start thinking maybe you broke the router, but in fact the protocol is just doing protocol things.&lt;/p&gt;
&lt;p&gt;After some evenings I decide the simple rule is this: use passive FTP when possible and do not lose time with trying to make old protocol design look smart.&lt;/p&gt;
&lt;p&gt;That is maybe the first moment where running a router teaches me something bigger than command syntax. Many network problems are not Linux problems. They are protocol problems, software expectations problems, or user expectation problems.&lt;/p&gt;
&lt;h2 id=&#34;t-online-and-general-line-feeling&#34;&gt;T-Online and general line feeling&lt;/h2&gt;
&lt;p&gt;The provider side is okay most of the time. Sometimes the line drops for no reason I can see. Sometimes authentication fails once and works on the next try. I keep notes because otherwise every error starts to feel mystical.&lt;/p&gt;
&lt;p&gt;I think this is one important habit I get from this box: write down what happened. Time, symptom, what I changed, what worked. Without this, three evenings of problem solving become one big confused memory.&lt;/p&gt;
&lt;h2 id=&#34;the-machine-itself&#34;&gt;The machine itself&lt;/h2&gt;
&lt;p&gt;The Cyrix Cx133 is doing fine. I already moved it to 16 MB and this helps a lot. 8 MB was really not much. Right now the box is still in the lean stage. No big extra services. Just enough to route and share the line.&lt;/p&gt;
&lt;p&gt;The Teles card still needs respect. If something goes weird, I first check cable and card state before I start blaming PPP. This saves me time.&lt;/p&gt;
&lt;h2 id=&#34;what-already-feels-good&#34;&gt;What already feels good&lt;/h2&gt;
&lt;p&gt;Even now, before DSL is really there, the setup already feels worth it.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one box for the internet edge&lt;/li&gt;
&lt;li&gt;shared connection for local machines&lt;/li&gt;
&lt;li&gt;line comes up only when needed&lt;/li&gt;
&lt;li&gt;config files which I can read and change&lt;/li&gt;
&lt;li&gt;no dependency on one desktop machine being on&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is already much more &amp;ldquo;real systems&amp;rdquo; feeling than just installing Linux on a PC for trying around.&lt;/p&gt;
&lt;p&gt;I still want more from the box. I want DNS cache. I want maybe a proxy. I want some cleaner way to wake the line from outside. Right now if I am not at home and the line is down, then it is down. That is the next problem I want to solve.&lt;/p&gt;
&lt;p&gt;Also the DSL modem is still blinking. It is almost becoming decoration.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>My First Linux Router: SuSE 5.3, Teles ISDN and the Blinking DSL Modem</title>
      <link>https://turbovision.in6-addr.net/linux/home-router/first-linux-router-suse53-teles-and-the-blinking-dsl-modem/</link>
      <pubDate>Sat, 03 Oct 1998 00:00:00 +0000</pubDate>
      <lastBuildDate>Sat, 03 Oct 1998 00:00:00 +0000</lastBuildDate>
      <guid>https://turbovision.in6-addr.net/linux/home-router/first-linux-router-suse53-teles-and-the-blinking-dsl-modem/</guid>
      <description>&lt;p&gt;I wanted to start with Linux already earlier, but I did not. One reason was VFAT. I had too much DOS and Windows stuff on the disk and I did not want to make a big break just for trying Linux. Now SuSE 5.3 comes with kernel 2.0.35 and VFAT support is there in a way that feels usable for me, so now I finally do it.&lt;/p&gt;
&lt;p&gt;Also I have enough curiosity to break my evenings with this, and enough little money to make bad hardware decisions and then keep them running because there is no budget for the nice version.&lt;/p&gt;
&lt;p&gt;The machine for the router is a Cyrix Cx133. Not a fancy box. Right now it has 8 MB RAM and a 1.2 GB IDE disk. The case looks like every beige case looks. For a router it is enough. It boots. It stays on. It has one job. If I find cheap RAM later I will put it in, but first I want the basic thing working.&lt;/p&gt;
&lt;p&gt;For ISDN I do not buy AVM because I simply cannot. Everybody says AVM is the good stuff and the drivers are nice and all is more easy. Fine. I buy a cheap Teles 16.3 PnP card. It is not the card of dreams, but it is my card and I can pay it. So the project now is not &amp;ldquo;what is best&amp;rdquo;, it is &amp;ldquo;what can be made to work with Teles and a bit stubbornness&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;At the same time there is already the whole T-DSL story from Telekom. This is maybe the funny part: I already subscribe to the DSL package together with T-Online, but the line is not switched yet. They give us the hardware. The DSL modem is there. The splitter is there. Everything is there. I can look at the modem and I can connect it and the LED is blinking and blinking and blinking. But there is no real DSL sync yet. It is like the future is already on the desk, only the exchange in the street does not care.&lt;/p&gt;
&lt;p&gt;The good thing in this package is: I can already use ISDN with the same flatrate model through T-Online until DSL is finally active. That changes everything. If I had to pay every minute like in the older ISDN situation, I would maybe not do such experiments so relaxed. But with this package I can prepare the whole router now, use it now, put the DSL hardware already in place, and then just wait until someday the blinking LED becomes stable.&lt;/p&gt;
&lt;p&gt;This is maybe a bit absurd, but also very german somehow: contract ready, hardware ready, paperwork ready, technology almost ready, and then the actual line activation takes forever.&lt;/p&gt;
&lt;h2 id=&#34;why-i-want-a-real-router-box&#34;&gt;Why I want a real router box&lt;/h2&gt;
&lt;p&gt;I do not want one Windows machine doing the internet and all other machines depending on that. I also do not want manual dial each time. I want a separate machine which is just there and does the gateway work. If it works good, nobody sees it. If it breaks, everybody sees it. This is exactly the kind of thing I like.&lt;/p&gt;
&lt;p&gt;Also I want to learn Linux not only as desktop. Desktop is nice, but for me the interesting thing is always when one machine does a service for other machines. Then it gets serious. Then configuration is not decoration anymore.&lt;/p&gt;
&lt;p&gt;The first setup is simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cyrix Cx133 as the router&lt;/li&gt;
&lt;li&gt;Teles 16.3 for ISDN&lt;/li&gt;
&lt;li&gt;one NE2000 compatible network card for local LAN&lt;/li&gt;
&lt;li&gt;SuSE 5.3&lt;/li&gt;
&lt;li&gt;T-Online account&lt;/li&gt;
&lt;li&gt;DSL hardware already connected, but DSL itself still sleeping somewhere in Telekom land&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The LAN side is &lt;code&gt;eth0&lt;/code&gt;. The ISDN side I will configure through the i4l tools once the login part is really clean.&lt;/p&gt;
&lt;h2 id=&#34;installing-suse-53&#34;&gt;Installing SuSE 5.3&lt;/h2&gt;
&lt;p&gt;SuSE installation feels big for a student machine because there are so many packages and YaST wants to help everywhere. But I must say, for this use case it is really practical. I do not want to compile every tiny thing right now. I want the machine up and then I want to start reading config files.&lt;/p&gt;
&lt;p&gt;The nice thing is that SuSE 5.3 already has what I need for this direction:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kernel 2.0.35&lt;/li&gt;
&lt;li&gt;VFAT support, finally good enough for me to jump in&lt;/li&gt;
&lt;li&gt;isdn4linux pieces&lt;/li&gt;
&lt;li&gt;YaST for basic setup&lt;/li&gt;
&lt;li&gt;normal network tools and PPP stuff&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The first days are not so elegant. I reinstall once because I partition stupidly. Then I configure the network wrong and wonder why nothing routes. Then I realize that reading the docs before midnight is much more productive than changing random options after midnight.&lt;/p&gt;
&lt;p&gt;Still, the feeling is strong: this is possible. The machine is not powerful. The card is not luxury. But Linux is not laughing about the hardware. It takes the hardware seriously and tries to use it.&lt;/p&gt;
&lt;h2 id=&#34;the-teles-card-and-the-small-pain-around-it&#34;&gt;The Teles card and the small pain around it&lt;/h2&gt;
&lt;p&gt;The Teles 16.3 works, but not like a nice toy. It works like something you need to deserve first.&lt;/p&gt;
&lt;p&gt;PnP is not really my friend here. Auto-detection is sometimes correct and sometimes not. I get into the usual dance with IRQ and I/O settings, and because the NE2000 clone is also not exactly a model citizen, I must be careful there are no collisions. When it finally stabilizes, I write down the values because I know I will forget them if I do not.&lt;/p&gt;
&lt;p&gt;The card sits on S0 bus with a passive NT. That setup is physically very small. Short cable is important. At first I use a longer cable because it is just the cable I have on the desk. Then I get strange effects. D-channel sync comes, then some weird instability. I shorten the cable and suddenly the whole thing becomes much less dramatic. From this I learn again the old rule: with communication stuff, physical layer problems are always more stupid than the software problems.&lt;/p&gt;
&lt;p&gt;When the ISDN side starts to work the feeling is really good. No modem noise. No analog nonsense. Digital and clean. I know 64 kbit/s is not much in the abstract, but compared to normal modem life it feels fast enough that one can do real things.&lt;/p&gt;
&lt;h2 id=&#34;the-strange-situation-with-the-dsl-modem&#34;&gt;The strange situation with the DSL modem&lt;/h2&gt;
&lt;p&gt;The modem is already on the desk and it is maybe the best symbol for this whole phase. I already have the new thing. I can touch it. I can cable it. I can power it. But it is not mine yet in the practical sense, because the line in the exchange is not enabled.&lt;/p&gt;
&lt;p&gt;So what happens is: I install the splitter, I connect the modem, I look at the LED, and it blinks. Every day it blinks. It is almost funny. It is like the house has a small promise lamp.&lt;/p&gt;
&lt;p&gt;Because we already have the package, I can connect with ISDN under the same general tariff model and prepare everything. This is really useful. It means the whole router is not a waiting project. It is a live project from day one. The DSL modem is there as a future device, but the machine is already useful now through ISDN.&lt;/p&gt;
&lt;p&gt;This also changes my mood when building it. I am not making a theoretical future router. I am making a real working box. If Telekom ever finishes the outside part, then maybe the uplink can change without rebuilding the whole idea from zero.&lt;/p&gt;
&lt;h2 id=&#34;what-i-have-running-now&#34;&gt;What I have running now&lt;/h2&gt;
&lt;p&gt;At this moment I keep it simple. I am still mostly happy that Linux is on the box and the basic line can come up. The stack is not fancy yet. It is more like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SuSE 5.3&lt;/li&gt;
&lt;li&gt;isdn4linux&lt;/li&gt;
&lt;li&gt;T-Online login&lt;/li&gt;
&lt;li&gt;local Ethernet&lt;/li&gt;
&lt;li&gt;a lot of notes on paper&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I already know I want these things later:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dial on demand&lt;/li&gt;
&lt;li&gt;IP masquerading for the LAN&lt;/li&gt;
&lt;li&gt;maybe DNS cache&lt;/li&gt;
&lt;li&gt;maybe Squid if memory allows it&lt;/li&gt;
&lt;li&gt;and if DSL finally comes, then PPPoE and the same box continues&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I do not know yet which part will be the most annoying. Right now I guess the Teles card. Maybe later I will say PPP is worse. Maybe both.&lt;/p&gt;
&lt;p&gt;For now I am just happy that Linux finally starts for me with a version where VFAT is not a blocker anymore, the cheap ISDN hardware is usable, and the blinking DSL modem already stands on the desk like a small challenge.&lt;/p&gt;
&lt;p&gt;Maybe next I write more when the dial-on-demand part is not so ugly anymore.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
