ฉันจะสร้างการแจกจ่ายแบบกำหนดเองเพื่อใช้งานเว็บเบราว์เซอร์ทั่วไปได้อย่างไร


18

เรากำลังรวบรวมเครื่องที่มีน้ำหนักเบาบางส่วนโดยมีจุดประสงค์ในการแสดงหน้าเว็บเดียวผ่านหน้าจอขนาดใหญ่ ฉันต้องการเครื่องในการบูตที่เบาและเร็วที่สุดและใช้เบราว์เซอร์ (WebKit?) เต็มหน้าจอโหลดหน้าเดียวซึ่งจะควบคุมโดยจาวาสคริปต์แบบไดนามิก ฉันจะใช้หน่วยประมวลผลแบบดูอัลคอร์ Intel D525 กับ GPU ในตัวดังนั้นฉันจึงไม่จำเป็นต้องตั้งค่าไดรเวอร์กราฟิกที่เป็นกรรมสิทธิ์ เมื่อฉันได้รับหนึ่งในเครื่องเหล่านี้ตั้งค่าอย่างถูกต้องฉันควรจะสามารถddฮาร์ดไดรฟ์บนคอมพิวเตอร์ของฉันและจากนั้นทิ้งมันลงในเครื่องใหม่แต่ละเครื่อง

ฉันมีคำถามต่อไปนี้:

  1. ฉันจะสร้าง "การกระจาย" ซึ่งรวมเฉพาะสิ่งที่ฉันต้องการได้อย่างไร ฉันคิดว่าฉันต้องการเคอร์เนล (;]), X และเว็บเบราว์เซอร์บางประเภท แต่ไม่มากเกินไป ฉันสามารถใช้บางสิ่งเช่นเซิร์ฟเวอร์ Ubuntu และเพียงติดตั้ง X Server และหาวิธีให้เครื่องล็อกอินโดยอัตโนมัติเริ่ม X และเริ่มเว็บเบราว์เซอร์ไม่มีคำถามถามหรือไม่ มีหนังสือที่ฉันสามารถอ่านหรือบทความหรืออะไรซักอย่าง?

  2. ฉันจะใช้อะไรกับเว็บเบราว์เซอร์ที่ดีและมีแถบสะท้อนแสง เครื่องเหล่านี้จะไม่ยอมรับการป้อนข้อมูลของผู้ใช้เลย ถ้าฉันต้องการจัดการพวกเขาฉันจะใช้ SSH

คำตอบ:


12

ดิสทริบิวชันส่วนใหญ่มีระบบอำนวยความสะดวกสำหรับการติดตั้งขั้นต่ำ เป็นหลักที่คุณเลือกเฉพาะแพ็คเกจที่คุณต้องการติดตั้งอย่างชัดเจน Debian มีความสามารถนี้และจะเป็นตัวเลือกที่ดีกว่าในสถานการณ์ของคุณมากกว่า Arch Linux ตัวอื่น ๆ ที่เห็นได้ชัด

สถานะการเปิดตัวของ Arch อาจมีความซับซ้อนอย่างต่อเนื่องที่คุณต้องการหลีกเลี่ยง เดเบียนจะให้ฐานที่ง่ายและน้อยที่สุดที่คุณกำลังมองหาและข้อเสนอที่มีความเสถียร มีโพสต์บล็อกเกี่ยวกับการใช้Debian เป็นตู้ที่อาจมีเคล็ดลับที่เป็นประโยชน์

สำหรับเบราว์เซอร์ตามที่beav_35แนะนำไว้Uzblเป็นตัวเลือกที่ดี คำแนะนำของฉันคือVimprobableซึ่งเป็นเบราว์เซอร์ WebKit ที่ใช้สคริปต์ได้มีคีย์บอร์ดเป็นตัวขับเคลื่อนและสามารถควบคุมได้อย่างมีประสิทธิภาพผ่าน SSH

ในฐานะผู้จัดการหน้าต่างฉันแนะนำdwm : ที่น้อยกว่า 2000 SLOC มันมีน้ำหนักเบามากและสามารถกำหนดค่าได้อย่างง่ายดายสำหรับการตั้งค่าประเภทคีออสก์


