Bagaimana saya bisa membangun distribusi khusus untuk menjalankan browser web sederhana?


18

Kami sedang merakit beberapa mesin ringan dengan tujuan untuk menampilkan satu halaman web pada layar besar. Saya membutuhkan mesin untuk boot pada dasarnya ringan dan secepat mungkin dan pada dasarnya menjalankan browser (WebKit?) Di layar penuh, memuat satu halaman yang akan dikendalikan secara dinamis oleh JavaScript. Saya akan menggunakan prosesor dual-core Intel D525 dengan GPU terintegrasi, jadi saya tidak perlu mengatur driver grafis berpemilik. Setelah saya mendapatkan salah satu mesin ini diatur dengan benar, saya seharusnya hanya bisa ke ddhard drive ke komputer saya dan kemudian membuangnya ke setiap mesin baru.

Saya punya pertanyaan berikut:

  1. Bagaimana saya bisa membuat "distribusi" yang hanya mencakup apa yang saya butuhkan? Saya kira saya akan membutuhkan kernel (;]), X, dan semacam browser web, tetapi tidak terlalu banyak. Bisakah saya mengambil sesuatu seperti Ubuntu Server dan cukup menginstal X Server dan menemukan cara agar mesin otomatis masuk, mulai X, dan mulai browser web, tidak ada pertanyaan yang diajukan? Apakah ada buku yang bisa saya baca atau artikel atau sesuatu?

  2. Apa yang dapat saya gunakan untuk peramban web yang bagus dan sederhana yang pada dasarnya menjalankan "Chromium chromeless?" Mesin-mesin ini tidak akan menerima input pengguna sama sekali. Jika saya perlu mengelolanya, saya akan menggunakan SSH.

Jawaban:


12

Banyak distribusi memiliki beberapa fasilitas untuk pemasangan minimal; pada dasarnya di mana Anda memilih secara manual hanya paket-paket yang ingin Anda instal secara eksplisit. Debian memiliki kemampuan ini dan akan menjadi pilihan yang lebih baik, dalam situasi Anda, daripada pesaing minimal lain yang jelas, Arch Linux.

Status rilis bergulir Arch dapat memberikan tingkat kompleksitas berkelanjutan yang ingin Anda hindari. Debian akan memberikan basis yang sederhana dan minimal yang Anda cari plus stabilitas penawaran. Ada posting blog tentang cara menggunakan Debian sebagai kios yang mungkin menawarkan beberapa tips bermanfaat.

Untuk browser, seperti beav_35 menyarankan, Uzbl adalah pilihan yang baik. Rekomendasi saya adalah Vimprobable , peramban WebKit yang dapat digerakkan oleh skrip , menggunakan papan ketik, dan dapat dikendalikan secara efektif melalui SSH.

Sebagai manajer jendela, saya akan merekomendasikan dwm : kurang dari 2000 SLOC, sangat ringan dan dapat dengan mudah dikonfigurasi untuk pengaturan tipe kios.


DWM terlihat hebat untuk tujuan ini, dan saya jauh lebih akrab dengan sistem berbasis Debian, jadi saya mungkin akan menggunakan Debian. Menurut Anda seberapa kecil saya bisa menjalankan OS? Dan bagaimana saya bisa membangun distribusi Debian?
Naftuli Kay

Saat Anda melanjutkan instalasi, ketika Anda mencapai langkah paket pilih, daripada Laptop, Standar, dll, pilih "Manual" dan hanya pilih paket-paket itu (seperti X) yang Anda butuhkan untuk minimium telanjang: mulai di sini debian.org/CD / netinst / # businesscard-stable
jasonwryan

5

Pertama-tama, Anda mungkin tidak ingin menemukan kembali roda ... Ada beberapa distribusi yang berfokus pada kios. Salah satunya mungkin menghemat banyak pekerjaan.

Kedua, jika Anda terbiasa dengan Kickstart di Fedora dan RHEL (atau CentOS atau Scientific Linux), Anda dapat menggunakan alat Fedora untuk membuat putaran sendiri dari salah satu distribusi tersebut. Dokumentasi agak tersebar, tetapi mulai dari sini .


Setara dengan Debian / Ubuntu: FAI (Instalasi Otomatis Penuh)
Gilles 'SO- stop being evil'