dwm ดูดีมากสำหรับวัตถุประสงค์นี้และฉันคุ้นเคยกับระบบที่ใช้เดเบียนมากขึ้นดังนั้นฉันอาจจะใช้เดเบียน คุณคิดว่าฉันจะทำให้ระบบปฏิบัติการมีขนาดเล็กแค่ไหน? และฉันจะสร้างการกระจาย Debian ได้อย่างไร?
Naftuli Kay

เมื่อคุณดำเนินการติดตั้งเมื่อคุณไปถึงขั้นตอนการเลือกแพคเกจแทนแล็ปท็อปมาตรฐาน ฯลฯ เลือก "ด้วยตนเอง" และเลือกแพ็คเกจเหล่านั้น (เช่น X) ที่คุณต้องการสำหรับการย่อขั้นต่ำ: เริ่มต้นที่นี่debian.org/CD / netinst / # businesscard-stable
jasonwryan

5

ก่อนอื่นคุณอาจไม่ต้องการประดิษฐ์ล้อใหม่ ... มีการแจกแจงแบบคีออสก์หลายแบบ หนึ่งในนั้นอาจช่วยให้คุณประหยัดงานได้มาก

ประการที่สองหากคุณคุ้นเคยกับ Kickstart บน Fedora และ RHEL (หรือ CentOS หรือ Scientific Linux) คุณสามารถใช้เครื่องมือ Fedora เพื่อสร้างการกระจายของคุณเอง เอกสารเป็นบิตกระจัดกระจาย แต่เริ่มต้นที่นี่


Debian / Ubuntu ที่เทียบเท่า: FAI (การติดตั้งอัตโนมัติเต็มรูปแบบ)
Gilles 'SO- หยุดความชั่วร้าย'

4

เริ่มต้นด้วย distro ที่น้อยที่สุดเช่นArch Linuxจากนั้นติดตั้งแพ็คเกจที่คุณต้องการ สำหรับเว็บเบราเซอร์ที่เรียบง่ายลองUzbl


uzbl ยอดเยี่ยม +1
Naftuli Kay

3

นี่เป็นคำถามที่ค่อนข้างจะเกี่ยวข้องและเนื่องจากโครงการของคุณไม่ชัดเจนว่าคำแนะนำเหล่านี้บางอย่างอาจไม่ถูกต้อง แต่ให้พิจารณาสิ่งที่ต้องประเมิน

  • คุณอาจไม่ต้องการเว็บเบราว์เซอร์บนคอมพิวเตอร์ที่เคยเป็นส่วนหนึ่งของอาร์เรย์การแสดงผล หากคุณพยายามที่จะแสดงหนึ่งหน้าเดียวในหลายหน้าจอโอกาสที่คุณจะต้องการใช้เทคโนโลยีการแสดงผลจำนวนมาก มีหลายรุ่นของ Xorg ที่เชี่ยวชาญในการสร้างอุปกรณ์แสดงผลขนาดใหญ่เพียงจอเดียวจากหลายเครื่อง

  • แม้ว่าคุณจะใช้เซิร์ฟเวอร์ X แยกกันในแต่ละเครื่องคุณสามารถใช้การส่งต่อ X เพื่อส่งข้อมูลการแสดงผลจากคอมพิวเตอร์เครื่องอื่นอย่างน้อยหนึ่งเครื่องดังนั้นเบราว์เซอร์จึงไม่จำเป็นต้องเรียกใช้ภายในเครื่อง

  • คุณจะต้องไม่ใช้ตัวจัดการหน้าต่างเลยและใช้ข้อกำหนดทางเรขาคณิตเพื่อเปิดแอปของคุณแบบเต็มหน้าจอหรือใช้ไทล์ที่กำหนดค่าได้หรือตัวจัดการหน้าต่างกรอบงาน (เช่นawesome) เพื่อจัดการหน้าต่างบนจอ X แต่ละจอ สิ่งเหล่านี้ทำให้ง่ายต่อการเรียงลำดับและควบคุมหน้าต่างเต็มหน้าจอและมีสคริปต์สูง

  • สำหรับเบราว์เซอร์ฉันคิดว่าuzblน่าจะเป็นตัวเลือกที่ชัดเจน

  • นี่อาจเป็นแอปพลิเคชั่นที่ดีสำหรับการบูทเครือข่าย คุณสามารถตั้งค่าเซิร์ฟเวอร์ที่มีเคอร์เนล netbook พร้อมใช้งานผ่าน TFTP และระบบไฟล์ที่ใช้งานผ่าน nfs ลูกค้าของคุณต้องทำคือใช้เน็ตบุ๊กที่มีความสามารถ NIC เพื่อติดต่อเซิร์ฟเวอร์นี้ดาวน์โหลดเคอร์เนลของพวกเขาและไป ไม่มีส่วนเกี่ยวข้องกับฮาร์ดไดรฟ์! และบำรุงรักษาง่าย เครื่องทั้งหมดสามารถบู๊ตอิมเมจเดียวกันได้

  • "distro" ของคุณอาจประกอบด้วยสองสิ่ง 1) ชุดแพ็กเกจและ 2) ชุดไฟล์การกำหนดค่า ชุดแพ็กเกจคือรายการแพ็กเกจที่ต้องติดตั้ง โดยปกติสามารถประกอบในไฟล์ข้อความจากนั้นคุณสามารถใช้ตัวจัดการแพ็คเกจของ distro ส่วนใหญ่เพื่อติดตั้งรายการแพ็กเกจนี้ไปยังเป้าหมาย (ฮาร์ดไดรฟ์หรือไดเรกทอรีที่จะเป็นจุดเชื่อมต่อ nfs ของคุณ) ไฟล์การกำหนดค่าอาจถูกเก็บไว้ในgitหรือระบบควบคุมแหล่งอื่นและมีสคริปต์บางอย่างและสิ่งที่ mods จำเป็นต้องทำกับระบบฐานที่ติดตั้งพร้อมกับชุดแพคเกจ การสร้างระบบใหม่จะกลายเป็น:

    • เมานต์ไดรฟ์หรือไดเรกทอรีเป้าหมาย
    • package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
    • cd /target/path
    • git clone /path/to/repo (หรือเช็คเอาต์รหัสการกำหนดค่าของคุณไปที่รูทระบบ)
    • ติดตั้ง bootloader ถ้าไดรฟ์หรือเพิ่มการกำหนดค่า PXE ถ้า netboot
    • รองเท้า