3

Ini adalah pertanyaan yang cukup terlibat, dan karena proyek Anda tidak sepenuhnya jelas beberapa saran ini mungkin tidak tepat, tetapi anggap hal-hal itu untuk dievaluasi.

  • Anda mungkin tidak perlu browser web di komputer yang pernah menjadi bagian dari array tampilan. Jika Anda mencoba menampilkan satu halaman tunggal di banyak layar, kemungkinan Anda ingin menggunakan beberapa jenis teknologi tampilan massal. Ada beberapa varian Xorg yang berspesialisasi dalam menghasilkan satu tampilan besar perangkat video pada beberapa mesin.

  • Bahkan jika Anda menggunakan server X terpisah pada setiap mesin, Anda dapat menggunakan penerusan X untuk mengirim data tampilan dari satu atau lebih komputer lain, sehingga browser tetap tidak harus berjalan secara lokal.

  • Anda akan ingin tidak menggunakan window manager sama sekali dan menggunakan spesifikasi geometri untuk meluncurkan layar penuh aplikasi Anda, atau menggunakan tile window atau framework window manager yang dapat dikonfigurasi (seperti awesome) untuk mengelola windows pada setiap tampilan X. Ini membuatnya mudah untuk menyortir dan mengontrol jendela layar penuh dan sangat skrip.

  • Sedangkan untuk browser, saya pikir uzblkemungkinan adalah pilihan yang jelas.

  • Ini mungkin aplikasi yang bagus untuk boot jaringan. Anda dapat mengatur server dengan kernel netbook yang tersedia melalui TFTP dan sistem file yang tersedia melalui nfs. Yang perlu klien Anda lakukan adalah menggunakan NIC yang mampu melakukan netboot untuk menghubungi server ini, unduh kernelnya dan buka. Tidak ada hard drive yang terlibat! Dan perawatannya mudah. Semua mesin berpotensi mem-boot gambar yang sama.

  • "Distro" Anda mungkin harus terdiri dari dua hal. 1) Satu set paket dan 2) satu set file konfigurasi. Set paket adalah daftar paket yang perlu diinstal. Ini biasanya dapat dirakit dalam file teks dan kemudian Anda dapat menggunakan sebagian besar manajer paket distro untuk menginstal daftar paket ini ke target (baik hard drive atau direktori yang akan menjadi titik mount Anda). File-file konfigurasi mungkin harus disimpan di gitatau sistem kontrol sumber lain dan berisi beberapa skrip dan konfigurasi apa pun yang perlu dibuat untuk sistem dasar yang diinstal dengan paket yang ditetapkan. Membangun sistem baru kemudian menjadi:

    • Mount drive atau direktori target
    • package_manager --install-distro --package-set=/path/packagelist.txt --target=/path
    • cd /target/path
    • git clone /path/to/repo (atau dengan demikian checkout kode konfigurasi Anda ke root sistem)
    • Instal bootloader jika drive atau tambahkan konfigurasi PXE jika netboot
    • boot

Distro apa yang Anda gunakan sebagai basis harus bergantung pada apa yang paling nyaman bagi Anda. Saya akan menggunakan PLD-Linux untuk diri saya sendiri, tetapi mungkin merekomendasikan ArchLinux sebagai sistem yang sama tetapi lebih baik untuk pendatang baru. Tidak ada alasan Debian , Fedora , atau Gentoo tidak bekerja untuk ini.


on net booting: kedengarannya LUAR BIASA dan akan membuat segalanya jadi lebih mudah untuk dirawat. Namun, setiap mesin perlu memuat URL yang berbeda, karena mereka akan mengambil informasi yang unik untuk mesin tersebut. Apakah itu bisa dilakukan? Segala sesuatu yang lain akan tetap sama, meskipun saya mungkin mengkonfigurasi setiap mesin untuk menggunakan pengguna / kata sandi yang berbeda untuk otentikasi HTTP-Basic sebagai sedikit alat keamanan.
Naftuli Kay

pada "Anda mungkin tidak memerlukan peramban web di setiap komputer yang merupakan bagian dari array tampilan": Saya pikir saya akan melakukannya, sebenarnya. Masing-masing mesin ini akan berada di lokasi yang berbeda, menggerakkan satu layar melalui VGA atau HDMI, menampilkan halaman web yang unik untuk mesin itu. (walaupun kami dapat menyajikan URL tunggal yang memvariasikan konten pada pengguna / kata sandi).
Naftuli Kay