Distro ที่คุณใช้เป็นฐานควรขึ้นอยู่กับสิ่งที่คุณพอใจที่สุด ฉันจะใช้PLD-Linuxสำหรับตัวเอง แต่อาจแนะนำให้ArchLinuxเป็นระบบที่คล้ายกัน แต่มีเอกสารดีกว่าสำหรับมือใหม่ที่จะทำงานด้วย ไม่มีเหตุผลDebian , FedoraหรือGentooจะไม่ทำงานสำหรับเรื่องนี้


ในการบูทสุทธิ: ฟังดูยอดเยี่ยมและจะทำให้การบำรุงรักษาง่ายขึ้นมาก อย่างไรก็ตามแต่ละเครื่องจำเป็นต้องโหลด URL ที่แตกต่างกันเนื่องจากจะดึงข้อมูลที่ไม่ซ้ำกับเครื่อง คือว่าเป็นไปได้? ทุกอย่างอื่นจะยังคงเหมือนเดิมอย่างเห็นได้ชัดแม้ว่าฉันอาจกำหนดค่าเครื่องแต่ละเครื่องให้ใช้ชื่อผู้ใช้ / รหัสผ่านที่แตกต่างกันสำหรับการรับรองความถูกต้อง HTTP-Basic เป็นวิธีการรักษาความปลอดภัยเล็กน้อย
Naftuli Kay

ใน "คุณอาจไม่จำเป็นต้องมีเว็บเบราว์เซอร์ในคอมพิวเตอร์ทุกเครื่องที่เป็นส่วนหนึ่งของอาร์เรย์การแสดงผล": ฉันคิดว่าฉันต้องการ เครื่องเหล่านี้แต่ละเครื่องจะอยู่ในตำแหน่งที่แตกต่างกันโดยขับหนึ่งจอแสดงผลผ่าน VGA หรือ HDMI แสดงหน้าเว็บเฉพาะสำหรับเครื่องนั้น (แม้ว่าเราจะสามารถให้บริการ URL เดียวซึ่งมีเนื้อหาแตกต่างกันไปตามผู้ใช้ / รหัสผ่าน)
Naftuli Kay

ผู้จัดการหน้าต่าง: ฉันอาจจะเพียงแค่ใช้อย่างใดอย่างหนึ่งที่มีน้ำหนักเบาชอบหรือdwm awesomeฉันจะบอกให้ตัวจัดการหน้าต่างเริ่มต้นแอปพลิเคชันโดยไม่มีแถบชื่อเรื่องในโหมดเต็มหน้าจอได้อย่างไร
Naftuli Kay

สิ่งที่ distro ควรประกอบด้วย: ดังนั้นสิ่งที่ฉันต้องการจริงๆคือการสร้าง repo git เก็บรายการแพ็กเกจและไฟล์การกำหนดค่าแล้วสร้าง ISO อย่างใด ฉันจะได้รับ Debian distro ที่น้อยที่สุดและทำงานจากที่นั่นได้อย่างไร ฉันจะใช้ไฟล์กำหนดค่าเหล่านี้และสร้าง ISO ที่สามารถเบิร์นได้อย่างไร ฉันจะใช้apt-getหรือaptitudeบนเดเบียน
Naftuli Kay

ในการส่งต่อ X: ไม่จำเป็นจริงๆเพราะฉันจะขับหนึ่งจอต่อหนึ่งเครื่อง ฉันอาจจะต้องหาวิธีที่จะทำให้เครื่องมีปัญหาการเชื่อมต่อแบบย้อนกลับ SSH ดังนั้นคอมพิวเตอร์ของฉันจะสามารถเชื่อมต่อกับมันได้ แต่อาจมีวิธีในการทำสิ่งนี้โดยอัตโนมัติ มีวิธีให้คอมพิวเตอร์ A เปิดการเชื่อมต่อ TCP กับคอมพิวเตอร์ B แล้วมีคอมพิวเตอร์ B เชื่อมต่อผ่านการเชื่อมต่อกับคอมพิวเตอร์ A ผ่าน SSH หรือไม่ มิฉะนั้นฉันจะต้องได้รับชื่อ DNS แบบไดนามิกสำหรับเราเตอร์แต่ละตัว: ไม่สนุก / ง่าย
Naftuli Kay

2

Buildroot 2016.05 + มิโดริ

Buildrootเป็นเครื่องมือที่ยอดเยี่ยมในการสร้าง distros น้อยที่สุด:

  • คุณให้.configไฟล์
  • มันดาวน์โหลดและรวบรวมซอฟต์แวร์ที่จำเป็นทั้งหมดและการอ้างอิงและสร้างภาพ

Midoriเบราว์เซอร์ที่ใช้WebKitเรียบง่ายและ Buildroot มีแพ็คเกจ Midori ในตัว

.configไฟล์ที่ใช้: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfig

วิธีสร้างไฟล์ปรับแต่งนั้น:

  1. ติดตาม: วิธีการติดตั้ง X11 บนระบบ Linux Buildroot ของฉันเอง? | Unix & Linux Stack Exchangeเพื่อสร้างภาพด้วย X11
  2. make menuconfig
    1. toolchain
      1. ไลบรารี C
        1. glibc (สำหรับ midori)
    2. แพ็คเกจเป้าหมาย
      1. ไลบรารีกราฟิกและแอปพลิเคชัน
        1. mesa3d
          1. เลือกไดรเวอร์ Gallium และ DRI ทั้งหมดเนื่องจากฉันไม่เข้าใจว่าจำเป็นต้องใช้ไดรเวอร์ตัวใด (สำหรับ OpenGL EGL)
          2. OpenGL EGL (สำหรับ libgtk3)
      2. ห้องสมุด
        1. กราฟิก 1. libgtk3 (สำหรับ midori)

ทำความสะอาดโครงสร้างเนื่องจากเราเปลี่ยน toolchain และสร้างใหม่:

rm -rf output
make BR2_JLEVEL=$(nproc)

รอชั่วโมง จากนั้นตามปกติ:

qemu-system-x86_64 \
    -enable-kvm \
    -M pc \
    -m 512 \
    -kernel output/images/bzImage \
    -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
    -append root=/dev/vda \
    -net nic,model=virtio \
    -net user

และจากภายใน QEMU:

root
startx