pada manajer jendela: Saya mungkin hanya menggunakan yang sangat ringan seperti dwmatau awesome. Bagaimana saya bisa memberi tahu manajer jendela untuk memulai aplikasi tanpa bilah judul dalam mode layar penuh?
Naftuli Kay

pada apa distro seharusnya terdiri dari: jadi yang saya perlukan adalah membuat git repo, menyimpan daftar paket dan file konfigurasi, dan kemudian membuat ISO entah bagaimana. Bagaimana cara mendapatkan distro Debian terkecil dan kemudian bekerja dari sana? Bagaimana cara saya mengambil file konfigurasi ini dan membuat ISO yang bisa dibakar? Saya akan menggunakan apt-getatau aptitudedi Debian.
Naftuli Kay

pada penerusan X: seharusnya tidak perlu, karena saya akan mengendarai satu layar per mesin. Saya mungkin harus menemukan cara agar mesin mengeluarkan koneksi SSH terbalik sehingga komputer saya dapat terhubung, tetapi mungkin ada cara untuk mengotomatisasi ini. Apakah ada cara untuk memiliki komputer A membuka koneksi TCP ke komputer B dan kemudian komputer B terhubung melalui koneksi ke komputer A melalui SSH? Kalau tidak, saya harus mendapatkan nama DNS dinamis untuk setiap router: tidak menyenangkan / mudah.
Naftuli Kay

2

Buildroot 2016.05 + Midori

Buildroot adalah alat yang hebat untuk membangun distro minimal:

  • Anda memberinya .configfile
  • itu mengunduh dan mengkompilasi semua perangkat lunak dan dependensi yang diperlukan, dan menghasilkan gambar

Midori browser berbasis WebKit minimalis , dan Buildroot memiliki paket Midori bawaan.

.configfile yang digunakan: https://github.com/cirosantilli/buildroot-configs/blob/32d1174e0bf8d00b92323eebe8901af3f8c389d3/2016.05/qemu_x86_64_x11_midori_defconfig

Cara membuat file konfigurasi itu:

  1. Ikuti: Bagaimana cara menginstal X11 di sistem Linux Buildroot saya sendiri? | Unix & Linux Stack Exchange untuk membuat gambar dengan X11.
  2. make menuconfig
    1. Toolchain
      1. Perpustakaan C.
        1. glibc (untuk midori)
    2. Paket target
      1. Perpustakaan grafis dan aplikasi
        1. mesa3d
          1. pilih semua driver Gallium dan DRI karena saya tidak mengerti yang mana yang diperlukan (untuk OpenGL EGL)
          2. OpenGL EGL (untuk libgtk3)
      2. Perpustakaan
        1. Gambar 1. libgtk3 (untuk midori)

Bersihkan bangunan karena kami mengubah rantai alat dan membangun lagi:

rm -rf output
make BR2_JLEVEL=$(nproc)

Tunggu berjam-jam. Lalu yang biasa:

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

Dan dari dalam QEMU:

root
startx

dan dari GUI X11 klik sebuah xtermjendela dan jalankan:

midori

Hasil:

masukkan deskripsi gambar di sini

Ukuran gambar: 220M! Bandingkan dengan 28M dari sistem X11 telanjang Bagaimana cara menginstal X11 pada sistem Linux Buildroot saya sendiri? - Unix & Linux Stack Exchange . Mungkin karena dependensi WebKit + GTK3.

Diuji pada host Ubuntu 16.04, QEMU 2.5.0.

NetSurf

Ditulis dalam SDL, yang mendukung fbdev: http://www.netsurf-browser.org/about/screenshots/#framebuffer

fbdev adalah antarmuka tingkat rendah yang ditawarkan oleh modul kernel Linux yang tidak melalui X11 (saya pikir X11 secara opsional dapat menggunakannya sebagai backend). Anda pada dasarnya hanya menulis ke memori dan itu muncul di layar.

Untuk menggunakan fbdev di Ubuntu, Anda harus menggunakan TTY (mis. Ctrl + Alt + F1).