และจาก X11 GUI คลิกที่xtermหน้าต่างและเรียกใช้:

midori

ผล:

ป้อนคำอธิบายรูปภาพที่นี่

ขนาดภาพ: 220M! เปรียบเทียบกับ 28M ของระบบ X11 เปล่าวิธีการติดตั้ง X11 บนระบบ Linux Buildroot ของฉันเอง? - Unix และ Linux Stack แลกเปลี่ยน อาจเป็นเพราะการพึ่งพา WebKit + GTK3

ทดสอบกับโฮสต์ Ubuntu 16.04, QEMU 2.5.0

NetSurf

เขียนใน SDL ซึ่งรองรับ fbdev: http://www.netsurf-browser.org/about/sc Screenshots/#framebuffer

fbdev เป็นอินเตอร์เฟสระดับล่างที่เสนอโดยโมดูลเคอร์เนล Linux ที่ไม่ผ่าน X11 (ฉันคิดว่า X11 สามารถเลือกใช้เป็นแบ็กเอนด์) โดยทั่วไปคุณเพิ่งเขียนไปยังหน่วยความจำและจะแสดงบนหน้าจอ

ในการใช้ fbdev บน Ubuntu คุณต้องใช้ TTY (เช่น Ctrl + Alt + F1)

ดังนั้นคุณอาจหลีกเลี่ยงภาพที่เล็กกว่า Midori ได้

Buildroot 2016.05 มีแพ็คเกจnetsurf-buildsystemที่ควรให้ แต่ฉันยังไม่ได้ทดสอบ หากใครบางคนจัดการเพื่อให้มันทำงานโปรดแก้ไขในลิงค์ไปยัง. config, ภาพหน้าจอและขนาดภาพ


1

ฉันได้เขียนสคริปต์ทุบตีเล็กน้อยเมื่อใช้ Arch Linux ISO และสร้าง ISO ใหม่ด้วยอิมเมจรูทที่แก้ไขซึ่งทำการติดตั้งอัตโนมัติทั้งหมด ซึ่งรวมถึงการแบ่งพาร์ติชันรวมถึงการตั้งค่าและกำหนดค่าระบบด้วย Xorg, FVWM และ Chromium ระบบที่ติดตั้งจะเข้าสู่ระบบโดยอัตโนมัติและเริ่ม Chromium เพียงแค่ใส่ ISO ใหม่ลงในแฟลชไดรฟ์ USB แล้วเอนหลัง ;-)

คำเตือน: สคริปต์มีให้ตามที่เป็นอยู่ไม่มีการรับประกัน ฉันไม่ได้ใช้งานมาระยะหนึ่งดังนั้นอาจต้องปรับแต่งที่นี่หรือตรงนั้น แก้ไขตามต้องการ

#!/bin/bash
# Helpful pages:
#
#   * [ArchWiki topic][1] that explains the options of an AIF configuration
#     file.
#
#   * [Status of automated installation][2], a topic in the Arch Linux Forums
#     that contains the original basic install script by *mhertz*.
#
# [1]: https://wiki.archlinux.org/index.php/AIF_Configuration_File
# [2]: https://bbs.archlinux.org/viewtopic.php?id=111925

TMP_DIR=/tmp/arch-install

# Read command line parameters for input and output ISO files.
if [ -z "$1" ]; then
    echo 'No input file specified, aborting.'
    exit 1
elif [ ! -f "$1" ]; then
    echo 'Input file "'$INPUT_ISO'" not found, aborting.'
    exit 1
elif [ -z "$2" ]; then
    echo 'No output file specified, aborting.'
    exit 1
elif [ -f "$2" ]; then
    echo 'Output file "'$OUTPUT_ISO'" already exists, aborting.'
    exit 1
fi

# Determine full paths to input and output ISO files.
INPUT_ISO=$(readlink -f "$1")
OUTPUT_ISO=$(readlink -f "$2")

# Set some variables for convenience.
SOURCE_DIR=$TMP_DIR/source
DEST_DIR=$TMP_DIR/dest
ROOT_DIR=$TMP_DIR/squashfs-root
BOOT_CFG=$DEST_DIR/boot/isolinux/isolinux.cfg

# Extract ISO image and root image.
mkdir -p $SOURCE_DIR
mount -o loop "$INPUT_ISO" $SOURCE_DIR
cp -a $SOURCE_DIR $DEST_DIR
umount $SOURCE_DIR
rmdir $SOURCE_DIR
unsquashfs -d $ROOT_DIR $DEST_DIR/root-image.sqfs
rm $DEST_DIR/root-image.sqfs

# Modify the root image as needed.
cat >> $ROOT_DIR/etc/aif.conf <<EOF
SOURCE=cd
FILE_URL=file:///src/core/pkg
SYNC_URL=http://ftp.tu-chemnitz.de/pub/linux/archlinux/\$repo/os/\$arch
HARDWARECLOCK=UpTC
TIMEZONE=Europe/Vienna
RUNTIME_REPOSITORIES=
RUNTIME_PACKAGES=
TARGET_GROUPS=base
TARGET_PACKAGES_EXCLUDE=
TARGET_PACKAGES='openssh xorg xcursor-vanilla-dmz-aa'

worker_runtime_network () {
    dhcpcd eth0
}

worker_configure_system () {
    prefill_configs
    sed -i '/^HOSTNAME/ s/"myhost"/"arch"/' \$var_TARGET_DIR/etc/rc.conf
    sed -i '/^password/ s/pam_permit\.so/pam_unix.so md5 shadow/' \$var_TARGET_DIR/etc/pam.d/chpasswd
    sed -i '\|Server = http://ftp\.tu-chemnitz\.de/| s/^#//' \$var_TARGET_DIR/etc/pacman.d/mirrorlist
    sed -i '/id:3:initdefault:/ s/^/#/' \$var_TARGET_DIR/etc/inittab
    sed -i '/id:5:initdefault:/ s/^#//' \$var_TARGET_DIR/etc/inittab
    sed -i '\|x:5:respawn:/usr/bin/xdm| s/^/#/' \$var_TARGET_DIR/etc/inittab
    echo "x:5:respawn:/bin/su -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1' myuser" >> \$var_TARGET_DIR/etc/inittab
    sed -i 's/^timeout .*$/timeout 0/' \$var_TARGET_DIR/boot/grub/menu.lst
    cp /etc/rc.local.firstboot \$var_TARGET_DIR/etc/rc.local
}

# Mandatory variables.
GRUB_DEVICE=/dev/sda
PARTITIONS='/dev/sda 20:ext2:+ 512:swap 2500:xfs *:xfs'
BLOCKDATA='/dev/sda1 raw no_label ext2;yes;/boot;target;no_opts;no_label;no_params
/dev/sda2 raw no_label swap;yes;no_mountpoint;target;no_opts;no_label;no_params
/dev/sda3 raw no_label xfs;yes;/;target;no_opts;no_label;no_params
/dev/sda4 raw no_label xfs;yes;/home;target;no_opts;no_label;no_params'
EOF

cat >> $ROOT_DIR/etc/rc.local <<EOF
aif -p automatic -c /etc/aif.conf
reboot
EOF

cat >> $ROOT_DIR/etc/rc.local.firstboot <<EOF
echo root:rootpassword | chpasswd
useradd -m myuser
echo myuser:myuser | chpasswd
cat >> /home/myuser/.xinitrc <<EOT
#!/bin/sh
exec fvwm2
EOT
cat >> /home/myuser/.Xdefaults <<EOT
Xcursor.theme: Vanilla-DMZ-AA
EOT
mkdir -p /home/myuser/.fvwm
cat >> /home/myuser/.fvwm/config <<EOT
DeskTopSize 1x1
DesktopName 0 Main
DestroyFunc StartFunction
AddToFunc StartFunction
 + I Test (Init) Exec exec xsetroot -solid '#303030'
 + I Test (Init) Exec exec chromium 'http://www.stackoverflow.com'
DestroyMenu RootMenu
AddToMenu RootMenu "Menu" Title
 + "Terminal" Exec exec xterm
 + "Browser" Exec exec chromium 'https://www.stackoverflow.com'
 + "" Nop
 + "Log off" Quit
 + "Reboot" Exec exec sudo /sbin/reboot
 + "Shutdown" Exec exec sudo /sbin/halt