Jadi Anda mungkin bisa lolos dengan gambar yang jauh lebih kecil daripada Midori.

Buildroot 2016.05 memiliki paket netsurf-buildsystemyang harus menyediakannya, tetapi saya belum mengujinya. Jika seseorang berhasil menjalankannya, harap edit tautan ke .config, tangkapan layar, dan ukuran gambar.


1

Saya telah menulis skrip bash kecil yang mengambil ISO Arch Linux dan menghasilkan ISO baru dengan image root yang dimodifikasi yang melakukan instalasi otomatis penuh. Ini termasuk mempartisi serta mengatur dan mengkonfigurasi sistem dengan Xorg, FVWM, dan Chromium. Sistem yang terinstal akan masuk secara otomatis dan memulai Chromium. Cukup letakkan ISO baru pada USB flash drive dan sandarkan. ;-)

Penafian: skrip diberikan apa adanya, tidak ada garansi yang diberikan. Saya belum menggunakannya dalam beberapa saat, jadi mungkin perlu tweak di sini atau di sana. Ubah sesuai kebutuhan.

#!/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

Untuk sistem seperti ini, saya akan merekomendasikan Puppy .

Meskipun Anda dapat membuat distro Anda menggunakan versi Linux apa pun, Puppy membuatnya sangat mudah untuk membuat gambar yang dapat di-boot sendiri, dirancang agar ringkas dan memiliki dukungan sistem file overlay yang hebat.

Seharusnya aku bisa menemukan hard drive

Tidak - Saya akan merekomendasikan untuk membangun image yang dapat di-boot yang menurut Anda dapat dipertahankan - pendekatan yang Anda sarankan akan kembali dan menggigit Anda.


Masalahnya, saya akan menjalankan sistem operasi dengan menggunakan thumb drive. Saya bahkan tidak berpotensi memiliki disk drive untuk menginstal OS.
Naftuli Kay

0
  • Beberapa orang menyebutkan uzbl dan saya setuju itu adalah pilihan yang bagus - tetapi Anda mungkin menemukan luakit lebih baik.

  • Seperti Caleb telah disebutkan, Anda tidak benar-benar membutuhkan setiap window manager. Berikut ini contoh skrip yang saya buat untuk menjalankan server Xorg tanpa WM dengan peramban luakit yang dimaksimalkan:

    #!/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
    

    Ia menggunakan xdotool untuk memaksimalkan jendela setelah luakit dimulai. Mungkin ada solusi yang lebih baik untuk itu ...

  • Untuk basis sistem seperti itu, saya pasti akan merekomendasikan Gentoo. Itu bukan hanya karena saya tahu yang terbaik;) tetapi juga karena ia menggunakan pendekatan yang agak unik mengelola secara global opsi waktu pembuatan semua perangkat lunak yang diinstal. Maksud saya flag USE . Dengan menggunakan itu, Anda menentukan serangkaian fitur / pustaka / standar yang digunakan oleh semua program yang mendukungnya - jadi, misalnya, jika Anda ingin program Anda menggunakan ALSA dan tidak memerlukan backend audio tambahan seperti esd, jack atau pulseaudio, Anda letakkan di alsa -jack -esd -pulseaudioantara bendera USE Anda. Setelah itu, setiap perangkat lunak yang Anda bangun bisamenggunakan backend audio tambahan selain ALSA akan dibangun tanpa dukungan untuk itu. Karena ini terjadi pada tingkat konfigurasi / build, Anda berakhir dengan perangkat lunak thiner secara signifikan. Jadi ini adalah filosofi membangun (sambil menghormati semua ketergantungan) alih-alih menelanjangi (yang pada akhirnya bisa menjadi kereta dan sangat sulit dipertahankan).


0

Saya akan menyebutkan ini karena saya terkejut tidak ada orang lain yang memilikinya.

Linux from Scratch adalah buku (pdf) yang menuntun Anda melalui pembuatan distribusi Linux Anda sendiri. Mungkin berlebihan untuk apa yang ingin Anda capai (sebenarnya, itu terlihat karena Anda sudah memiliki alat yang Anda butuhkan), tetapi itu bisa membuktikan menjadi alat yang tak ternilai dalam memahami cara kerja sistem. Ini benar-benar tidak sulit dan tidak ada pemrograman yang terlibat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.