OpaqueMoveSize unlimited
Style * ClickToFocus, ResizeOpaque
Style chromium !Title, !Border, !Handles
CursorStyle root top_left_arrow
CursorStyle stroke hand2
IgnoreModifiers L25
Key Help R A -
Key F1 R A -
Key Tab A M -
Key Escape A MC -
Mouse 1 R A -
Mouse 1 T A Move
Mouse 1 FS A Resize
Mouse 1 I A Iconify Off
Mouse 2 FST A -
Mouse 3 R A Menu RootMenu Nop
EOT
mkdir -p /home/myuser/.config/chromium/Default
touch /home/myuser/.config/chromium/First\ Run
cat >> /home/myuser/.config/chromium/Default/Preferences <<EOT
{
   "alternate_error_pages": {
      "enabled": false
   },
   "autofill": {
      "enabled": false
   },
   "browser": {
      "custom_chrome_frame": true,
      "enable_spellchecking": false
   },
   "default_search_provider": {
       "enabled": true,
       "encodings": "UTF-8",
       "icon_url": "about:blank",
       "id": "2",
       "instant_url": "",
       "keyword": "google.com",
       "name": "Google",
       "prepopulate_id": "1",
       "search_url": "{google:baseURL}search?ie={inputEncoding}&q={searchTerms}",
       "suggest_url": ""
   },
   "devtools": {
      "disabled": true
   },
   "dns_prefetching": {
      "enabled": false
   },
   "download": {
      "directory_upgrade": true
   },
   "extensions": {
      "chrome_url_overrides": {
         "bookmarks": [ "chrome-extension://eemcgdkfndhakfknompkggombfjjjeno/main.html" ]
      }
   },
   "geolocation": {
      "default_content_setting": 2
   },
   "google": {
      "services": {
         "username": ""
      }
   },
   "homepage": "https://www.stackoverflow.com",
   "homepage_is_newtabpage": false,
   "intl": {
      "accept_languages": "en",
      "charset_default": "ISO-8859-1"
   },
   "ntp": {
      "pref_version": 3
   },
   "profile": {
      "clear_site_data_on_exit": true,
      "content_settings": {
         "pref_version": 1
      },
      "default_content_settings": {
         "plugins": 1
      },
      "exited_cleanly": true,
      "notifications_default_content_setting": 2,
      "password_manager_enabled": false
   },
   "safebrowsing": {
      "enabled": false
   },
   "search": {
      "suggest_enabled": false
   },
   "tabs": {
      "use_vertical_tabs": false
   },
   "translate": {
      "enabled": false
   }
}
EOT
chown -R myuser:myuser /home/myuser
pacman -Sy
pacman -S --noconfirm pacman
pacman -S --noconfirm fvwm-devel chromium sudo
echo 'myuser arch=NOPASSWD: /sbin/halt,/sbin/reboot' > /etc/sudoers.d/start_stop
chmod 0440 /etc/sudoers.d/start_stop
rm /etc/rc.local
EOF

# Create the new root image.
mksquashfs $TMP_DIR/squashfs-root $TMP_DIR/dest/root-image.sqfs
rm -rf $TMP_DIR/squashfs-root

# Configure the boot loader.
sed -i 's/TIMEOUT 3000/TIMEOUT 100/' $BOOT_CFG
sed -i '/APPEND hd0 0/d' $BOOT_CFG
sed -i 's/archisolabel=[^ ]*/archisolabel=ARCH/' $BOOT_CFG

# Create the new ISO image.
genisoimage -l -R -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
    -no-emul-boot -boot-load-size 4 -boot-info-table -V ARCH \
    -o "$OUTPUT_ISO" $DEST_DIR
rm -rf $TMP_DIR
isohybrid "$OUTPUT_ISO"

0

ระบบเช่นนี้ผมอยากแนะนำให้ลูกสุนัข

ในขณะที่คุณสามารถสร้าง distro โดยใช้ Linux เวอร์ชันใดก็ได้ Puppy ทำให้มันง่ายมากในการสร้างอิมเมจที่สามารถบู๊ตได้เองถูกออกแบบมาให้มีขนาดกะทัดรัดและรองรับระบบไฟล์แบบซ้อนทับที่ยอดเยี่ยม

ฉันควรจะสามารถฮาร์ดไดรฟ์

ไม่ - ฉันขอแนะนำให้สร้างภาพที่สามารถบูตได้ซึ่งคุณสามารถบำรุงรักษาอย่างสมเหตุสมผล - วิธีการที่คุณแนะนำจะกลับมาและกัดคุณ


สิ่งคือฉันจะใช้ระบบปฏิบัติการใน thumb drive ฉันอาจไม่มีดิสก์ไดรฟ์ที่จะติดตั้งระบบปฏิบัติการด้วยซ้ำ
Naftuli Kay

0
  • หลายคนพูดถึง uzbl และฉันเห็นด้วยว่ามันเป็นตัวเลือกที่ดี - แต่คุณอาจพบluakitดีกว่า

  • ดังที่คาเลบกล่าวไว้แล้วคุณไม่ต้องการโปรแกรมจัดการหน้าต่างใด ๆ ต่อไปนี้เป็นตัวอย่างสคริปต์ที่ฉันสร้างขึ้นเพื่อใช้งานเซิร์ฟเวอร์ Xorg น้อยที่สุดโดยใช้เบราว์เซอร์ luakit ที่ขยายใหญ่สุด:

    #!/bin/sh
    XDCMD="xdotool search --class luakit windowsize %3 100% 100%"
    while [ 1 ]
    do
        ( sleep 0.5; $XDCMD || sleep 0.2 && $XDCMD || sleep 5 && $XDCMD ) &
        /usr/bin/luakit $@
    done
    

    มันใช้xdotoolเพื่อขยายหน้าต่างให้ใหญ่ที่สุดหลังจาก luakit เริ่มทำงานแล้ว อาจมีทางออกที่ดีกว่าในการที่แม้ว่า ...

  • สำหรับฐานของระบบดังกล่าวฉันขอแนะนำ Gentoo นั่นไม่เพียงเพราะฉันรู้ดีที่สุด;) แต่ยังเพราะมันใช้วิธีการที่เป็นเอกลักษณ์ในการจัดการตัวเลือกเวลาบิลด์ของซอฟต์แวร์ที่ติดตั้งทั้งหมด ผมหมายถึงธงใช้ เมื่อใช้สิ่งเหล่านี้คุณจะกำหนดชุดคุณสมบัติ / ไลบรารี / มาตรฐานที่ใช้โดยโปรแกรมทั้งหมดที่สนับสนุนเช่นถ้าคุณต้องการให้โปรแกรมของคุณใช้ ALSA และไม่ต้องการแบ็กเอนด์เสียงเพิ่มเติมเช่น esd, jack หรือ pulseaudio คุณ ใส่alsa -jack -esd -pulseaudioในธง USE ของคุณ หลังจากนั้นซอฟต์แวร์แต่ละชิ้นที่คุณสร้างขึ้นสามารถทำได้ใช้แบ็กเอนด์เสียงเพิ่มเติมนอกเหนือจาก ALSA จะถูกสร้างขึ้นโดยไม่ได้รับการสนับสนุน เนื่องจากสิ่งนี้เกิดขึ้นที่ระดับการกำหนดค่า / การสร้างคุณจะจบลงด้วยซอฟต์แวร์ที่บางกว่าอย่างเห็นได้ชัด ดังนั้นนี่คือปรัชญาของการสร้างขึ้น (ในขณะที่เคารพต่อการพึ่งพาทั้งหมด) แทนที่จะแยกส่วน (ซึ่งอาจกลายเป็นรถบักกี้และยากต่อการบำรุงรักษา)


0

ฉันจะพูดถึงเรื่องนี้เพราะฉันประหลาดใจไม่มีใครมี

Linux from Scratchเป็นหนังสือ (pdf) ที่จะนำคุณไปสู่การสร้างการแจกจ่าย Linux ของคุณเอง มันอาจเกินความเป็นจริงสำหรับสิ่งที่คุณพยายามจะทำให้สำเร็จ (จริง ๆ แล้วมันเห็นว่าคุณมีเครื่องมือที่คุณต้องการอยู่แล้ว) แต่มันสามารถพิสูจน์ได้ว่าเป็นเครื่องมือที่ทรงคุณค่าในการทำความเข้าใจว่าระบบทำงานอย่างไร มันไม่ยากอย่างนั้นและไม่มีการเขียนโปรแกรมที่เกี่ยวข้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.